Skip to content

Commit 027294d

Browse files
FalsePatternArminias
authored andcommitted
stop renderlists logic from running at all
1 parent 78fc480 commit 027294d

File tree

3 files changed

+41
-12
lines changed

3 files changed

+41
-12
lines changed

src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,13 @@ private void blockVanillaChunkRendering(int p1, double p2, CallbackInfo ci) {
2929
}
3030
}
3131

32-
@Inject(method = "renderSortedRenderers", at = @At(value = "HEAD"))
33-
public void preRenderSortedRenderers(int startRenderer, int numRenderers, int renderPass, double partialTickTime, CallbackInfoReturnable cir) {
32+
@Inject(method = "renderSortedRenderers",
33+
at = @At(value = "HEAD"),
34+
cancellable = true,
35+
require = 1)
36+
public void preRenderSortedRenderers(int startRenderer, int numRenderers, int renderPass, double partialTickTime, CallbackInfoReturnable<Integer> cir) {
3437
if(Neodymium.isActive()) {
35-
Neodymium.renderer.preRenderSortedRenderers(renderPass, partialTickTime, sortedWorldRenderers);
38+
cir.setReturnValue(Neodymium.renderer.preRenderSortedRenderers(renderPass, partialTickTime, sortedWorldRenderers));
3639
}
3740
}
3841

src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java

+23-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.spongepowered.asm.mixin.injection.At;
1212
import org.spongepowered.asm.mixin.injection.Group;
1313
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.Redirect;
1415
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1516

1617
import com.google.common.collect.Lists;
@@ -124,8 +125,28 @@ private void prePreRenderBlocks1(CallbackInfo ci, int var1, int var2, int var3,
124125
}
125126
}
126127

128+
129+
@Redirect(method = "preRenderBlocks",
130+
at = @At(value = "INVOKE",
131+
target = "Lorg/lwjgl/opengl/GL11;glNewList(II)V"),
132+
require = 1)
133+
private void noNewList(int list, int mode) {
134+
if (!Neodymium.isActive()) {
135+
GL11.glNewList(list, mode);
136+
}
137+
}
138+
139+
@Redirect(method = "postRenderBlocks",
140+
at = @At(value = "INVOKE",
141+
target = "Lorg/lwjgl/opengl/GL11;glEndList()V"),
142+
require = 1)
143+
private void noEndList() {
144+
if (!Neodymium.isActive())
145+
GL11.glEndList();
146+
}
147+
127148
/*@Inject(method = "postRenderBlocks", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()I"))
128-
private void prePostRenderBlocks(int pass, EntityLiving entity, CallbackInfo ci) {
149+
private void prePostRenderBlocks(int pass, EntityLivingBase entity, CallbackInfo ci) {
129150
/*if(Neodymium.isActive()) {
130151
if(nd$chunkMeshes != null) {
131152
if(nd$chunkMeshes.get(pass) == null) {
@@ -263,4 +284,4 @@ public void updateRendererSort()
263284
}
264285
postUpdateRenderer(true);
265286
}
266-
}
287+
}

src/main/java/makamys/neodymium/renderer/NeoRenderer.java

+12-7
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,10 @@ public NeoRenderer(World world){
104104

105105
Vector4f transformedOrigin = new Vector4f();
106106

107-
public void preRenderSortedRenderers(int renderPass, double alpha, WorldRenderer[] sortedWorldRenderers) {
108-
if(hasInited) {
109-
if(renderPass == 0) {
107+
public int preRenderSortedRenderers(int renderPass, double alpha, WorldRenderer[] sortedWorldRenderers) {
108+
int rendered = 0;
109+
if (hasInited) {
110+
if (renderPass == 0) {
110111
renderedMeshes = 0;
111112
renderedQuads = 0;
112113

@@ -149,11 +150,12 @@ public void preRenderSortedRenderers(int renderPass, double alpha, WorldRenderer
149150
if(rendererActive && renderWorld) {
150151
Minecraft.getMinecraft().entityRenderer.enableLightmap(alpha);
151152

152-
render(renderPass, alpha);
153+
rendered += render(renderPass, alpha);
153154

154155
Minecraft.getMinecraft().entityRenderer.disableLightmap(alpha);
155156
}
156157
}
158+
return rendered;
157159
}
158160

159161
public void onRenderTickEnd() {
@@ -285,10 +287,10 @@ private void handleKeyboard() {
285287
Matrix4f modelViewMatrixInv = new Matrix4f();
286288
Matrix4f projMatrix = new Matrix4f();
287289

288-
private void render(int pass, double alpha) {
290+
private int render(int pass, double alpha) {
289291
int shader = getShaderProgram(pass);
290292

291-
if(shader == 0) return;
293+
if(shader == 0) return 0;
292294

293295
glBindVertexArray(VAO);
294296
glUseProgram(shader);
@@ -301,10 +303,12 @@ private void render(int pass, double alpha) {
301303
int u_renderOffset = glGetUniformLocation(getShaderProgram(pass), "renderOffset");
302304

303305
int oldLimit = piFirst[pass].limit();
304-
306+
307+
int rendered = 0;
305308
int order = pass == 0 ? 1 : -1;
306309
for(int regionI = order == 1 ? 0 : loadedRegionsList.size() - 1; regionI >= 0 && regionI < loadedRegionsList.size(); regionI += order) {
307310
NeoRegion.RenderData region = loadedRegionsList.get(regionI).getRenderData();
311+
rendered += region.batchLimit[pass] - region.batchFirst[pass];
308312
Util.setPositionAndLimit(piFirst[pass], region.batchFirst[pass], region.batchLimit[pass]);
309313
Util.setPositionAndLimit(piCount[pass], region.batchFirst[pass], region.batchLimit[pass]);
310314

@@ -320,6 +324,7 @@ private void render(int pass, double alpha) {
320324

321325
glBindVertexArray(0);
322326
glUseProgram(0);
327+
return rendered;
323328
}
324329

325330
private void updateGLValues() {

0 commit comments

Comments
 (0)