Improve experimental threaded chunk compiler.

master
mckuhei 2 years ago
parent 1bd0475e49
commit 3ac13547cd

@ -36,6 +36,8 @@ public class ChunkBatcher implements Runnable {
WorldRenderer renderer = todo.poll();
if(renderer == null) return;
renderer.updateRenderer(true);
// System.out.println(todo.size());
// System.out.println(renderer);
}
}

@ -570,7 +570,7 @@ public class RenderGlobal implements IWorldAccess
var14.setPosition(x, var13, z);
if (!var15 && var14.needsUpdate)
{
{ // WTF this is a unreachable code.
this.worldRenderersToUpdate.add(var14);
}
}
@ -593,6 +593,7 @@ public class RenderGlobal implements IWorldAccess
if (var6.needsUpdate && !this.worldRenderersToUpdate.contains(var6))
{
this.worldRenderersToUpdate.add(var6);
var6.addedToQueue = false;
}
}
@ -627,6 +628,15 @@ public class RenderGlobal implements IWorldAccess
Arrays.sort(this.sortedWorldRenderers, new EntitySorter(par1EntityLiving));
}
if(Constants.COMPILE_CHUNK_ASYNC) {
for (int i = 0; i < sortedWorldRenderers.length; i++) {
WorldRenderer worldRenderer = sortedWorldRenderers[i];
if(!worldRenderer.isCompiled) {
worldRenderer.compileAllLayers();
}
}
}
RenderHelper.disableStandardItemLighting();
byte var17 = 0;
int var34;
@ -809,11 +819,12 @@ public class RenderGlobal implements IWorldAccess
if (!this.sortedWorldRenderers[var7].skipRenderPass[par3] && this.sortedWorldRenderers[var7].isInFrustum && (!this.occlusionEnabled || this.sortedWorldRenderers[var7].isVisible))
{
int var8 = this.sortedWorldRenderers[var7].getGLCallListForPass(par3);
WorldRenderer worldRenderer = this.sortedWorldRenderers[var7];
int var8 = worldRenderer.getGLCallListForPass(par3);
if (var8 >= 0)
{
this.glRenderLists.add(this.sortedWorldRenderers[var7]);
this.glRenderLists.add(worldRenderer);
++var6;
}
}
@ -1378,6 +1389,7 @@ public class RenderGlobal implements IWorldAccess
RenderSorter var4 = new RenderSorter(par1EntityLiving);
WorldRenderer[] var5 = new WorldRenderer[var3];
ArrayList var6 = null;
if(Constants.COMPILE_CHUNK_ASYNC) worldRenderersToUpdate.sort(new EntitySorter(par1EntityLiving));
int var7 = this.worldRenderersToUpdate.size();
int var8 = 0;
this.theWorld.theProfiler.startSection("nearChunksSearch");
@ -1393,9 +1405,13 @@ public class RenderGlobal implements IWorldAccess
if (var10 != null)
{
if(Constants.COMPILE_CHUNK_ASYNC) {
if(!var10.isCompiled) var10.compileAllLayers();
else chunksToUpdate.add(var10);
this.worldRenderersToUpdate.set(var9, (Object)null);
if(Constants.COMPILE_CHUNK_ASYNC) {
if(!var10.addedToQueue) {
chunksToUpdate.add(var10);
var10.addedToQueue = true;
}
continue;
}
if (!par2)
{
@ -1434,13 +1450,15 @@ public class RenderGlobal implements IWorldAccess
continue;
}
if (var6 == null)
{
var6 = new ArrayList();
if(!Constants.COMPILE_CHUNK_ASYNC) {
if (var6 == null)
{
var6 = new ArrayList();
}
var6.add(var10);
}
++var8;
var6.add(var10);
this.worldRenderersToUpdate.set(var9, (Object)null);
}
}
@ -1728,6 +1746,7 @@ public class RenderGlobal implements IWorldAccess
{
this.worldRenderersToUpdate.add(var20);
var20.markDirty();
var20.addedToQueue = false;
}
}
}

@ -297,12 +297,13 @@ public class Tessellator
/**
* Clears the tessellator state in preparation for new drawing.
*/
private void reset()
public void reset()
{
this.vertexCount = 0;
this.byteBuffer.clear();
this.rawBufferIndex = 0;
this.addedVertices = 0;
this.isDrawing = false;
}
/**
@ -324,8 +325,8 @@ public class Tessellator
}
else
{
this.reset();
this.isDrawing = true;
this.reset();
this.drawMode = par1;
this.hasNormals = false;
this.hasColor = false;

@ -79,7 +79,7 @@ public class WorldRenderer
/** Bytes sent to the GPU */
private int bytesDrawn;
public boolean isCompiled = true;
public boolean isCompiled = true, addedToQueue = false;
public WorldRenderer(World par1World, List par2List, BigInteger par3, int par4, BigInteger par5, int par6)
{
@ -88,7 +88,6 @@ public class WorldRenderer
this.glRenderList = par6;
this.setPosition(par3, par4, par5);
this.needsUpdate = false;
System.out.println("WorldRenderer.WorldRenderer()");
}
/**
@ -183,6 +182,7 @@ public class WorldRenderer
if (!var14)
{
var14 = true;
tessellator.reset();
tessellator.startDrawingQuads();
tessellator.setTranslation((double)(-this.posX.doubleValue()), (double)(-this.posY), (double)(-this.posZ.doubleValue()));
}

Loading…
Cancel
Save