From a81dfbc4ef20a27e4be8702270fc13fa37761a30 Mon Sep 17 00:00:00 2001 From: RainWarrior Date: Thu, 17 Mar 2016 14:10:44 +0300 Subject: [PATCH] Fixed quads that don't need diffuse lighting getting it anyway. --- .../renderer/block/model/BakedQuad.java.patch | 17 +++++++++---- .../model/BakedQuadRetextured.java.patch | 25 +++++++++++++++++++ .../block/model/FaceBakery.java.patch | 8 +++--- .../block/model/ModelBakery.java.patch | 2 +- .../model/pipeline/IVertexConsumer.java | 1 + .../client/model/pipeline/LightUtil.java | 1 + .../model/pipeline/UnpackedBakedQuad.java | 12 ++++++--- .../model/pipeline/VertexBufferConsumer.java | 1 + .../model/pipeline/VertexLighterFlat.java | 14 ++++++++--- .../model/pipeline/VertexTransformer.java | 5 ++++ src/main/resources/forge.exc | 2 +- .../debug/ModelBakeEventDebug.java | 2 +- 12 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuadRetextured.java.patch diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch index 8a1013f885..2348edf932 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch @@ -1,6 +1,6 @@ --- ../src-base/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java +++ ../src-work/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java -@@ -6,15 +6,25 @@ +@@ -6,15 +6,26 @@ import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) @@ -18,21 +18,23 @@ + @Deprecated public BakedQuad(int[] p_i46574_1_, int p_i46574_2_, EnumFacing p_i46574_3_, TextureAtlasSprite p_i46574_4_) { -+ this(p_i46574_1_, p_i46574_2_, p_i46574_3_, p_i46574_4_, net.minecraft.client.renderer.vertex.DefaultVertexFormats.field_176599_b); ++ this(p_i46574_1_, p_i46574_2_, p_i46574_3_, p_i46574_4_, true, net.minecraft.client.renderer.vertex.DefaultVertexFormats.field_176599_b); + } + -+ public BakedQuad(int[] p_i46574_1_, int p_i46574_2_, EnumFacing p_i46574_3_, TextureAtlasSprite p_i46574_4_, net.minecraft.client.renderer.vertex.VertexFormat format) ++ public BakedQuad(int[] p_i46574_1_, int p_i46574_2_, EnumFacing p_i46574_3_, TextureAtlasSprite p_i46574_4_, boolean applyDiffuseLighting, net.minecraft.client.renderer.vertex.VertexFormat format) + { + this.format = format; ++ this.applyDiffuseLighting = applyDiffuseLighting; this.field_178215_a = p_i46574_1_; this.field_178213_b = p_i46574_2_; this.field_178214_c = p_i46574_3_; -@@ -45,4 +55,17 @@ +@@ -45,4 +56,23 @@ { return this.field_178214_c; } + -+ private final net.minecraft.client.renderer.vertex.VertexFormat format; ++ protected final net.minecraft.client.renderer.vertex.VertexFormat format; ++ protected final boolean applyDiffuseLighting; + + @Override + public void pipe(net.minecraftforge.client.model.pipeline.IVertexConsumer consumer) @@ -43,5 +45,10 @@ + public net.minecraft.client.renderer.vertex.VertexFormat getFormat() + { + return format; ++ } ++ ++ public boolean shouldApplyDiffuseLighting() ++ { ++ return applyDiffuseLighting; + } } diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuadRetextured.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuadRetextured.java.patch new file mode 100644 index 0000000000..4c13ace1da --- /dev/null +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuadRetextured.java.patch @@ -0,0 +1,25 @@ +--- ../src-base/minecraft/net/minecraft/client/renderer/block/model/BakedQuadRetextured.java ++++ ../src-work/minecraft/net/minecraft/client/renderer/block/model/BakedQuadRetextured.java +@@ -12,7 +12,7 @@ + + public BakedQuadRetextured(BakedQuad p_i46217_1_, TextureAtlasSprite p_i46217_2_) + { +- super(Arrays.copyOf(p_i46217_1_.func_178209_a(), p_i46217_1_.func_178209_a().length), p_i46217_1_.field_178213_b, FaceBakery.func_178410_a(p_i46217_1_.func_178209_a()), p_i46217_1_.func_187508_a()); ++ super(Arrays.copyOf(p_i46217_1_.func_178209_a(), p_i46217_1_.func_178209_a().length), p_i46217_1_.field_178213_b, FaceBakery.func_178410_a(p_i46217_1_.func_178209_a()), p_i46217_1_.func_187508_a(), p_i46217_1_.applyDiffuseLighting, p_i46217_1_.format); + this.field_178218_d = p_i46217_2_; + this.func_178217_e(); + } +@@ -21,9 +21,10 @@ + { + for (int i = 0; i < 4; ++i) + { +- int j = 7 * i; +- this.field_178215_a[j + 4] = Float.floatToRawIntBits(this.field_178218_d.func_94214_a((double)this.field_187509_d.func_188537_a(Float.intBitsToFloat(this.field_178215_a[j + 4])))); +- this.field_178215_a[j + 4 + 1] = Float.floatToRawIntBits(this.field_178218_d.func_94207_b((double)this.field_187509_d.func_188536_b(Float.intBitsToFloat(this.field_178215_a[j + 4 + 1])))); ++ int j = format.func_181719_f() * i; ++ int uvIndex = format.func_177344_b(0); ++ this.field_178215_a[j + uvIndex] = Float.floatToRawIntBits(this.field_178218_d.func_94214_a((double)this.field_187509_d.func_188537_a(Float.intBitsToFloat(this.field_178215_a[j + uvIndex])))); ++ this.field_178215_a[j + uvIndex + 1] = Float.floatToRawIntBits(this.field_178218_d.func_94207_b((double)this.field_187509_d.func_188536_b(Float.intBitsToFloat(this.field_178215_a[j + uvIndex + 1])))); + } + } + } diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch index 2d771db866..a45204c7eb 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch @@ -19,18 +19,20 @@ } - int[] aint = this.func_188012_a(blockfaceuv, p_178414_4_, p_178414_5_, this.func_178403_a(p_178414_1_, p_178414_2_), p_178414_6_, p_178414_7_, p_178414_9_); -+ int[] aint = this.makeQuadVertexData(blockfaceuv, p_178414_4_, p_178414_5_, this.func_178403_a(p_178414_1_, p_178414_2_), p_178414_6_, p_178414_7_, p_178414_9_); ++ int[] aint = this.makeQuadVertexData(blockfaceuv, p_178414_4_, p_178414_5_, this.func_178403_a(p_178414_1_, p_178414_2_), p_178414_6_, p_178414_7_, false); EnumFacing enumfacing = func_178410_a(aint); if (p_178414_7_ == null) -@@ -63,6 +69,7 @@ +@@ -63,7 +69,8 @@ this.func_178408_a(aint, enumfacing); } +- return new BakedQuad(aint, p_178414_3_.field_178245_c, enumfacing, p_178414_4_); + net.minecraftforge.client.ForgeHooksClient.fillNormal(aint, enumfacing); - return new BakedQuad(aint, p_178414_3_.field_178245_c, enumfacing, p_178414_4_); ++ return new BakedQuad(aint, p_178414_3_.field_178245_c, enumfacing, p_178414_4_, p_178414_9_, net.minecraft.client.renderer.vertex.DefaultVertexFormats.field_176599_b); } + private BlockFaceUV func_188010_a(BlockFaceUV p_188010_1_, EnumFacing p_188010_2_, ModelRotation p_188010_3_) @@ -73,11 +80,16 @@ private int[] func_188012_a(BlockFaceUV p_188012_1_, TextureAtlasSprite p_188012_2_, EnumFacing p_188012_3_, float[] p_188012_4_, ModelRotation p_188012_5_, BlockPartRotation p_188012_6_, boolean p_188012_7_) diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch index 78f75f8215..4f6cd2e15e 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch @@ -132,7 +132,7 @@ + protected BakedQuad makeBakedQuad(BlockPart p_177589_1_, BlockPartFace p_177589_2_, TextureAtlasSprite p_177589_3_, EnumFacing p_177589_4_, net.minecraftforge.client.model.ITransformation p_177589_5_, boolean p_177589_6_) + { -+ return this.field_177607_l.makeBakedQuad(p_177589_1_.field_178241_a, p_177589_1_.field_178239_b, p_177589_2_, p_177589_3_, p_177589_4_, p_177589_5_, p_177589_1_.field_178237_d, p_177589_6_, false); ++ return this.field_177607_l.makeBakedQuad(p_177589_1_.field_178241_a, p_177589_1_.field_178239_b, p_177589_2_, p_177589_3_, p_177589_4_, p_177589_5_, p_177589_1_.field_178237_d, p_177589_6_, p_177589_1_.field_178238_e); + } + private void func_177597_h() diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java b/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java index f079cb17cd..2adff8964c 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/IVertexConsumer.java @@ -17,6 +17,7 @@ public interface IVertexConsumer void setQuadTint(int tint); void setQuadOrientation(EnumFacing orientation); + void setApplyDiffuseLighting(boolean diffuse); void put(int element, float... data); } diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java b/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java index c6e7bdb740..cbcdb23ccc 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/LightUtil.java @@ -88,6 +88,7 @@ public class LightUtil { consumer.setQuadTint(quad.getTintIndex()); } + consumer.setApplyDiffuseLighting(quad.shouldApplyDiffuseLighting()); //int[] eMap = mapFormats(consumer.getVertexFormat(), DefaultVertexFormats.ITEM); float[] data = new float[4]; VertexFormat formatFrom = consumer.getVertexFormat(); diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java b/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java index 1dc298bd95..cecb447789 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/UnpackedBakedQuad.java @@ -13,9 +13,9 @@ public class UnpackedBakedQuad extends BakedQuad protected final VertexFormat format; protected boolean packed = false; - public UnpackedBakedQuad(float[][][] unpackedData, int tint, EnumFacing orientation, TextureAtlasSprite texture, VertexFormat format) + public UnpackedBakedQuad(float[][][] unpackedData, int tint, EnumFacing orientation, TextureAtlasSprite texture, boolean applyDiffuseLighting, VertexFormat format) { - super(new int[format.getNextOffset() /* / 4 * 4 */], tint, orientation, texture, format); + super(new int[format.getNextOffset() /* / 4 * 4 */], tint, orientation, texture, applyDiffuseLighting, format); this.unpackedData = unpackedData; this.format = format; } @@ -70,6 +70,7 @@ public class UnpackedBakedQuad extends BakedQuad private int tint = -1; private EnumFacing orientation; private TextureAtlasSprite texture; + private boolean applyDiffuseLighting; private int vertices = 0; private int elements = 0; @@ -101,6 +102,11 @@ public class UnpackedBakedQuad extends BakedQuad this.texture = texture; } + public void setApplyDiffuseLighting(boolean diffuse) + { + this.applyDiffuseLighting = diffuse; + } + public void put(int element, float... data) { for(int i = 0; i < 4; i++) @@ -132,7 +138,7 @@ public class UnpackedBakedQuad extends BakedQuad { throw new IllegalStateException("not enough data"); } - return new UnpackedBakedQuad(unpackedData, tint, orientation, texture, format); + return new UnpackedBakedQuad(unpackedData, tint, orientation, texture, applyDiffuseLighting, format); } } } \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java b/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java index f07e1498c5..de40252230 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/VertexBufferConsumer.java @@ -57,4 +57,5 @@ public class VertexBufferConsumer implements IVertexConsumer public void setQuadTint(int tint) {} public void setQuadOrientation(EnumFacing orientation) {} + public void setApplyDiffuseLighting(boolean diffuse) {} } diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java b/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java index 3f5d9132af..8492dda252 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/VertexLighterFlat.java @@ -17,6 +17,7 @@ public class VertexLighterFlat extends QuadGatheringTransformer { protected final BlockInfo blockInfo; private int tint = -1; + private boolean diffuse = true; protected int posIndex = -1; protected int normalIndex = -1; @@ -148,10 +149,13 @@ public class VertexLighterFlat extends QuadGatheringTransformer if(skyLight > lightmap[v][1]) lightmap[v][1] = skyLight; } updateColor(normal[v], color[v], x, y, z, tint, multiplier); - float diffuse = LightUtil.diffuseLight(normal[v][0], normal[v][1], normal[v][2]); - for(int i = 0; i < 3; i++) + if(diffuse) { - color[v][i] *= diffuse; + float d = LightUtil.diffuseLight(normal[v][0], normal[v][1], normal[v][2]); + for(int i = 0; i < 3; i++) + { + color[v][i] *= d; + } } if(EntityRenderer.anaglyphEnable) { @@ -239,6 +243,10 @@ public class VertexLighterFlat extends QuadGatheringTransformer } public void setQuadOrientation(EnumFacing orientation) {} public void setQuadCulled() {} + public void setApplyDiffuseLighting(boolean diffuse) + { + this.diffuse = diffuse; + } public void setWorld(IBlockAccess world) { diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java b/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java index 7a384675d4..1bd4ecda73 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/VertexTransformer.java @@ -27,6 +27,11 @@ public class VertexTransformer implements IVertexConsumer parent.setQuadOrientation(orientation); } + public void setApplyDiffuseLighting(boolean diffuse) + { + parent.setApplyDiffuseLighting(diffuse); + } + public void put(int element, float... data) { parent.put(element, data); diff --git a/src/main/resources/forge.exc b/src/main/resources/forge.exc index 9b6ed04ffb..01b0f0b6f5 100644 --- a/src/main/resources/forge.exc +++ b/src/main/resources/forge.exc @@ -45,5 +45,5 @@ net/minecraft/stats/StatList.mergeStatBases([Lnet/minecraft/stats/StatBase;Lnet/ net/minecraft/item/ItemStack.(Lnet/minecraft/item/Item;IILnet/minecraft/nbt/NBTTagCompound;)V=|p_i1881_1_,p_i1881_2_,p_i1881_3_,capNBT net/minecraft/block/BlockRedstoneWire.canConnectTo(Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/math/BlockPos;)Z=p_176343_0_,p_176343_1_,world,pos -net/minecraft/client/renderer/block/model/BakedQuad.([IILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/client/renderer/vertex/VertexFormat;)V=|p_i46574_1_,p_i46574_2_,p_i46574_3_,p_i46574_4_,format +net/minecraft/client/renderer/block/model/BakedQuad.([IILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;ZLnet/minecraft/client/renderer/vertex/VertexFormat;)V=|p_i46574_1_,p_i46574_2_,p_i46574_3_,p_i46574_4_,applyDiffuseLighting,format net/minecraft/client/renderer/texture/TextureMap.(Ljava/lang/String;Lnet/minecraft/client/renderer/texture/IIconCreator;Z)V=|p_i46100_1_,p_i46100_2_,skipFirst diff --git a/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java b/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java index c15b75b289..ace5cdec09 100644 --- a/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java @@ -245,7 +245,7 @@ public class ModelBakeEventDebug vertexToInts((float)v2.xCoord, (float)v2.yCoord, (float)v2.zCoord, -1, texture, 0, 16), vertexToInts((float)v3.xCoord, (float)v3.yCoord, (float)v3.zCoord, -1, texture, 16, 16), vertexToInts((float)v4.xCoord, (float)v4.yCoord, (float)v4.zCoord, -1, texture, 16, 0) - ), -1, side, texture, DefaultVertexFormats.BLOCK); + ), -1, side, texture, true, DefaultVertexFormats.BLOCK); } @Override