this.elementCount = format.getElementCount(); for( int i = 0; i < this.elementCount; i++ )
@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] ); } } } }
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; } } }
for( int i = 0; i < format.getElementCount(); i++ )
@Override public void put( final int element, final float... data ) { for ( int i = 0; i < 4; i++ ) { if ( i < data.length ) { unpackedData[vertices][element][i] = data[i]; } else { unpackedData[vertices][element][i] = 0; } } elements++; if ( elements == getVertexFormat().getElementCount() ) { vertices++; elements = 0; } }
@Override public void begin() { if ( format != getVertexFormat() ) { throw new RuntimeException( "Bad format, can only be CNB." ); } unpackedData = new float[4][getVertexFormat().getElementCount()][4]; tint = -1; orientation = null; vertices = 0; elements = 0; }
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 int[] getVertexData() { final int[] tmpData = new int[format.getNextOffset() /* / 4 * 4 */]; for ( int v = 0; v < 4; v++ ) { for ( int e = 0; e < format.getElementCount(); e++ ) { LightUtil.pack( getRawPart( v, e ), tmpData, format, v, e ); } } return tmpData; }
if ( element == format.getElementCount() - 1 )
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 public void pipe( final IVertexConsumer consumer ) { final int[] eMap = LightUtil.mapFormats( consumer.getVertexFormat(), format ); consumer.setTexture( sprite ); consumer.setQuadTint( getTintIndex() ); consumer.setQuadOrientation( getFace() ); consumer.setApplyDiffuseLighting( true ); for ( int v = 0; v < 4; v++ ) { for ( int e = 0; e < consumer.getVertexFormat().getElementCount(); e++ ) { if ( eMap[e] != format.getElementCount() ) { consumer.put( e, getRawPart( v, eMap[e] ) ); } else { consumer.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 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); } } }
@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(@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); } } }
private void putVertex(UnpackedBakedQuad.Builder builder, Vec3d normal, double x, double y, double z, float u, float v) { for (int e = 0; e < format.getElementCount(); e++) { switch (format.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 (format.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; } } }
protected void putVertex(UnpackedBakedQuad.Builder builder, Vec3d normal, TextureAtlasSprite sprite, double x, double y, double z, float u, float v, int rgbaColor) { for (int e = 0; e < format.getElementCount(); e++) { switch (format.getElement(e).getUsage()) { case POSITION: builder.put(e, (float) x, (float) y, (float) z, 1.0f); break; case COLOR: float red = ((rgbaColor >> 16) & 0xFF) / 255.0f; float green = ((rgbaColor >> 8) & 0xFF) / 255.0f; float blue = ((rgbaColor) & 0xFF) / 255.0f; builder.put(e, red, green, blue, 1.0f); break; case UV: if (format.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; } } }
private void putVertex(UnpackedBakedQuad.Builder builder, Vec3d normal, double x, double y, double z, float u, float v, TextureAtlasSprite sprite, float color) { for (int e = 0; e < format.getElementCount(); e++) { switch (format.getElement(e).getUsage()) { case POSITION: builder.put(e, (float)x, (float)y, (float)z, 1.0f); break; case COLOR: builder.put(e, color, color, color, 1.0f); break; case UV: if (format.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; } } }
public static void putVertex(UnpackedBakedQuad.Builder builder, Vec3d normal, double x, double y, double z, float u, float v, TextureAtlasSprite sprite) { VertexFormat format = builder.getVertexFormat(); for (int e = 0; e < format.getElementCount(); ++e) { switch (format.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 (format.getElement(e).getIndex() == 0) { u = sprite.getInterpolatedU((double) u); v = sprite.getInterpolatedV((double) v); builder.put(e, u, v, 0.0F, 1.0F); } break; case NORMAL: builder.put(e, (float) normal.x, (float) normal.y, (float) normal.z, 0.0F); break; default: builder.put(e); break; } } } }