From accf71fa863ab01e4227cfa4fe59104ce7c52c48 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Wed, 5 Nov 2014 13:17:42 +0100 Subject: [PATCH] only do the first draw pass for connected grass sides --- .../client/render/RenderBlockAOBase.java | 15 +++++++++++++-- .../render/impl/RenderBlockBetterAlgae.java | 2 +- .../render/impl/RenderBlockBetterCactus.java | 2 +- .../render/impl/RenderBlockBetterGrass.java | 4 ++++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/mods/betterfoliage/client/render/RenderBlockAOBase.java b/src/main/java/mods/betterfoliage/client/render/RenderBlockAOBase.java index aebeedab..94530715 100644 --- a/src/main/java/mods/betterfoliage/client/render/RenderBlockAOBase.java +++ b/src/main/java/mods/betterfoliage/client/render/RenderBlockAOBase.java @@ -45,6 +45,8 @@ public void setGray(float value) { } } + protected int drawPass = 0; + protected double[] uValues = new double[] {0.0, 16.0, 16.0, 0.0}; protected double[] vValues = new double[] {0.0, 0.0, 16.0, 16.0}; @@ -136,7 +138,8 @@ protected void renderWorldBlockBase(int pass, IBlockAccess world, int x, int y, } // render block - setPassCounters(1); + drawPass = 0; + setAOPassCounters(1); setRenderBoundsFromBlock(block); ISimpleBlockRenderingHandler handler = RenderUtils.getRenderingHandler(block.getRenderType()); if (handler != null) { @@ -387,7 +390,7 @@ protected void saveShadingBottomRight(ShadingValues values) { * if the underlying renderer draws overlays * @param value pass counter */ - protected void setPassCounters(int value) { + protected void setAOPassCounters(int value) { aoXPYZPP.passCounter = value; aoXPYZPN.passCounter = value; aoXPYZNP.passCounter = value; @@ -480,4 +483,12 @@ protected void setAOColors(int color) { colorBlueBottomLeft *= blue; colorBlueBottomRight *= blue; } + + @Override + public boolean renderStandardBlock(Block p_147784_1_, int p_147784_2_, int p_147784_3_, int p_147784_4_) { + drawPass++; + return super.renderStandardBlock(p_147784_1_, p_147784_2_, p_147784_3_, p_147784_4_); + } + + } diff --git a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterAlgae.java b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterAlgae.java index 56149d70..5de6bcff 100644 --- a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterAlgae.java +++ b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterAlgae.java @@ -51,7 +51,7 @@ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block b } // render dirt block - setPassCounters(1); + setAOPassCounters(1); setRenderBoundsFromBlock(block); renderStandardBlock(block, x, y, z); diff --git a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterCactus.java b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterCactus.java index 1f4804e9..66b629e6 100644 --- a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterCactus.java +++ b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterCactus.java @@ -46,7 +46,7 @@ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block b } // render cactus center - setPassCounters(1); + setAOPassCounters(1); renderStandardBlock(block, x, y, z); Double3 blockCenter = new Double3(x + 0.5, y + 0.5, z + 0.5); diff --git a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java index 80c5a542..0625261a 100644 --- a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java +++ b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java @@ -110,6 +110,7 @@ public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon Tessellator.instance.setColorOpaque_I(biomeColor); if (enableAO) setAOColors(biomeColor); } + if (connectZN && drawPass > 1) return; super.renderFaceZNeg(block, x, y, z, connectZN ? grassTopIcon : icon); } @@ -119,6 +120,7 @@ public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon Tessellator.instance.setColorOpaque_I(biomeColor); if (enableAO) setAOColors(biomeColor); } + if (connectZP && drawPass > 1) return; super.renderFaceZPos(block, x, y, z, connectZP ? grassTopIcon : icon); } @@ -128,6 +130,7 @@ public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon Tessellator.instance.setColorOpaque_I(biomeColor); if (enableAO) setAOColors(biomeColor); } + if (connectXN && drawPass > 1) return; super.renderFaceXNeg(block, x, y, z, connectXN ? grassTopIcon : icon); } @@ -137,6 +140,7 @@ public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon Tessellator.instance.setColorOpaque_I(biomeColor); if (enableAO) setAOColors(biomeColor); } + if (connectXP && drawPass > 1) return; super.renderFaceXPos(block, x, y, z, connectXP ? grassTopIcon : icon); }