for( BakedQuad quad : original ) VertexFormat format = quad.getFormat(); UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder( format ); VertexRotator rot = new VertexRotator( f2r, quad.getFace() ); rot.setParent( builder ); quad.pipe( rot ); if( quad.getFace() != null ) builder.setQuadOrientation( f2r.rotate( quad.getFace() ) ); BakedQuad packedQuad = new BakedQuad( unpackedQuad.getVertexData(), quad.getTintIndex(), unpackedQuad.getFace(), quad.getSprite(), quad .shouldApplyDiffuseLighting(), quad.getFormat() ); rotated.add( packedQuad );
CachedFormat format = CachedFormat.lookup( quad.getFormat() ); if( quad.hasTintIndex() ) tinter.setTint( Minecraft.getMinecraft().getItemColors().colorMultiplier( textureItem, quad.getTintIndex() ) ); pipeline.enableElement( "tinter" ); quad.pipe( pipeline );
private List<BakedQuad> fixQuadTint( EnumFacing facing, TextureAtlasSprite texDark, TextureAtlasSprite texMedium, TextureAtlasSprite texBright ) { List<BakedQuad> quads = this.baseModel.getQuads( null, facing, 0 ); List<BakedQuad> result = new ArrayList<>( quads.size() ); for( BakedQuad quad : quads ) { int tint; if( quad.getSprite() == texDark ) { tint = 1; } else if( quad.getSprite() == texMedium ) { tint = 2; } else if( quad.getSprite() == texBright ) { tint = 3; } else { result.add( quad ); continue; } BakedQuad newQuad = new BakedQuad( quad.getVertexData(), tint, quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting(), quad .getFormat() ); result.add( newQuad ); } return result; }
BakedQuad quad = iter.next(); if(quad.getTintIndex() == i) { UnpackedBakedQuad.Builder quadBuilder = new UnpackedBakedQuad.Builder(quad.getFormat()); LightUtil.ItemConsumer itemConsumer = new LightUtil.ItemConsumer(quadBuilder); itemConsumer.setAuxColor(r, g, b, a); quad.pipe(itemConsumer); iter.set(quadBuilder.build()); didColorQuads = true;
private void renderQuads(BufferBuilder renderer, List<BakedQuad> quads, int color, ItemStack stack) { boolean flag = color == -1 && !stack.isEmpty(); int i = 0; for (int j = quads.size(); i < j; ++i) { BakedQuad bakedquad = quads.get(i); int k = color; if (flag && bakedquad.hasTintIndex()) { k = Minecraft.getMinecraft().getItemColors().colorMultiplier(stack, bakedquad.getTintIndex()); if (EntityRenderer.anaglyphEnable) { k = TextureUtil.anaglyphColor(k); } k = k | -16777216; } net.minecraftforge.client.model.pipeline.LightUtil.renderQuadColor(renderer, bakedquad, k); } }
if( brightness != null ) VertexFormat newFormat = VertexFormats.getFormatWithLightMap( quad.getFormat() ); UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder( newFormat ); VertexLighterFlat trans = new VertexLighterFlat( Minecraft.getMinecraft().getBlockColors() ) quad.pipe( trans ); builder.setQuadTint( quad.getTintIndex() ); builder.setQuadOrientation( quad.getFace() ); builder.setTexture( quad.getSprite() ); builder.setApplyDiffuseLighting( false ); return builder.build();
/** * Color the quads * @param quads The original quads * @param color The color * @return The colored quads */ private Collection<? extends BakedQuad> color(List<BakedQuad> quads, int color) { List<BakedQuad> offsetQuads = Lists.newArrayListWithExpectedSize(quads.size()); for (BakedQuad quad : quads) { int[] vertexData = Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length); for(int i = 0; i < vertexData.length / 7; i++) { vertexData[i * 7 + 3] = color; } offsetQuads.add(new BakedQuad(vertexData, quad.getTintIndex(), quad.getFace(), quad.getSprite(), false, DefaultVertexFormats.ITEM)); } return offsetQuads; }
public BakedTintedQuad(BakedQuad quad) { super(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length), 1, FaceBakery.getFacingFromVertexData(quad.getVertexData()), quad.getSprite(), quad.shouldApplyDiffuseLighting(), quad.getFormat()); } }
private static float[] tintQuad(BakedQuad bakedquad, IBlockState stateIn, IBlockAccess blockAccessIn, BlockPos posIn, BufferBuilder buffer) { if(bakedquad.hasTintIndex()) { int k = Minecraft.getMinecraft().getBlockColors().colorMultiplier(stateIn, blockAccessIn, posIn, bakedquad.getTintIndex()); if(EntityRenderer.anaglyphEnable) k = TextureUtil.anaglyphColor(k); float f = (float)(k >> 16 & 255) / 255.0F; float f1 = (float)(k >> 8 & 255) / 255.0F; float f2 = (float)(k & 255) / 255.0F; if(bakedquad.shouldApplyDiffuseLighting()) { float diffuse = LightUtil.diffuseLight(bakedquad.getFace()); f *= diffuse; f1 *= diffuse; f2 *= diffuse; } return new float[] { f, f1, f2 }; } else if(bakedquad.shouldApplyDiffuseLighting()) { float diffuse = LightUtil.diffuseLight(bakedquad.getFace()); return new float[] { diffuse, diffuse, diffuse }; } return null; }
private static void renderQuads(final World world, final IBlockState actualState, final BlockPos pos, final List<BakedQuad> quads, final int alpha) { final Tessellator tessellator = Tessellator.getInstance(); final BufferBuilder buffer = tessellator.getBuffer(); for (final BakedQuad quad : quads) { buffer.begin(GL11.GL_QUADS, quad.getFormat()); final int color = quad.hasTintIndex() ? getTint(world, actualState, pos, alpha, quad.getTintIndex()) : (alpha | 0xffffff); LightUtil.renderQuadColor(buffer, quad, color); tessellator.draw(); } }
private static void markQuads(List<BakedQuad> quads) { CompiledChunk compiledChunk = TemporaryStorage.currentCompiledChunk.get(); if (compiledChunk != null) { Set<TextureAtlasSprite> visibleTextures = ((IPatchedCompiledChunk) compiledChunk).getVisibleTextures(); for (BakedQuad quad : quads) { if (quad.getSprite() != null) { visibleTextures.add(quad.getSprite()); } } } else { // Called from non-chunk render thread. Unfortunately, the best we can do // is assume it's only going to be used once: for (BakedQuad quad : quads) { if (quad.getSprite() != null) { ((IPatchedTextureAtlasSprite) quad.getSprite()).markNeedsAnimationUpdate(); } } } } }
public BakedQuad recolorQuad(BakedQuad quad, int color) { int[] vertexData = quad.getVertexData(); for (int i = 0; i < 4; i++) { vertexData[v * i + c] = color; } return quad; }
protected static BakedQuad transform(BakedQuad quad, final TRSRTransformation transform) { UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(DefaultVertexFormats.ITEM); final IVertexConsumer consumer = new VertexTransformer(builder) { @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; } } } }; quad.pipe(consumer); return builder.build(); }
final VertexFormat format ) final int[] vertData = g.getVertexData(); final int wrapAt = vertData.length / 4; b.setQuadOrientation( myFace ); b.setQuadTint( 1 ); b.setTexture( g.getSprite() );
public static void renderQuads( final int alpha, final BufferBuilder renderer, final List<BakedQuad> quads, final World worldObj, final BlockPos blockPos ) { int i = 0; for ( final int j = quads.size(); i < j; ++i ) { final BakedQuad bakedquad = quads.get( i ); final int color = bakedquad.getTintIndex() == -1 ? alpha | 0xffffff : getTint( alpha, bakedquad.getTintIndex(), worldObj, blockPos ); net.minecraftforge.client.model.pipeline.LightUtil.renderQuadColor( renderer, bakedquad, color ); } }
private static TextureAtlasSprite findTexture( TextureAtlasSprite texture, final List<BakedQuad> faceQuads, final EnumFacing myFace ) throws IllegalArgumentException, IllegalAccessException, NullPointerException { for ( final BakedQuad q : faceQuads ) { if ( q.getFace() == myFace ) { texture = findQuadTexture( q, null ); } } return texture; }
/** * Bakes this Quad to a BakedQuad. * * @return The BakedQuad. */ public BakedQuad bake() { int[] packedData = new int[this.format.format.getNextOffset()]; for( int v = 0; v < 4; v++ ) { for( int e = 0; e < this.format.elementCount; e++ ) { LightUtil.pack( this.vertices[v].raw[e], packedData, this.format.format, v, e ); } } return new BakedQuad( packedData, this.tintIndex, this.orientation, this.sprite, this.diffuseLighting, this.format.format ); }