Finish LWJGL fixes
This commit is contained in:
parent
36c3f15017
commit
56e30eaef1
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="CompilerConfiguration">
|
<component name="CompilerConfiguration">
|
||||||
<bytecodeTargetLevel target="17" />
|
<bytecodeTargetLevel target="18" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="corretto-18" project-jdk-type="JavaSDK" />
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="corretto-18" project-jdk-type="JavaSDK" />
|
||||||
</project>
|
</project>
|
|
@ -9,7 +9,7 @@ sourceSets {
|
||||||
main {
|
main {
|
||||||
java {
|
java {
|
||||||
srcDir 'src/main/java'
|
srcDir 'src/main/java'
|
||||||
srcDir 'src/teavm/java'
|
srcDir 'src/lwjgl/java'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ tasks.withType(JavaCompile) {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
//implementation fileTree(dir: './lwjgl-rundir/', include: '*.jar')
|
implementation fileTree(dir: './lwjgl-rundir/', include: '*.jar')
|
||||||
|
|
||||||
teavm(teavm.libs.jso)
|
teavm(teavm.libs.jso)
|
||||||
teavm(teavm.libs.jsoApis)
|
teavm(teavm.libs.jsoApis)
|
||||||
|
|
Binary file not shown.
|
@ -1,9 +1,7 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
import java.nio.IntBuffer;
|
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.util.glu.GLU;
|
|
||||||
|
|
||||||
public class ActiveRenderInfo
|
public class ActiveRenderInfo
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,6 @@ package net.minecraft.src;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class GuiAchievement extends Gui
|
public class GuiAchievement extends Gui
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
|
|
||||||
class GuiCreateFlatWorldListSlot extends GuiSlot
|
class GuiCreateFlatWorldListSlot extends GuiSlot
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
|
|
||||||
class GuiFlatPresetsListSlot extends GuiSlot
|
class GuiFlatPresetsListSlot extends GuiSlot
|
||||||
|
|
|
@ -9,7 +9,6 @@ import net.lax1dude.eaglercraft.EaglercraftRandom;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class GuiIngame extends Gui
|
public class GuiIngame extends Gui
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,6 @@ import java.io.DataOutputStream;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class GuiMerchant extends GuiContainer
|
public class GuiMerchant extends GuiContainer
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,6 @@ package net.minecraft.src;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class GuiStats extends GuiScreen
|
public class GuiStats extends GuiScreen
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,8 +3,6 @@ package net.minecraft.src;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class ItemRenderer
|
public class ItemRenderer
|
||||||
{
|
{
|
||||||
|
|
|
@ -136,7 +136,6 @@ public class Minecraft
|
||||||
private ReloadableResourceManager mcResourceManager;
|
private ReloadableResourceManager mcResourceManager;
|
||||||
private List defaultResourcePacks = new ArrayList<>();
|
private List defaultResourcePacks = new ArrayList<>();
|
||||||
private DefaultResourcePack mcDefaultResourcePack;
|
private DefaultResourcePack mcDefaultResourcePack;
|
||||||
private ResourcePackRepository mcResourcePackRepository;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set to true to keep the game loop running. Set to false by shutdown() to allow the game loop to exit cleanly.
|
* Set to true to keep the game loop running. Set to false by shutdown() to allow the game loop to exit cleanly.
|
||||||
|
@ -2020,11 +2019,6 @@ public class Minecraft
|
||||||
return this.mcResourceManager;
|
return this.mcResourceManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResourcePackRepository getResourcePackRepository()
|
|
||||||
{
|
|
||||||
return this.mcResourcePackRepository;
|
|
||||||
}
|
|
||||||
|
|
||||||
static String getLaunchedVersion(Minecraft par0Minecraft)
|
static String getLaunchedVersion(Minecraft par0Minecraft)
|
||||||
{
|
{
|
||||||
return "1.6.4";
|
return "1.6.4";
|
||||||
|
|
|
@ -2,7 +2,6 @@ package net.minecraft.src;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class RenderBlocks
|
public class RenderBlocks
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
import java.nio.IntBuffer;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
@ -13,7 +12,6 @@ import net.lax1dude.eaglercraft.EaglercraftRandom;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.ARBOcclusionQuery;
|
|
||||||
|
|
||||||
public class RenderGlobal implements IWorldAccess
|
public class RenderGlobal implements IWorldAccess
|
||||||
{
|
{
|
||||||
|
@ -35,6 +33,7 @@ public class RenderGlobal implements IWorldAccess
|
||||||
|
|
||||||
/** OpenGL render lists base */
|
/** OpenGL render lists base */
|
||||||
private int glRenderListBase;
|
private int glRenderListBase;
|
||||||
|
private int[] glOcclusionQuery;
|
||||||
|
|
||||||
/** A reference to the Minecraft object. */
|
/** A reference to the Minecraft object. */
|
||||||
private Minecraft mc;
|
private Minecraft mc;
|
||||||
|
@ -42,9 +41,6 @@ public class RenderGlobal implements IWorldAccess
|
||||||
/** Global render blocks */
|
/** Global render blocks */
|
||||||
private RenderBlocks globalRenderBlocks;
|
private RenderBlocks globalRenderBlocks;
|
||||||
|
|
||||||
/** OpenGL occlusion query base */
|
|
||||||
private IntBuffer glOcclusionQueryBase;
|
|
||||||
|
|
||||||
/** Is occlusion testing enabled */
|
/** Is occlusion testing enabled */
|
||||||
private boolean occlusionEnabled;
|
private boolean occlusionEnabled;
|
||||||
|
|
||||||
|
@ -100,9 +96,6 @@ public class RenderGlobal implements IWorldAccess
|
||||||
/** Count entities hidden */
|
/** Count entities hidden */
|
||||||
private int countEntitiesHidden;
|
private int countEntitiesHidden;
|
||||||
|
|
||||||
/** Occlusion query result */
|
|
||||||
IntBuffer occlusionResult = GLAllocation.createDirectIntBuffer(64);
|
|
||||||
|
|
||||||
/** How many renderers are loaded this frame that try to be rendered */
|
/** How many renderers are loaded this frame that try to be rendered */
|
||||||
private int renderersLoaded;
|
private int renderersLoaded;
|
||||||
|
|
||||||
|
@ -155,25 +148,20 @@ public class RenderGlobal implements IWorldAccess
|
||||||
*/
|
*/
|
||||||
int frustumCheckOffset;
|
int frustumCheckOffset;
|
||||||
|
|
||||||
|
private int occlusionForcedIndexShift = 0;
|
||||||
|
|
||||||
public RenderGlobal(Minecraft par1Minecraft, RenderEngine renderEngine)
|
public RenderGlobal(Minecraft par1Minecraft, RenderEngine renderEngine)
|
||||||
{
|
{
|
||||||
this.mc = par1Minecraft;
|
this.mc = par1Minecraft;
|
||||||
this.renderEngine = renderEngine;
|
this.renderEngine = renderEngine;
|
||||||
byte var2 = 34;
|
byte var2 = 34;
|
||||||
byte var3 = 32;
|
byte var3 = 32;
|
||||||
|
byte var1 = 16;
|
||||||
this.glRenderListBase = GLAllocation.generateDisplayLists(var2 * var2 * var3 * 3);
|
this.glRenderListBase = GLAllocation.generateDisplayLists(var2 * var2 * var3 * 3);
|
||||||
this.occlusionEnabled = OpenGlCapsChecker.checkARBOcclusion();
|
this.glOcclusionQuery = new int[var2 * var2 * var1] ;
|
||||||
|
for(int i = 0; i < glOcclusionQuery.length; ++i) {
|
||||||
if (this.occlusionEnabled)
|
this.glOcclusionQuery[i] = -1;
|
||||||
{
|
|
||||||
this.occlusionResult.clear();
|
|
||||||
this.glOcclusionQueryBase = GLAllocation.createDirectIntBuffer(var2 * var2 * var3);
|
|
||||||
this.glOcclusionQueryBase.clear();
|
|
||||||
this.glOcclusionQueryBase.position(0);
|
|
||||||
this.glOcclusionQueryBase.limit(var2 * var2 * var3);
|
|
||||||
ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.starGLCallList = GLAllocation.generateDisplayLists(3);
|
this.starGLCallList = GLAllocation.generateDisplayLists(3);
|
||||||
EaglerAdapter.glPushMatrix();
|
EaglerAdapter.glPushMatrix();
|
||||||
EaglerAdapter.glNewList(this.starGLCallList, EaglerAdapter.GL_COMPILE);
|
EaglerAdapter.glNewList(this.starGLCallList, EaglerAdapter.GL_COMPILE);
|
||||||
|
@ -355,12 +343,6 @@ public class RenderGlobal implements IWorldAccess
|
||||||
for (int var6 = 0; var6 < this.renderChunksDeep; ++var6)
|
for (int var6 = 0; var6 < this.renderChunksDeep; ++var6)
|
||||||
{
|
{
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = new WorldRenderer(this.theWorld, this.tileEntities, var4 * 16, var5 * 16, var6 * 16, this.glRenderListBase + var2);
|
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = new WorldRenderer(this.theWorld, this.tileEntities, var4 * 16, var5 * 16, var6 * 16, this.glRenderListBase + var2);
|
||||||
|
|
||||||
if (this.occlusionEnabled)
|
|
||||||
{
|
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].glOcclusionQuery = this.glOcclusionQueryBase.get(var3);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isWaitingOnOcclusionQuery = false;
|
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isWaitingOnOcclusionQuery = false;
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isVisible = true;
|
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isVisible = true;
|
||||||
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isInFrustum = true;
|
this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isInFrustum = true;
|
||||||
|
@ -569,6 +551,8 @@ public class RenderGlobal implements IWorldAccess
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long lastOcclusionQuery = 0l;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sorts all renderers based on the passed in entity. Args: entityLiving, renderPass, partialTickTime
|
* Sorts all renderers based on the passed in entity. Args: entityLiving, renderPass, partialTickTime
|
||||||
*/
|
*/
|
||||||
|
@ -607,6 +591,10 @@ public class RenderGlobal implements IWorldAccess
|
||||||
double var13 = par1EntityLivingBase.posY - this.prevSortY;
|
double var13 = par1EntityLivingBase.posY - this.prevSortY;
|
||||||
double var15 = par1EntityLivingBase.posZ - this.prevSortZ;
|
double var15 = par1EntityLivingBase.posZ - this.prevSortZ;
|
||||||
|
|
||||||
|
int fx = MathHelper.floor_double(var33);
|
||||||
|
int fy = MathHelper.floor_double(var7);
|
||||||
|
int fz = MathHelper.floor_double(var9);
|
||||||
|
|
||||||
if (var11 * var11 + var13 * var13 + var15 * var15 > 16.0D)
|
if (var11 * var11 + var13 * var13 + var15 * var15 > 16.0D)
|
||||||
{
|
{
|
||||||
this.prevSortX = par1EntityLivingBase.posX;
|
this.prevSortX = par1EntityLivingBase.posX;
|
||||||
|
@ -616,144 +604,104 @@ public class RenderGlobal implements IWorldAccess
|
||||||
Arrays.sort(this.sortedWorldRenderers, new EntitySorter(par1EntityLivingBase));
|
Arrays.sort(this.sortedWorldRenderers, new EntitySorter(par1EntityLivingBase));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fx = fx >> 4;
|
||||||
|
fy = MathHelper.floor_double(var7 + par1EntityLivingBase.getEyeHeight()) >> 4;
|
||||||
|
fz = fz >> 4;
|
||||||
|
|
||||||
RenderHelper.disableStandardItemLighting();
|
RenderHelper.disableStandardItemLighting();
|
||||||
byte var17 = 0;
|
byte var17 = 0;
|
||||||
int var34;
|
int var34;
|
||||||
|
|
||||||
if (this.occlusionEnabled && this.mc.gameSettings.advancedOpengl && !this.mc.gameSettings.anaglyph && par2 == 0)
|
long queryRate = 50l;
|
||||||
{
|
|
||||||
byte var18 = 0;
|
|
||||||
int var19 = 16;
|
|
||||||
this.checkOcclusionQueryResult(var18, var19);
|
|
||||||
|
|
||||||
for (int var20 = var18; var20 < var19; ++var20)
|
long ct = EaglerAdapter.steadyTimeMillis();
|
||||||
{
|
|
||||||
this.sortedWorldRenderers[var20].isVisible = true;
|
if(par2 == 0) {
|
||||||
|
for (int i = 0; i < this.sortedWorldRenderers.length; ++i) {
|
||||||
|
WorldRenderer c = this.sortedWorldRenderers[i];
|
||||||
|
int ccx = c.posXPlus - fx;
|
||||||
|
int ccy = c.posYPlus - fy;
|
||||||
|
int ccz = c.posZPlus - fz;
|
||||||
|
boolean forced = ccx < 2 && ccx > -2 && ccy < 2 && ccy > -2 && ccz < 2 && ccz > -2;
|
||||||
|
if(forced || c.chunkIndex == -1) {
|
||||||
|
c.isVisible = true;
|
||||||
|
}else if(c.isWaitingOnOcclusionQuery) {
|
||||||
|
int j = glOcclusionQuery[c.chunkIndex];
|
||||||
|
if(EaglerAdapter.glGetQueryResultAvailable(j)) {
|
||||||
|
c.isVisible = EaglerAdapter.glGetQueryResult(j);
|
||||||
|
c.isWaitingOnOcclusionQuery = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var34 = var17 + this.renderSortedRenderers(var18, var19, par2, par3);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
int var35 = var19;
|
|
||||||
var19 *= 2;
|
|
||||||
|
|
||||||
if (var19 > this.sortedWorldRenderers.length)
|
|
||||||
{
|
|
||||||
var19 = this.sortedWorldRenderers.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
|
|
||||||
EaglerAdapter.glDisable(EaglerAdapter.GL_LIGHTING);
|
|
||||||
EaglerAdapter.glDisable(EaglerAdapter.GL_ALPHA_TEST);
|
|
||||||
EaglerAdapter.glDisable(EaglerAdapter.GL_FOG);
|
|
||||||
EaglerAdapter.glColorMask(false, false, false, false);
|
|
||||||
EaglerAdapter.glDepthMask(false);
|
|
||||||
this.checkOcclusionQueryResult(var35, var19);
|
|
||||||
EaglerAdapter.glPushMatrix();
|
|
||||||
float var36 = 0.0F;
|
|
||||||
float var21 = 0.0F;
|
|
||||||
float var22 = 0.0F;
|
|
||||||
|
|
||||||
for (int var23 = var35; var23 < var19; ++var23)
|
|
||||||
{
|
|
||||||
if (this.sortedWorldRenderers[var23].skipAllRenderPasses())
|
|
||||||
{
|
|
||||||
this.sortedWorldRenderers[var23].isInFrustum = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!this.sortedWorldRenderers[var23].isInFrustum)
|
|
||||||
{
|
|
||||||
this.sortedWorldRenderers[var23].isVisible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.sortedWorldRenderers[var23].isInFrustum && !this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery)
|
|
||||||
{
|
|
||||||
float var24 = MathHelper.sqrt_float(this.sortedWorldRenderers[var23].distanceToEntitySquared(par1EntityLivingBase));
|
|
||||||
int var25 = (int)(1.0F + var24 / 128.0F);
|
|
||||||
|
|
||||||
if (this.cloudTickCounter % var25 == var23 % var25)
|
|
||||||
{
|
|
||||||
WorldRenderer var26 = this.sortedWorldRenderers[var23];
|
|
||||||
float var27 = (float)((double)var26.posXMinus - var33);
|
|
||||||
float var28 = (float)((double)var26.posYMinus - var7);
|
|
||||||
float var29 = (float)((double)var26.posZMinus - var9);
|
|
||||||
float var30 = var27 - var36;
|
|
||||||
float var31 = var28 - var21;
|
|
||||||
float var32 = var29 - var22;
|
|
||||||
|
|
||||||
if (var30 != 0.0F || var31 != 0.0F || var32 != 0.0F)
|
|
||||||
{
|
|
||||||
EaglerAdapter.glTranslatef(var30, var31, var32);
|
|
||||||
var36 += var30;
|
|
||||||
var21 += var31;
|
|
||||||
var22 += var32;
|
|
||||||
}
|
|
||||||
|
|
||||||
ARBOcclusionQuery.glBeginQueryARB(ARBOcclusionQuery.GL_SAMPLES_PASSED_ARB, this.sortedWorldRenderers[var23].glOcclusionQuery);
|
|
||||||
this.sortedWorldRenderers[var23].callOcclusionQueryList();
|
|
||||||
ARBOcclusionQuery.glEndQueryARB(ARBOcclusionQuery.GL_SAMPLES_PASSED_ARB);
|
|
||||||
this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
EaglerAdapter.glPopMatrix();
|
|
||||||
|
|
||||||
if (this.mc.gameSettings.anaglyph)
|
|
||||||
{
|
|
||||||
if (EntityRenderer.anaglyphField == 0)
|
|
||||||
{
|
|
||||||
EaglerAdapter.glColorMask(false, true, true, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
EaglerAdapter.glColorMask(true, false, false, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
EaglerAdapter.glColorMask(true, true, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
EaglerAdapter.glDepthMask(true);
|
|
||||||
EaglerAdapter.glEnable(EaglerAdapter.GL_TEXTURE_2D);
|
|
||||||
EaglerAdapter.glEnable(EaglerAdapter.GL_ALPHA_TEST);
|
|
||||||
EaglerAdapter.glEnable(EaglerAdapter.GL_FOG);
|
|
||||||
var34 += this.renderSortedRenderers(var35, var19, par2, par3);
|
|
||||||
}
|
|
||||||
while (var19 < this.sortedWorldRenderers.length);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
var34 = var17 + this.renderSortedRenderers(0, this.sortedWorldRenderers.length, par2, par3);
|
||||||
var34 = var17 + this.renderSortedRenderers(0, this.sortedWorldRenderers.length, par2, par3);
|
|
||||||
|
var7 -= par1EntityLivingBase.getEyeHeight();
|
||||||
|
|
||||||
|
ct = EaglerAdapter.steadyTimeMillis();
|
||||||
|
if(par2 == 0 && ct - lastOcclusionQuery > queryRate) {
|
||||||
|
|
||||||
|
int totalRenderers = this.sortedWorldRenderers.length;
|
||||||
|
int inFrustumCount = 0;
|
||||||
|
for (int i = 0; i < totalRenderers; ++i) {
|
||||||
|
WorldRenderer c = this.sortedWorldRenderers[i];
|
||||||
|
if(c.isInFrustum) {
|
||||||
|
++inFrustumCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int occlusionForceCount = (int)(500l / queryRate);
|
||||||
|
int occlusionForceStep = MathHelper.floor_float(inFrustumCount / (float)occlusionForceCount) + 1;
|
||||||
|
int forceStartIndex = occlusionForcedIndexShift * occlusionForceStep;
|
||||||
|
int forceEndIndex = forceStartIndex + occlusionForceStep;
|
||||||
|
++occlusionForcedIndexShift;
|
||||||
|
if(forceEndIndex + (occlusionForceStep >> 1) > inFrustumCount) {
|
||||||
|
forceEndIndex = inFrustumCount;
|
||||||
|
occlusionForcedIndexShift = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inFrustumCount = 0;
|
||||||
|
lastOcclusionQuery = ct;
|
||||||
|
EaglerAdapter.glEnable(EaglerAdapter.GL_CULL_FACE);
|
||||||
|
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
||||||
|
EaglerAdapter.glColorMask(false, false, false, false);
|
||||||
|
EaglerAdapter.glDepthMask(false);
|
||||||
|
EaglerAdapter.glBindOcclusionBB();
|
||||||
|
for (int i = 0; i < this.sortedWorldRenderers.length; ++i) {
|
||||||
|
WorldRenderer c = this.sortedWorldRenderers[i];
|
||||||
|
int ccx = c.posXPlus - fx;
|
||||||
|
int ccy = c.posYPlus - fy;
|
||||||
|
int ccz = c.posZPlus - fz;
|
||||||
|
boolean shouldTry = c.isInFrustum;
|
||||||
|
if(c.isInFrustum) {
|
||||||
|
++inFrustumCount;
|
||||||
|
if(!shouldTry && inFrustumCount >= forceStartIndex && inFrustumCount < forceEndIndex) {
|
||||||
|
shouldTry = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(shouldTry && !(ccx < 2 && ccx > -2 && ccy < 2 && ccy > -2 && ccz < 2 && ccz > -2)) {
|
||||||
|
if(!c.isWaitingOnOcclusionQuery) {
|
||||||
|
c.isWaitingOnOcclusionQuery = true;
|
||||||
|
int q = glOcclusionQuery[c.chunkIndex];
|
||||||
|
if(q == -1) {
|
||||||
|
q = glOcclusionQuery[c.chunkIndex] = EaglerAdapter.glCreateQuery();
|
||||||
|
}
|
||||||
|
EaglerAdapter.glBeginQuery(q);
|
||||||
|
EaglerAdapter.glDrawOcclusionBB((float)(c.posX - var33), (float)(c.posY - var7), (float)(c.posZ - var9), 16, 16, 16);
|
||||||
|
EaglerAdapter.glEndQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EaglerAdapter.glEndOcclusionBB();
|
||||||
|
EaglerAdapter.glColorMask(true, true, true, true);
|
||||||
|
EaglerAdapter.glDepthMask(true);
|
||||||
|
EaglerAdapter.glEnable(EaglerAdapter.GL_CULL_FACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return var34;
|
return var34;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkOcclusionQueryResult(int par1, int par2)
|
|
||||||
{
|
|
||||||
for (int var3 = par1; var3 < par2; ++var3)
|
|
||||||
{
|
|
||||||
if (this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery)
|
|
||||||
{
|
|
||||||
this.occlusionResult.clear();
|
|
||||||
ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, ARBOcclusionQuery.GL_QUERY_RESULT_AVAILABLE_ARB, this.occlusionResult);
|
|
||||||
|
|
||||||
if (this.occlusionResult.get(0) != 0)
|
|
||||||
{
|
|
||||||
this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false;
|
|
||||||
this.occlusionResult.clear();
|
|
||||||
ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, ARBOcclusionQuery.GL_QUERY_RESULT_ARB, this.occlusionResult);
|
|
||||||
this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the sorted renders for the specified render pass. Args: startRenderer, numRenderers, renderPass,
|
* Renders the sorted renders for the specified render pass. Args: startRenderer, numRenderers, renderPass,
|
||||||
* partialTickTime
|
* partialTickTime
|
||||||
|
|
|
@ -5,7 +5,6 @@ import net.lax1dude.eaglercraft.EaglercraftRandom;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class RenderItem extends Render
|
public class RenderItem extends Render
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,6 @@ package net.minecraft.src;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class RenderSnowball extends Render
|
public class RenderSnowball extends Render
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,6 @@ package net.minecraft.src;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class RenderXPOrb extends Render
|
public class RenderXPOrb extends Render
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,6 @@ import net.lax1dude.eaglercraft.EaglercraftRandom;
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public abstract class RendererLivingEntity extends Render
|
public abstract class RendererLivingEntity extends Render
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,15 +1,10 @@
|
||||||
package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.nio.IntBuffer;
|
import java.nio.IntBuffer;
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import org.lwjgl.BufferUtils;
|
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class ScreenShotHelper
|
public class ScreenShotHelper
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,7 +7,6 @@ import javax.imageio.ImageIO;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class TextureUtil
|
public class TextureUtil
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,6 @@ package net.minecraft.src;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class TileEntityEnderChestRenderer extends TileEntitySpecialRenderer
|
public class TileEntityEnderChestRenderer extends TileEntitySpecialRenderer
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,6 @@ package net.minecraft.src;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.TextureLocation;
|
import net.lax1dude.eaglercraft.TextureLocation;
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import org.lwjgl.opengl.EaglerAdapter;
|
|
||||||
|
|
||||||
public class TileEntitySkullRenderer extends TileEntitySpecialRenderer
|
public class TileEntitySkullRenderer extends TileEntitySpecialRenderer
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue