11package gregtech .client .renderer .scene ;
22
3+ import gregtech .api .util .Mods ;
4+ import gregtech .client .utils .OptiFineHelper ;
5+
36import net .minecraft .client .Minecraft ;
47import net .minecraft .client .renderer .*;
58import net .minecraft .client .renderer .texture .TextureMap ;
1316import net .minecraftforge .client .MinecraftForgeClient ;
1417import net .minecraftforge .fml .relauncher .Side ;
1518import net .minecraftforge .fml .relauncher .SideOnly ;
19+ import net .optifine .shaders .ShadersRender ;
1620
1721import org .lwjgl .opengl .GL11 ;
1822
@@ -34,6 +38,8 @@ private void uploadVBO() {
3438 try { // render block in each layer
3539 for (BlockRenderLayer layer : BlockRenderLayer .values ()) {
3640
41+ OptiFineHelper .preRenderChunkLayer (layer );
42+
3743 renderBlockLayer (layer );
3844
3945 // Get the buffer again
@@ -45,6 +51,8 @@ private void uploadVBO() {
4551 var vbo = VBOS [i ];
4652 if (vbo == null ) vbo = VBOS [i ] = new VertexBuffer (DefaultVertexFormats .BLOCK );
4753 vbo .bufferData (buffer .getByteBuffer ());
54+
55+ OptiFineHelper .postRenderChunkLayer (layer );
4856 }
4957 } finally {
5058 ForgeHooksClient .setRenderLayer (oldRenderLayer );
@@ -79,6 +87,8 @@ protected void drawWorld() {
7987 int pass = layer == BlockRenderLayer .TRANSLUCENT ? 1 : 0 ;
8088 setDefaultPassRenderState (pass );
8189
90+ OptiFineHelper .preRenderChunkLayer (layer );
91+
8292 GlStateManager .pushMatrix ();
8393 {
8494 int i = layer .ordinal ();
@@ -91,6 +101,8 @@ protected void drawWorld() {
91101 vbo .unbindBuffer ();
92102 }
93103 GlStateManager .popMatrix ();
104+
105+ OptiFineHelper .postRenderChunkLayer (layer );
94106 }
95107 ForgeHooksClient .setRenderLayer (oldRenderLayer );
96108
@@ -139,12 +151,16 @@ protected void disableClientStates() {
139151 }
140152
141153 protected void setupArrayPointers () {
142- // 28 == DefaultVertexFormats.BLOCK.getSize();
143- GlStateManager .glVertexPointer (3 , GL11 .GL_FLOAT , 28 , 0 );
144- GlStateManager .glColorPointer (4 , GL11 .GL_UNSIGNED_BYTE , 28 , 12 );
145- GlStateManager .glTexCoordPointer (2 , GL11 .GL_FLOAT , 28 , 16 );
146- OpenGlHelper .setClientActiveTexture (OpenGlHelper .lightmapTexUnit );
147- GlStateManager .glTexCoordPointer (2 , GL11 .GL_SHORT , 28 , 24 );
148- OpenGlHelper .setClientActiveTexture (OpenGlHelper .defaultTexUnit );
154+ if (Mods .Optifine .isModLoaded ()) {
155+ ShadersRender .setupArrayPointersVbo ();
156+ } else {
157+ // 28 == DefaultVertexFormats.BLOCK.getSize();
158+ GlStateManager .glVertexPointer (3 , GL11 .GL_FLOAT , 28 , 0 );
159+ GlStateManager .glColorPointer (4 , GL11 .GL_UNSIGNED_BYTE , 28 , 12 );
160+ GlStateManager .glTexCoordPointer (2 , GL11 .GL_FLOAT , 28 , 16 );
161+ OpenGlHelper .setClientActiveTexture (OpenGlHelper .lightmapTexUnit );
162+ GlStateManager .glTexCoordPointer (2 , GL11 .GL_SHORT , 28 , 24 );
163+ OpenGlHelper .setClientActiveTexture (OpenGlHelper .defaultTexUnit );
164+ }
149165 }
150166}
0 commit comments