switch( element.getUsage() )
@Override protected void processQuad() { VertexFormat format = this.parent.getVertexFormat(); int count = format.getElementCount(); for( int v = 0; v < 4; v++ ) { for( int e = 0; e < count; e++ ) { VertexFormatElement element = format.getElement( e ); if( element.getUsage() == VertexFormatElement.EnumUsage.POSITION ) { this.parent.put( e, this.transform( this.quadData[e][v] ) ); } else if( element.getUsage() == VertexFormatElement.EnumUsage.NORMAL ) { this.parent.put( e, this.transformNormal( this.quadData[e][v] ) ); } else { this.parent.put( e, this.quadData[e][v] ); } } } }
@Override protected void processQuad() { VertexFormat format = this.parent.getVertexFormat(); int count = format.getElementCount(); for( int v = 0; v < 4; v++ ) { for( int e = 0; e < count; e++ ) { VertexFormatElement element = format.getElement( e ); if( element.getUsage() == VertexFormatElement.EnumUsage.POSITION ) { this.parent.put( e, this.transform( this.quadData[e][v], element.getElementCount() ) ); } else if( element.getUsage() == VertexFormatElement.EnumUsage.NORMAL ) { this.parent.put( e, this.transformNormal( this.quadData[e][v] ) ); } else { this.parent.put( e, this.quadData[e][v] ); } } } }
@Override public void put(int element, float... data) { VertexFormatElement formatElement = DefaultVertexFormats.ITEM.getElement(element); switch(formatElement.getUsage()) { case POSITION: { float[] newData = new float[4]; Vector4f vec = new Vector4f(data); transform.getMatrix().transform(vec); vec.get(newData); parent.put(element, newData); break; } default: { parent.put(element, data); break; } } } };
@Override public void put(int element, float... data) { VertexFormatElement formatElement = DefaultVertexFormats.ITEM.getElement(element); switch(formatElement.getUsage()) { case POSITION: { float[] newData = new float[4]; Vector4f vec = new Vector4f(data); transform.getMatrix().transform(vec); vec.get(newData); parent.put(element, newData); break; } default: { parent.put(element, data); break; } } } };
if( element.getUsage() == VertexFormatElement.EnumUsage.NORMAL )
private void putVertex( UnpackedBakedQuad.Builder builder, Vec3d normal, double x, double y, double z, TextureAtlasSprite sprite, float u, float v ) { for( int e = 0; e < this.vertexFormat.getElementCount(); e++ ) { switch( this.vertexFormat.getElement( e ).getUsage() ) { case POSITION: builder.put( e, (float) x, (float) y, (float) z, 1.0f ); break; case COLOR: builder.put( e, 1.0f, 1.0f, 1.0f, 1.0f ); break; case UV: if( this.vertexFormat.getElement( e ).getIndex() == 0 ) { u = sprite.getInterpolatedU( u ); v = sprite.getInterpolatedV( v ); builder.put( e, u, v, 0f, 1f ); break; } case NORMAL: builder.put( e, (float) normal.x, (float) normal.y, (float) normal.z, 0f ); break; default: builder.put( e ); break; } } }
switch( e.getUsage() )
@Override public void put( final int element, final float... data ) { final VertexFormatElement e = getVertexFormat().getElement( element ); if ( e.getUsage() == EnumUsage.UV && e.getIndex() == 1 && e.getType() == EnumType.SHORT && data.length >= 2 && hasLightMap ) { final int lvFromData_sky = (int) ( data[0] / maxLightmap ) & 0xf; final int lvFromData_block = (int) ( data[1] / maxLightmap ) & 0xf; lv = Math.max( lvFromData_sky, lv ); lv = Math.max( lvFromData_block, lv ); } }
private void nextVertexFormatIndex() { ++this.vertexFormatIndex; this.vertexFormatIndex %= this.vertexFormat.getElementCount(); this.vertexFormatElement = this.vertexFormat.getElement(this.vertexFormatIndex); if (this.vertexFormatElement.getUsage() == VertexFormatElement.EnumUsage.PADDING) { this.nextVertexFormatIndex(); } }
@Override public void put( final int element, final float... data ) { final VertexFormatElement e = getVertexFormat().getElement( element ); if ( e.getUsage() == EnumUsage.UV && e.getIndex() != 1 ) { sumU += data[0]; sumV += data[1]; ++vertCount; } }
public void setVertexFormat( VertexFormat format ) { hasLightMap = false; int eCount = format.getElementCount(); for ( int x = 0; x < eCount; x++ ) { VertexFormatElement e = format.getElement( x ); if ( e.getUsage() == EnumUsage.UV && e.getIndex() == 1 && e.getType() == EnumType.SHORT ) { hasLightMap = true; } } this.format = format; }
@Override protected void processQuad() { VertexFormat format = parent.getVertexFormat(); int count = format.getElementCount(); for (int v = 0; v < 4; v++) { for (int e = 0; e < count; e++) { VertexFormatElement element = format.getElement(e); if (element.getUsage() == VertexFormatElement.EnumUsage.POSITION) { parent.put(e, transform(quadData[e][v], element.getElementCount())); } else if (element.getUsage() == VertexFormatElement.EnumUsage.NORMAL) { parent.put(e, transformNormal(quadData[e][v])); } else { parent.put(e, quadData[e][v]); } } } }
private void putVertexData(UnpackedBakedQuad.Builder builder, VertexFormat format, Point3f vert, Vector3f normal, Point2f uv) { for (int e = 0; e < format.getElementCount(); e++) { switch (format.getElement(e).getUsage()) { case POSITION: builder.put(e, vert.x, vert.y, vert.z); break; case COLOR: builder.put(e, 1, 1, 1, 1); break; case UV: builder.put(e, uv.x, uv.y, 0, 1); break; case NORMAL: builder.put(e, normal.x, normal.y, normal.z); break; default: builder.put(e); } } }
private void putVertexData(UnpackedBakedQuad.Builder builder, VertexFormat format, Point3f vert, Vector3f normal, Point2f uv) { for (int e = 0; e < format.getElementCount(); e++) { switch (format.getElement(e).getUsage()) { case POSITION: builder.put(e, vert.x, vert.y, vert.z); break; case COLOR: builder.put(e, 1, 1, 1, 1); break; case UV: builder.put(e, uv.x, uv.y, 0, 1); break; case NORMAL: builder.put(e, normal.x, normal.y, normal.z); break; default: builder.put(e); } } }
private void postRenderChunk() { final List<VertexFormatElement> elements = DefaultVertexFormats.BLOCK.getElements(); for (final VertexFormatElement element : elements) { final VertexFormatElement.EnumUsage usage = element.getUsage(); final int index = element.getIndex(); switch (usage) { case POSITION: GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); break; case UV: OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + index); GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY); OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit); break; case COLOR: GL11.glDisableClientState(GL11.GL_COLOR_ARRAY); GlStateManager.resetColor(); break; } } }
@Override public void put(int element, float... data) { VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage(); // transform normals and position if (usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) { Vector4f vec = new Vector4f(data[0], data[1], data[2], 1f); transformation.transform(vec); data = new float[4]; vec.get(data); } else if (usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) { Vector3f vec = new Vector3f(data); normalTransformation.transform(vec); vec.normalize(); data = new float[4]; vec.get(data); } super.put(element, data); }
@Override public void put(int element, float... data) { VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage(); // transform normals and position if (usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) { Vector4f vec = new Vector4f(data); vec.setW(1.0f); transformation.transform(vec); data = new float[4]; vec.get(data); } else if (usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) { Vector3f vec = new Vector3f(data); normalTransformation.transform(vec); vec.normalize(); data = new float[4]; vec.get(data); } super.put(element, data); }
@Override public void put(int element, float... data) { VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage(); // transform normals and position if (usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) { Vector4f vec = new Vector4f(data); vec.setW(1.0f); transformation.transform(vec); data = new float[4]; vec.get(data); } else if (usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) { Vector3f vec = new Vector3f(data); normalTransformation.transform(vec); vec.normalize(); data = new float[4]; vec.get(data); } super.put(element, data); }
private void putVertexData(@Nonnull Builder builder, @Nonnull Vertex v, float w) { VertexFormat format = builder.getVertexFormat(); for (int e = 0; e < format.getElementCount(); e++) { switch (format.getElement(e).getUsage()) { case POSITION: builder.put(e, (float) v.x(), (float) v.y(), (float) v.z(), 1); break; case COLOR: float d = LightUtil.diffuseLight(v.nx(), v.ny(), v.nz()); builder.put(e, d * color.x, d * color.y, d * color.z, color.w); break; case UV: builder.put(e, tex.getInterpolatedU(v.u() * 16) * w, tex.getInterpolatedV(v.v() * 16) * w, 0, w); break; case NORMAL: builder.put(e, v.nx(), v.ny(), v.nz(), 0); break; default: builder.put(e); } } }