fixes, part 1
This commit is contained in:
parent
08b3c9000e
commit
0154bd9744
lwjgl-rundir/resources/glsl
settings.gradlesrc
lwjgl/java/net/lax1dude/eaglercraft/adapter
main/java/net
@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
// eaglercraft opengl 1.3 emulation
|
// copyright (c) 2020-2023 lax1dude
|
||||||
// copyright (c) 2020 calder young
|
|
||||||
// creative commons BY-NC 4.0
|
// creative commons BY-NC 4.0
|
||||||
|
|
||||||
#line 7
|
#line 7
|
||||||
@ -130,6 +129,8 @@ in vec2 v_texture1;
|
|||||||
|
|
||||||
out vec4 fragColor;
|
out vec4 fragColor;
|
||||||
|
|
||||||
|
#define TEX_MAT3(mat4In) mat3(mat4In[0].xyw,mat4In[1].xyw,mat4In[3].xyw)
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
#ifdef CC_a_color
|
#ifdef CC_a_color
|
||||||
vec4 color = colorUniform * v_color;
|
vec4 color = colorUniform * v_color;
|
||||||
@ -147,9 +148,7 @@ void main(){
|
|||||||
texPos.y = dot(texSrc[textureGenT_M], textureGenT_V);
|
texPos.y = dot(texSrc[textureGenT_M], textureGenT_V);
|
||||||
texPos.z = dot(texSrc[textureGenR_M], textureGenR_V);
|
texPos.z = dot(texSrc[textureGenR_M], textureGenR_V);
|
||||||
texPos.w = dot(texSrc[textureGenQ_M], textureGenQ_V);
|
texPos.w = dot(texSrc[textureGenQ_M], textureGenQ_V);
|
||||||
|
|
||||||
texPos = matrix_t * texPos;
|
texPos = matrix_t * texPos;
|
||||||
|
|
||||||
color *= texture(tex0, texPos.xy / texPos.w).bgra;
|
color *= texture(tex0, texPos.xy / texPos.w).bgra;
|
||||||
#ifdef CC_alphatest
|
#ifdef CC_alphatest
|
||||||
if(color.a < alphaTestF){
|
if(color.a < alphaTestF){
|
||||||
@ -161,18 +160,18 @@ void main(){
|
|||||||
#ifdef CC_a_texture0
|
#ifdef CC_a_texture0
|
||||||
|
|
||||||
#ifdef CC_patch_anisotropic
|
#ifdef CC_patch_anisotropic
|
||||||
vec2 uv = (matrix_t * vec4(v_texture0, 0.0, 1.0)).xy;
|
vec2 uv = (TEX_MAT3(matrix_t) * vec3(v_texture0, 1.0)).xy;
|
||||||
|
|
||||||
/* https://bugs.chromium.org/p/angleproject/issues/detail?id=4994 */
|
/* https://bugs.chromium.org/p/angleproject/issues/detail?id=4994 */
|
||||||
uv = ((uv * anisotropic_fix) - fract(uv * anisotropic_fix) + 0.5) / anisotropic_fix;
|
uv = ((uv * anisotropic_fix) - fract(uv * anisotropic_fix) + 0.5) / anisotropic_fix;
|
||||||
|
|
||||||
vec4 texColor = texture(tex0, uv);
|
vec4 texColor = texture(tex0, uv);
|
||||||
#else
|
#else
|
||||||
vec4 texColor = texture(tex0, (matrix_t * vec4(v_texture0, 0.0, 1.0)).xy);
|
vec4 texColor = texture(tex0, (TEX_MAT3(matrix_t) * vec3(v_texture0, 1.0)).xy);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
vec4 texColor = texture(tex0, (matrix_t * vec4(texCoordV0, 0.0, 1.0)).xy);
|
vec4 texColor = texture(tex0, (TEX_MAT3(matrix_t) * vec3(texCoordV0, 1.0)).xy);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CC_swap_rb
|
#ifdef CC_swap_rb
|
||||||
@ -211,7 +210,7 @@ void main(){
|
|||||||
|
|
||||||
#ifdef CC_fog
|
#ifdef CC_fog
|
||||||
float dist = sqrt(dot(v_position, v_position));
|
float dist = sqrt(dot(v_position, v_position));
|
||||||
float i = fogMode == 1 ? (dist - fogStart) / (fogEnd - fogStart) : 1.0 - pow(2.718, -(fogDensity * dist));
|
float i = fogMode == 1 ? (dist - fogStart) / (fogEnd - fogStart) : 1.0 - exp(-fogDensity * dist);
|
||||||
color.rgb = mix(color.rgb, fogColor.xyz, clamp(i, 0.0, 1.0) * fogColor.a);
|
color.rgb = mix(color.rgb, fogColor.xyz, clamp(i, 0.0, 1.0) * fogColor.a);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ out vec4 fragColor;
|
|||||||
#define FxaaTex sampler2D
|
#define FxaaTex sampler2D
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#define FxaaTexTop(t, p) texture(t, p)
|
#define FxaaTexTop(t, p) textureLod(t, p, 0.0)
|
||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
GREEN AS LUMA OPTION SUPPORT FUNCTION
|
GREEN AS LUMA OPTION SUPPORT FUNCTION
|
||||||
@ -241,15 +241,15 @@ uniform vec2 screenSize;
|
|||||||
#define edgeThresholdMin 0.005
|
#define edgeThresholdMin 0.005
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
|
vec2 screenSize05 = 0.5 * screenSize;
|
||||||
|
|
||||||
vec4 posPos;
|
vec4 posPos;
|
||||||
posPos.xy = pos - (0.6 / screenSize);
|
posPos.xy = pos;
|
||||||
posPos.zw = pos + (0.6 / screenSize);
|
posPos.zw = pos + screenSize;
|
||||||
vec4 rcpFrameOpt;
|
|
||||||
rcpFrameOpt.xy = vec2(-0.50, -0.50) / screenSize;
|
vec4 rcpFrameOpt;
|
||||||
rcpFrameOpt.zw = vec2( 0.50, 0.50) / screenSize;
|
rcpFrameOpt.xy = -screenSize05;
|
||||||
vec4 rcpFrameOpt2;
|
rcpFrameOpt.zw = screenSize05;
|
||||||
rcpFrameOpt2.xy = vec2(-2.0, -2.0) / screenSize;
|
|
||||||
rcpFrameOpt2.zw = vec2( 2.0, 2.0) / screenSize;
|
fragColor = vec4(FxaaPixelShader(pos + screenSize05, posPos, f_color, rcpFrameOpt, rcpFrameOpt * 4.0, edgeSharpness, edgeThreshold, edgeThresholdMin).rgb, 1.0);
|
||||||
|
|
||||||
fragColor = vec4(FxaaPixelShader(pos, posPos, f_color, rcpFrameOpt, rcpFrameOpt2, edgeSharpness, edgeThreshold, edgeThresholdMin).rgb, 1.0);
|
|
||||||
}
|
}
|
||||||
|
@ -7,4 +7,4 @@
|
|||||||
* in the user manual at https://docs.gradle.org/6.0/userguide/multi_project_builds.html
|
* in the user manual at https://docs.gradle.org/6.0/userguide/multi_project_builds.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rootProject.name = 'eaglercraft'
|
rootProject.name = 'eaglercraft-1.5.2-service-pack-1'
|
||||||
|
@ -228,6 +228,7 @@ public class EaglerAdapterImpl2 {
|
|||||||
public static final int _wGL_ELEMENT_ARRAY_BUFFER = GL15.GL_ELEMENT_ARRAY_BUFFER;
|
public static final int _wGL_ELEMENT_ARRAY_BUFFER = GL15.GL_ELEMENT_ARRAY_BUFFER;
|
||||||
public static final int _wGL_STATIC_DRAW = GL15.GL_STATIC_DRAW;
|
public static final int _wGL_STATIC_DRAW = GL15.GL_STATIC_DRAW;
|
||||||
public static final int _wGL_DYNAMIC_DRAW = GL15.GL_DYNAMIC_DRAW;
|
public static final int _wGL_DYNAMIC_DRAW = GL15.GL_DYNAMIC_DRAW;
|
||||||
|
public static final int _wGL_STREAM_DRAW = GL15.GL_STREAM_DRAW;
|
||||||
public static final int _wGL_INVALID_ENUM = GL11.GL_INVALID_ENUM;
|
public static final int _wGL_INVALID_ENUM = GL11.GL_INVALID_ENUM;
|
||||||
public static final int _wGL_INVALID_VALUE= GL11.GL_INVALID_VALUE;
|
public static final int _wGL_INVALID_VALUE= GL11.GL_INVALID_VALUE;
|
||||||
public static final int _wGL_INVALID_OPERATION = GL11.GL_INVALID_OPERATION;
|
public static final int _wGL_INVALID_OPERATION = GL11.GL_INVALID_OPERATION;
|
||||||
@ -356,10 +357,12 @@ public class EaglerAdapterImpl2 {
|
|||||||
public static final void _wglTexImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, ByteBuffer p9) {
|
public static final void _wglTexImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, ByteBuffer p9) {
|
||||||
GL11.glTexImage2D(p1, p2, p3, p4, p5, p6, p7, p8, p9);
|
GL11.glTexImage2D(p1, p2, p3, p4, p5, p6, p7, p8, p9);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final void _wglBlendFunc(int p1, int p2) {
|
public static final void _wglBlendFunc(int p1, int p2) {
|
||||||
GL11.glBlendFunc(p1, p2);
|
GL11.glBlendFunc(p1, p2);
|
||||||
}
|
}
|
||||||
|
public static final void _wglBlendFuncSeparate(int p1, int p2, int p3, int p4) {
|
||||||
|
GL14.glBlendFuncSeparate(p1, p2, p3, p4);
|
||||||
|
}
|
||||||
public static final void _wglBlendColor(float r, float g, float b, float a) {
|
public static final void _wglBlendColor(float r, float g, float b, float a) {
|
||||||
GL14.glBlendColor(r, g, b, a);
|
GL14.glBlendColor(r, g, b, a);
|
||||||
}
|
}
|
||||||
@ -480,6 +483,9 @@ public class EaglerAdapterImpl2 {
|
|||||||
public static final void _wglBufferData0(int p1, IntBuffer p2, int p3) {
|
public static final void _wglBufferData0(int p1, IntBuffer p2, int p3) {
|
||||||
GL15.glBufferData(p1, p2, p3);
|
GL15.glBufferData(p1, p2, p3);
|
||||||
}
|
}
|
||||||
|
public static final void _wglBufferData00(int p1, long len, int p3) {
|
||||||
|
GL15.glBufferData(p1, len, p3);
|
||||||
|
}
|
||||||
public static final void _wglBufferSubData0(int p1, int p2, IntBuffer p3) {
|
public static final void _wglBufferSubData0(int p1, int p2, IntBuffer p3) {
|
||||||
GL15.glBufferSubData(p1, p2, p3);
|
GL15.glBufferSubData(p1, p2, p3);
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,10 @@ public class ConfigConstants {
|
|||||||
|
|
||||||
public static boolean profanity = false;
|
public static boolean profanity = false;
|
||||||
|
|
||||||
public static final String version = "22w43a";
|
public static final String version = "1.5.2-sp1";
|
||||||
public static final String mainMenuString = "eaglercraft " + version;
|
public static final String mainMenuString = "eaglercraft " + version;
|
||||||
|
|
||||||
public static final String forkMe = "https://github.com/lax1dude/eaglercraft";
|
public static final String forkMe = null;
|
||||||
|
|
||||||
public static final boolean html5build = true;
|
public static final boolean html5build = true;
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import java.util.HashMap;
|
|||||||
|
|
||||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||||
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2;
|
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2;
|
||||||
|
import net.lax1dude.eaglercraft.glemu.StreamBuffer.StreamBufferInstance;
|
||||||
import net.lax1dude.eaglercraft.glemu.vector.Matrix4f;
|
import net.lax1dude.eaglercraft.glemu.vector.Matrix4f;
|
||||||
import net.lax1dude.eaglercraft.glemu.vector.Vector3f;
|
import net.lax1dude.eaglercraft.glemu.vector.Vector3f;
|
||||||
import net.lax1dude.eaglercraft.glemu.vector.Vector4f;
|
import net.lax1dude.eaglercraft.glemu.vector.Vector4f;
|
||||||
@ -645,7 +646,17 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 {
|
|||||||
|
|
||||||
public static final void glBlendFunc(int p1, int p2) {
|
public static final void glBlendFunc(int p1, int p2) {
|
||||||
fogPremultiply = (p1 == GL_ONE && p2 == GL_ONE_MINUS_SRC_ALPHA);
|
fogPremultiply = (p1 == GL_ONE && p2 == GL_ONE_MINUS_SRC_ALPHA);
|
||||||
_wglBlendFunc(p1, p2);
|
if(overlayFBOBlending) {
|
||||||
|
_wglBlendFuncSeparate(p1, p2, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
}else {
|
||||||
|
_wglBlendFunc(p1, p2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean overlayFBOBlending = false;
|
||||||
|
|
||||||
|
public static final void enableOverlayFramebufferBlending(boolean en) {
|
||||||
|
overlayFBOBlending = en;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final void glDepthMask(boolean p1) {
|
public static final void glDepthMask(boolean p1) {
|
||||||
@ -1069,13 +1080,15 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 {
|
|||||||
System.err.println("only GL_QUADS supported in a display list");
|
System.err.println("only GL_QUADS supported in a display list");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bytesUploaded += _wArrayByteLength(buffer);
|
int bl = _wArrayByteLength(buffer);
|
||||||
|
bytesUploaded += bl;
|
||||||
vertexDrawn += p3;
|
vertexDrawn += p3;
|
||||||
|
|
||||||
bindTheShader();
|
bindTheShader();
|
||||||
|
|
||||||
_wglBindVertexArray0(shader.genericArray);
|
StreamBufferInstance sb = shader.streamBuffer.getBuffer(bl);
|
||||||
_wglBindBuffer(_wGL_ARRAY_BUFFER, shader.genericBuffer);
|
_wglBindVertexArray0(sb.vertexArray);
|
||||||
|
_wglBindBuffer(_wGL_ARRAY_BUFFER, sb.vertexBuffer);
|
||||||
if (!shader.bufferIsInitialized) {
|
if (!shader.bufferIsInitialized) {
|
||||||
shader.bufferIsInitialized = true;
|
shader.bufferIsInitialized = true;
|
||||||
_wglBufferData(_wGL_ARRAY_BUFFER, blankUploadArray, _wGL_DYNAMIC_DRAW);
|
_wglBufferData(_wGL_ARRAY_BUFFER, blankUploadArray, _wGL_DYNAMIC_DRAW);
|
||||||
@ -1457,6 +1470,10 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final void optimize() {
|
||||||
|
FixedFunctionShader.optimize();
|
||||||
|
}
|
||||||
|
|
||||||
private static long lastBandwidthReset = 0l;
|
private static long lastBandwidthReset = 0l;
|
||||||
private static int lastBandwidth = 0;
|
private static int lastBandwidth = 0;
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package net.lax1dude.eaglercraft.glemu;
|
package net.lax1dude.eaglercraft.glemu;
|
||||||
|
|
||||||
import static net.lax1dude.eaglercraft.EaglerAdapter.*;
|
import static net.lax1dude.eaglercraft.EaglerAdapter.*;
|
||||||
import static net.lax1dude.eaglercraft.glemu.EaglerAdapterGL30._wglBindVertexArray0;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
@ -212,7 +211,7 @@ public class EffectPipelineFXAA {
|
|||||||
_wglDisable(_wGL_CULL_FACE);
|
_wglDisable(_wGL_CULL_FACE);
|
||||||
_wglDepthMask(false);
|
_wglDepthMask(false);
|
||||||
_wglUseProgram(fxaaProgram);
|
_wglUseProgram(fxaaProgram);
|
||||||
_wglUniform2f(fxaaScreenSize, width, height);
|
_wglUniform2f(fxaaScreenSize, 1.0f / width, 1.0f / height);
|
||||||
_wglBindVertexArray0(renderQuadArray);
|
_wglBindVertexArray0(renderQuadArray);
|
||||||
_wglDrawArrays(_wGL_TRIANGLES, 0, 6);
|
_wglDrawArrays(_wGL_TRIANGLES, 0, 6);
|
||||||
_wglEnable(_wGL_DEPTH_TEST);
|
_wglEnable(_wGL_DEPTH_TEST);
|
||||||
|
@ -2,8 +2,9 @@ package net.lax1dude.eaglercraft.glemu;
|
|||||||
|
|
||||||
import static net.lax1dude.eaglercraft.EaglerAdapter.*;
|
import static net.lax1dude.eaglercraft.EaglerAdapter.*;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.BufferArrayGL;
|
import java.util.ArrayList;
|
||||||
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.BufferGL;
|
import java.util.List;
|
||||||
|
|
||||||
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.ProgramGL;
|
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.ProgramGL;
|
||||||
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.ShaderGL;
|
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.ShaderGL;
|
||||||
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.UniformGL;
|
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.UniformGL;
|
||||||
@ -14,6 +15,7 @@ import net.lax1dude.eaglercraft.glemu.vector.Vector4f;
|
|||||||
public class FixedFunctionShader {
|
public class FixedFunctionShader {
|
||||||
|
|
||||||
private static final FixedFunctionShader[] instances = new FixedFunctionShader[4096]; //lol
|
private static final FixedFunctionShader[] instances = new FixedFunctionShader[4096]; //lol
|
||||||
|
private static final List<FixedFunctionShader> instanceList = new ArrayList();
|
||||||
|
|
||||||
public static void refreshCoreGL() {
|
public static void refreshCoreGL() {
|
||||||
for(int i = 0; i < instances.length; ++i) {
|
for(int i = 0; i < instances.length; ++i) {
|
||||||
@ -22,6 +24,7 @@ public class FixedFunctionShader {
|
|||||||
instances[i] = null;
|
instances[i] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
instanceList.clear();
|
||||||
shaderSource = null;
|
shaderSource = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +95,7 @@ public class FixedFunctionShader {
|
|||||||
s = new FixedFunctionShader(i, CC_a_color, CC_a_normal, CC_a_texture0, CC_a_texture1, CC_TEX_GEN_STRQ, CC_lighting,
|
s = new FixedFunctionShader(i, CC_a_color, CC_a_normal, CC_a_texture0, CC_a_texture1, CC_TEX_GEN_STRQ, CC_lighting,
|
||||||
CC_fog, CC_alphatest, CC_unit0, CC_unit1, CC_anisotropic, CC_swap_rb);
|
CC_fog, CC_alphatest, CC_unit0, CC_unit1, CC_anisotropic, CC_swap_rb);
|
||||||
instances[i] = s;
|
instances[i] = s;
|
||||||
|
instanceList.add(s);
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
@ -154,8 +158,7 @@ public class FixedFunctionShader {
|
|||||||
|
|
||||||
private final int attributeIndexesToEnable;
|
private final int attributeIndexesToEnable;
|
||||||
|
|
||||||
public final BufferArrayGL genericArray;
|
public final StreamBuffer streamBuffer;
|
||||||
public final BufferGL genericBuffer;
|
|
||||||
public boolean bufferIsInitialized = false;
|
public boolean bufferIsInitialized = false;
|
||||||
|
|
||||||
private FixedFunctionShader(int j, boolean CC_a_color, boolean CC_a_normal, boolean CC_a_texture0, boolean CC_a_texture1, boolean CC_TEX_GEN_STRQ, boolean CC_lighting,
|
private FixedFunctionShader(int j, boolean CC_a_color, boolean CC_a_normal, boolean CC_a_texture0, boolean CC_a_texture1, boolean CC_TEX_GEN_STRQ, boolean CC_lighting,
|
||||||
@ -306,12 +309,12 @@ public class FixedFunctionShader {
|
|||||||
|
|
||||||
u_texCoordV0 = _wglGetUniformLocation(globject, "texCoordV0");
|
u_texCoordV0 = _wglGetUniformLocation(globject, "texCoordV0");
|
||||||
u_texCoordV1 = _wglGetUniformLocation(globject, "texCoordV1");
|
u_texCoordV1 = _wglGetUniformLocation(globject, "texCoordV1");
|
||||||
|
|
||||||
genericArray = _wglCreateVertexArray();
|
streamBuffer = new StreamBuffer(0x8000, 3, 8, (vertexArray, vertexBuffer) -> {
|
||||||
genericBuffer = _wglCreateBuffer();
|
_wglBindVertexArray(vertexArray);
|
||||||
_wglBindVertexArray(genericArray);
|
_wglBindBuffer(_wGL_ARRAY_BUFFER, vertexBuffer);
|
||||||
_wglBindBuffer(_wGL_ARRAY_BUFFER, genericBuffer);
|
setupArrayForProgram();
|
||||||
setupArrayForProgram();
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,6 +347,13 @@ public class FixedFunctionShader {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void optimize() {
|
||||||
|
FixedFunctionShader pp;
|
||||||
|
for(int i = 0, l = instanceList.size(); i < l; ++i) {
|
||||||
|
instanceList.get(i).streamBuffer.optimize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private float[] modelBuffer = new float[16];
|
private float[] modelBuffer = new float[16];
|
||||||
private float[] projectionBuffer = new float[16];
|
private float[] projectionBuffer = new float[16];
|
||||||
private float[] textureBuffer = new float[16];
|
private float[] textureBuffer = new float[16];
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
package net.lax1dude.eaglercraft.glemu;
|
||||||
|
|
||||||
|
import static net.lax1dude.eaglercraft.EaglerAdapter.*;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
|
public class GameOverlayFramebuffer {
|
||||||
|
|
||||||
|
private long age = -1l;
|
||||||
|
|
||||||
|
private int currentWidth = -1;
|
||||||
|
private int currentHeight = -1;
|
||||||
|
|
||||||
|
private FramebufferGL framebuffer = null;
|
||||||
|
private TextureGL framebufferColor = null;
|
||||||
|
private RenderbufferGL depthBuffer = null;
|
||||||
|
|
||||||
|
public void beginRender(int width, int height) {
|
||||||
|
if(framebuffer == null) {
|
||||||
|
framebuffer = _wglCreateFramebuffer();
|
||||||
|
depthBuffer = _wglCreateRenderBuffer();
|
||||||
|
framebufferColor = _wglGenTextures();
|
||||||
|
_wglBindFramebuffer(_wGL_FRAMEBUFFER, framebuffer);
|
||||||
|
_wglBindTexture(_wGL_TEXTURE_2D, framebufferColor);
|
||||||
|
_wglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
_wglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
_wglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||||
|
_wglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||||
|
_wglFramebufferTexture2D(_wGL_COLOR_ATTACHMENT0, framebufferColor, 0);
|
||||||
|
_wglBindRenderbuffer(depthBuffer);
|
||||||
|
_wglFramebufferRenderbuffer(_wGL_DEPTH_ATTACHMENT, depthBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(currentWidth != width || currentHeight != height) {
|
||||||
|
currentWidth = width;
|
||||||
|
currentHeight = height;
|
||||||
|
_wglBindTexture(_wGL_TEXTURE_2D, framebufferColor);
|
||||||
|
_wglTexImage2D(_wGL_TEXTURE_2D, 0, _wGL_RGBA8, width, height, 0, _wGL_RGBA, _wGL_UNSIGNED_BYTE, (ByteBuffer)null);
|
||||||
|
_wglBindRenderbuffer(depthBuffer);
|
||||||
|
_wglRenderbufferStorage(0x81A5, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
_wglBindFramebuffer(_wGL_FRAMEBUFFER, framebuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void endRender() {
|
||||||
|
_wglBindFramebuffer(_wGL_FRAMEBUFFER, null);
|
||||||
|
age = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getAge() {
|
||||||
|
return age == -1l ? -1l : (System.currentTimeMillis() - age);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void bindTexture() {
|
||||||
|
_wglBindTexture(_wGL_TEXTURE_2D, framebufferColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void destroy() {
|
||||||
|
if(framebuffer != null) {
|
||||||
|
_wglDeleteFramebuffer(framebuffer);
|
||||||
|
_wglDeleteRenderbuffer(depthBuffer);
|
||||||
|
_wglDeleteTextures(framebufferColor);
|
||||||
|
framebuffer = null;
|
||||||
|
depthBuffer = null;
|
||||||
|
framebufferColor = null;
|
||||||
|
age = -1l;
|
||||||
|
_wglBindFramebuffer(_wGL_FRAMEBUFFER, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
130
src/main/java/net/lax1dude/eaglercraft/glemu/StreamBuffer.java
Normal file
130
src/main/java/net/lax1dude/eaglercraft/glemu/StreamBuffer.java
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
package net.lax1dude.eaglercraft.glemu;
|
||||||
|
|
||||||
|
import static net.lax1dude.eaglercraft.EaglerAdapter.*;
|
||||||
|
|
||||||
|
public class StreamBuffer {
|
||||||
|
|
||||||
|
public final int initialSize;
|
||||||
|
public final int initialCount;
|
||||||
|
public final int maxCount;
|
||||||
|
|
||||||
|
protected StreamBufferInstance[] buffers;
|
||||||
|
|
||||||
|
protected int currentBufferId = 0;
|
||||||
|
protected int overflowCounter = 0;
|
||||||
|
|
||||||
|
protected final IStreamBufferInitializer initializer;
|
||||||
|
|
||||||
|
public static class StreamBufferInstance {
|
||||||
|
|
||||||
|
protected BufferArrayGL vertexArray = null;
|
||||||
|
protected BufferGL vertexBuffer = null;
|
||||||
|
protected int vertexBufferSize = 0;
|
||||||
|
|
||||||
|
public boolean bindQuad16 = false;
|
||||||
|
public boolean bindQuad32 = false;
|
||||||
|
|
||||||
|
public BufferArrayGL getVertexArray() {
|
||||||
|
return vertexArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BufferGL getVertexBuffer() {
|
||||||
|
return vertexBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static interface IStreamBufferInitializer {
|
||||||
|
void initialize(BufferArrayGL vertexArray, BufferGL vertexBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StreamBuffer(int initialSize, int initialCount, int maxCount, IStreamBufferInitializer initializer) {
|
||||||
|
this.buffers = new StreamBufferInstance[initialCount];
|
||||||
|
for(int i = 0; i < this.buffers.length; ++i) {
|
||||||
|
this.buffers[i] = new StreamBufferInstance();
|
||||||
|
}
|
||||||
|
this.initialSize = initialSize;
|
||||||
|
this.initialCount = initialCount;
|
||||||
|
this.maxCount = maxCount;
|
||||||
|
this.initializer = initializer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StreamBufferInstance getBuffer(int requiredMemory) {
|
||||||
|
StreamBufferInstance next = buffers[(currentBufferId++) % buffers.length];
|
||||||
|
if(next.vertexBuffer == null) {
|
||||||
|
next.vertexBuffer = _wglCreateBuffer();
|
||||||
|
}
|
||||||
|
if(next.vertexArray == null) {
|
||||||
|
next.vertexArray = _wglCreateVertexArray();
|
||||||
|
initializer.initialize(next.vertexArray, next.vertexBuffer);
|
||||||
|
}
|
||||||
|
if(next.vertexBufferSize < requiredMemory) {
|
||||||
|
int newSize = (requiredMemory & 0xFFFFF000) + 0x2000;
|
||||||
|
_wglBindBuffer(_wGL_ARRAY_BUFFER, next.vertexBuffer);
|
||||||
|
_wglBufferData00(_wGL_ARRAY_BUFFER, newSize, _wGL_STREAM_DRAW);
|
||||||
|
next.vertexBufferSize = newSize;
|
||||||
|
}
|
||||||
|
return next;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void optimize() {
|
||||||
|
overflowCounter += currentBufferId - buffers.length;
|
||||||
|
if(overflowCounter < -25) {
|
||||||
|
int newCount = buffers.length - 1 + ((overflowCounter + 25) / 5);
|
||||||
|
if(newCount < initialCount) {
|
||||||
|
newCount = initialCount;
|
||||||
|
}
|
||||||
|
if(newCount < buffers.length) {
|
||||||
|
StreamBufferInstance[] newArray = new StreamBufferInstance[newCount];
|
||||||
|
for(int i = 0; i < buffers.length; ++i) {
|
||||||
|
if(i < newArray.length) {
|
||||||
|
newArray[i] = buffers[i];
|
||||||
|
}else {
|
||||||
|
if(buffers[i].vertexArray != null) {
|
||||||
|
_wglDeleteVertexArray(buffers[i].vertexArray);
|
||||||
|
}
|
||||||
|
if(buffers[i].vertexBuffer != null) {
|
||||||
|
_wglDeleteBuffer(buffers[i].vertexBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buffers = newArray;
|
||||||
|
}
|
||||||
|
overflowCounter = 0;
|
||||||
|
}else if(overflowCounter > 15) {
|
||||||
|
int newCount = buffers.length + 1 + ((overflowCounter - 15) / 5);
|
||||||
|
if(newCount > maxCount) {
|
||||||
|
newCount = maxCount;
|
||||||
|
}
|
||||||
|
if(newCount > buffers.length) {
|
||||||
|
StreamBufferInstance[] newArray = new StreamBufferInstance[newCount];
|
||||||
|
for(int i = 0; i < newArray.length; ++i) {
|
||||||
|
if(i < buffers.length) {
|
||||||
|
newArray[i] = buffers[i];
|
||||||
|
}else {
|
||||||
|
newArray[i] = new StreamBufferInstance();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buffers = newArray;
|
||||||
|
}
|
||||||
|
overflowCounter = 0;
|
||||||
|
}
|
||||||
|
currentBufferId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void destroy() {
|
||||||
|
for(int i = 0; i < buffers.length; ++i) {
|
||||||
|
StreamBufferInstance next = buffers[i];
|
||||||
|
if(next.vertexArray != null) {
|
||||||
|
_wglDeleteVertexArray(next.vertexArray);
|
||||||
|
}
|
||||||
|
if(next.vertexBuffer != null) {
|
||||||
|
_wglDeleteBuffer(next.vertexBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buffers = new StreamBufferInstance[initialCount];
|
||||||
|
for(int i = 0; i < buffers.length; ++i) {
|
||||||
|
buffers[i] = new StreamBufferInstance();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -536,6 +536,7 @@ public class Minecraft implements Runnable {
|
|||||||
EaglerAdapter.glAlphaFunc(EaglerAdapter.GL_GREATER, 0.1F);
|
EaglerAdapter.glAlphaFunc(EaglerAdapter.GL_GREATER, 0.1F);
|
||||||
EaglerAdapter.glFlush();
|
EaglerAdapter.glFlush();
|
||||||
EaglerAdapter.updateDisplay();
|
EaglerAdapter.updateDisplay();
|
||||||
|
EaglerAdapter.optimize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -780,6 +781,7 @@ public class Minecraft implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.checkGLError("Post render");
|
this.checkGLError("Post render");
|
||||||
|
EaglerAdapter.optimize();
|
||||||
++this.fpsCounter;
|
++this.fpsCounter;
|
||||||
//boolean var5 = this.isGamePaused;
|
//boolean var5 = this.isGamePaused;
|
||||||
//this.isGamePaused = false;
|
//this.isGamePaused = false;
|
||||||
|
@ -10,6 +10,7 @@ import net.lax1dude.eaglercraft.TextureLocation;
|
|||||||
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
import net.lax1dude.eaglercraft.adapter.Tessellator;
|
||||||
import net.lax1dude.eaglercraft.glemu.EffectPipeline;
|
import net.lax1dude.eaglercraft.glemu.EffectPipeline;
|
||||||
import net.lax1dude.eaglercraft.glemu.EffectPipelineFXAA;
|
import net.lax1dude.eaglercraft.glemu.EffectPipelineFXAA;
|
||||||
|
import net.lax1dude.eaglercraft.glemu.GameOverlayFramebuffer;
|
||||||
import net.lax1dude.eaglercraft.glemu.vector.Matrix4f;
|
import net.lax1dude.eaglercraft.glemu.vector.Matrix4f;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
@ -161,8 +162,11 @@ public class EntityRenderer {
|
|||||||
public int startup = 0;
|
public int startup = 0;
|
||||||
public int preStartup = 0;
|
public int preStartup = 0;
|
||||||
|
|
||||||
|
private GameOverlayFramebuffer overlayFramebuffer;
|
||||||
|
|
||||||
public EntityRenderer(Minecraft par1Minecraft) {
|
public EntityRenderer(Minecraft par1Minecraft) {
|
||||||
this.mc = par1Minecraft;
|
this.mc = par1Minecraft;
|
||||||
|
this.overlayFramebuffer = new GameOverlayFramebuffer();
|
||||||
this.itemRenderer = new ItemRenderer(par1Minecraft);
|
this.itemRenderer = new ItemRenderer(par1Minecraft);
|
||||||
this.lightmapTexture = par1Minecraft.renderEngine.allocateAndSetupTexture(new EaglerImage(16, 16, true));
|
this.lightmapTexture = par1Minecraft.renderEngine.allocateAndSetupTexture(new EaglerImage(16, 16, true));
|
||||||
this.lightmapColors = new int[256];
|
this.lightmapColors = new int[256];
|
||||||
@ -929,9 +933,46 @@ public class EntityRenderer {
|
|||||||
this.mc.mcProfiler.endStartSection("gui");
|
this.mc.mcProfiler.endStartSection("gui");
|
||||||
|
|
||||||
if (!this.mc.gameSettings.hideGUI || this.mc.currentScreen != null) {
|
if (!this.mc.gameSettings.hideGUI || this.mc.currentScreen != null) {
|
||||||
this.mc.ingameGUI.renderGameOverlay(par1, this.mc.currentScreen != null, var16, var17);
|
EaglerAdapter.glAlphaFunc(EaglerAdapter.GL_GREATER, 0.1F);
|
||||||
|
long framebufferAge = this.overlayFramebuffer.getAge();
|
||||||
|
if(framebufferAge == -1l || framebufferAge > (Minecraft.debugFPS < 25 ? 125l : 75l)) {
|
||||||
|
this.overlayFramebuffer.beginRender(mc.displayWidth, mc.displayHeight);
|
||||||
|
EaglerAdapter.glColorMask(true, true, true, true);
|
||||||
|
EaglerAdapter.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
EaglerAdapter.glClear(EaglerAdapter.GL_COLOR_BUFFER_BIT | EaglerAdapter.GL_DEPTH_BUFFER_BIT);
|
||||||
|
EaglerAdapter.enableOverlayFramebufferBlending(true);
|
||||||
|
this.mc.ingameGUI.renderGameOverlay(par1, this.mc.currentScreen != null, var16, var17);
|
||||||
|
EaglerAdapter.enableOverlayFramebufferBlending(false);
|
||||||
|
this.overlayFramebuffer.endRender();
|
||||||
|
EaglerAdapter.glClearColor(this.fogColorRed, this.fogColorGreen, this.fogColorBlue, 0.0F);
|
||||||
|
}
|
||||||
|
this.setupOverlayRendering();
|
||||||
|
EaglerAdapter.glDisable(EaglerAdapter.GL_LIGHTING);
|
||||||
|
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
||||||
|
if (Minecraft.isFancyGraphicsEnabled()) {
|
||||||
|
this.mc.ingameGUI.renderVignette(this.mc.thePlayer.getBrightness(par1), var14, var15);
|
||||||
|
}
|
||||||
|
this.mc.ingameGUI.renderCrosshairs(var14, var15);
|
||||||
|
this.overlayFramebuffer.bindTexture();
|
||||||
|
EaglerAdapter.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
EaglerAdapter.glDisable(EaglerAdapter.GL_ALPHA_TEST);
|
||||||
|
EaglerAdapter.glDisable(EaglerAdapter.GL_DEPTH_TEST);
|
||||||
|
EaglerAdapter.glDepthMask(false);
|
||||||
|
EaglerAdapter.glEnable(EaglerAdapter.EAG_SWAP_RB);
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
tessellator.startDrawingQuads();
|
||||||
|
tessellator.addVertexWithUV(0.0D, (double) var15, -90.0D, 0.0D, 0.0D);
|
||||||
|
tessellator.addVertexWithUV((double) var14, (double) var15, -90.0D, 1.0D, 0.0D);
|
||||||
|
tessellator.addVertexWithUV((double) var14, 0.0D, -90.0D, 1.0D, 1.0D);
|
||||||
|
tessellator.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 1.0D);
|
||||||
|
tessellator.draw();
|
||||||
|
EaglerAdapter.glDepthMask(true);
|
||||||
|
EaglerAdapter.glEnable(EaglerAdapter.GL_ALPHA_TEST);
|
||||||
|
EaglerAdapter.glEnable(EaglerAdapter.GL_DEPTH_TEST);
|
||||||
|
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
||||||
|
EaglerAdapter.glDisable(EaglerAdapter.EAG_SWAP_RB);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.mc.mcProfiler.endSection();
|
this.mc.mcProfiler.endSection();
|
||||||
} else {
|
} else {
|
||||||
EaglerAdapter.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
|
EaglerAdapter.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
|
||||||
|
@ -59,12 +59,7 @@ public class GuiIngame extends Gui {
|
|||||||
FontRenderer var8 = this.mc.fontRenderer;
|
FontRenderer var8 = this.mc.fontRenderer;
|
||||||
this.mc.entityRenderer.setupOverlayRendering();
|
this.mc.entityRenderer.setupOverlayRendering();
|
||||||
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
||||||
|
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
||||||
if (Minecraft.isFancyGraphicsEnabled()) {
|
|
||||||
this.renderVignette(this.mc.thePlayer.getBrightness(par1), var6, var7);
|
|
||||||
} else {
|
|
||||||
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack var9 = this.mc.thePlayer.inventory.armorItemInSlot(3);
|
ItemStack var9 = this.mc.thePlayer.inventory.armorItemInSlot(3);
|
||||||
|
|
||||||
@ -102,29 +97,9 @@ public class GuiIngame extends Gui {
|
|||||||
this.zLevel = -90.0F;
|
this.zLevel = -90.0F;
|
||||||
this.drawTexturedModalRect(var6 / 2 - 91, var7 - 22, 0, 0, 182, 22);
|
this.drawTexturedModalRect(var6 / 2 - 91, var7 - 22, 0, 0, 182, 22);
|
||||||
this.drawTexturedModalRect(var6 / 2 - 91 - 1 + var31.currentItem * 20, var7 - 22 - 1, 0, 22, 24, 22);
|
this.drawTexturedModalRect(var6 / 2 - 91 - 1 + var31.currentItem * 20, var7 - 22 - 1, 0, 22, 24, 22);
|
||||||
|
|
||||||
tex_icons.bindTexture();
|
tex_icons.bindTexture();
|
||||||
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
||||||
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_ONE_MINUS_DST_COLOR, EaglerAdapter.GL_ONE_MINUS_SRC_COLOR);
|
|
||||||
|
|
||||||
float i = mc.entityRenderer.startup / 900.0f - 0.5f;
|
|
||||||
if(i > 1.0f) i = 1.0f;
|
|
||||||
if(i < 0.0f) i = 0.0f;
|
|
||||||
float i2 = i * i;
|
|
||||||
if(i2 > 0.0f) {
|
|
||||||
float f = (float)((System.currentTimeMillis() % 1000000l) * 0.0002);
|
|
||||||
f += MathHelper.sin(f * 5.0f) * 0.2f;
|
|
||||||
i2 *= MathHelper.sin(f) + MathHelper.sin(f * 1.5f + 0.6f) + MathHelper.sin(f * 0.7f + 1.7f) +
|
|
||||||
MathHelper.sin(f * 3.0f + 3.0f);
|
|
||||||
EaglerAdapter.glPushMatrix();
|
|
||||||
EaglerAdapter.glTranslatef(var6 / 2, var7 / 2, 0.0f);
|
|
||||||
EaglerAdapter.glRotatef(i2 * 5.0f, 0.0f, 0.0f, 1.0f);
|
|
||||||
this.drawTexturedModalRect(-7, -7, 0, 0, 16, 16);
|
|
||||||
EaglerAdapter.glPopMatrix();
|
|
||||||
}else {
|
|
||||||
this.drawTexturedModalRect(var6 / 2 - 7, var7 / 2 - 7, 0, 0, 16, 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
|
||||||
var11 = this.mc.thePlayer.hurtResistantTime / 3 % 2 == 1;
|
var11 = this.mc.thePlayer.hurtResistantTime / 3 % 2 == 1;
|
||||||
|
|
||||||
if (this.mc.thePlayer.hurtResistantTime < 10) {
|
if (this.mc.thePlayer.hurtResistantTime < 10) {
|
||||||
@ -669,14 +644,14 @@ public class GuiIngame extends Gui {
|
|||||||
int var19 = var23 - var12 * par4FontRenderer.FONT_HEIGHT;
|
int var19 = var23 - var12 * par4FontRenderer.FONT_HEIGHT;
|
||||||
int var20 = par3 - var24 + 2;
|
int var20 = par3 - var24 + 2;
|
||||||
drawRect(var25 - 2, var19, var20, var19 + par4FontRenderer.FONT_HEIGHT, 1342177280);
|
drawRect(var25 - 2, var19, var20, var19 + par4FontRenderer.FONT_HEIGHT, 1342177280);
|
||||||
par4FontRenderer.drawString(var16, var25, var19, 553648127);
|
par4FontRenderer.drawString(var16, var25, var19, 0xFFFFFFFF);
|
||||||
par4FontRenderer.drawString(var17, var20 - par4FontRenderer.getStringWidth(var17), var19, 553648127);
|
par4FontRenderer.drawString(var17, var20 - par4FontRenderer.getStringWidth(var17), var19, 0xFFFFFFFF);
|
||||||
|
|
||||||
if (var12 == var6.size()) {
|
if (var12 == var6.size()) {
|
||||||
String var21 = par1ScoreObjective.getDisplayName();
|
String var21 = par1ScoreObjective.getDisplayName();
|
||||||
drawRect(var25 - 2, var19 - par4FontRenderer.FONT_HEIGHT - 1, var20, var19 - 1, 1610612736);
|
drawRect(var25 - 2, var19 - par4FontRenderer.FONT_HEIGHT - 1, var20, var19 - 1, 1610612736);
|
||||||
drawRect(var25 - 2, var19 - 1, var20, var19, 1342177280);
|
drawRect(var25 - 2, var19 - 1, var20, var19, 1342177280);
|
||||||
par4FontRenderer.drawString(var21, var25 + var7 / 2 - par4FontRenderer.getStringWidth(var21) / 2, var19 - par4FontRenderer.FONT_HEIGHT, 553648127);
|
par4FontRenderer.drawString(var21, var25 + var7 / 2 - par4FontRenderer.getStringWidth(var21) / 2, var19 - par4FontRenderer.FONT_HEIGHT, 0xFFFFFFFF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -732,7 +707,7 @@ public class GuiIngame extends Gui {
|
|||||||
/**
|
/**
|
||||||
* Renders the vignette. Args: vignetteBrightness, width, height
|
* Renders the vignette. Args: vignetteBrightness, width, height
|
||||||
*/
|
*/
|
||||||
private void renderVignette(float par1, int par2, int par3) {
|
public void renderVignette(float par1, int par2, int par3) {
|
||||||
par1 = 1.0F - par1 * 0.5f;
|
par1 = 1.0F - par1 * 0.5f;
|
||||||
|
|
||||||
if (par1 < 0.0F) {
|
if (par1 < 0.0F) {
|
||||||
@ -762,6 +737,31 @@ public class GuiIngame extends Gui {
|
|||||||
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void renderCrosshairs(int w, int h) {
|
||||||
|
tex_icons.bindTexture();
|
||||||
|
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
||||||
|
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_ONE_MINUS_DST_COLOR, EaglerAdapter.GL_ONE_MINUS_SRC_COLOR);
|
||||||
|
|
||||||
|
float i = mc.entityRenderer.startup / 900.0f - 0.5f;
|
||||||
|
if(i > 1.0f) i = 1.0f;
|
||||||
|
if(i < 0.0f) i = 0.0f;
|
||||||
|
float i2 = i * i;
|
||||||
|
if(i2 > 0.0f) {
|
||||||
|
float f = (float)((System.currentTimeMillis() % 1000000l) * 0.0002);
|
||||||
|
f += MathHelper.sin(f * 5.0f) * 0.2f;
|
||||||
|
i2 *= MathHelper.sin(f) + MathHelper.sin(f * 1.5f + 0.6f) + MathHelper.sin(f * 0.7f + 1.7f) +
|
||||||
|
MathHelper.sin(f * 3.0f + 3.0f);
|
||||||
|
EaglerAdapter.glPushMatrix();
|
||||||
|
EaglerAdapter.glTranslatef(w / 2, h / 2, 0.0f);
|
||||||
|
EaglerAdapter.glRotatef(i2 * 5.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
this.drawTexturedModalRect(-7, -7, 0, 0, 16, 16);
|
||||||
|
EaglerAdapter.glPopMatrix();
|
||||||
|
}else {
|
||||||
|
this.drawTexturedModalRect(w / 2 - 7, h / 2 - 7, 0, 0, 16, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the portal overlay. Args: portalStrength, width, height
|
* Renders the portal overlay. Args: portalStrength, width, height
|
||||||
*/
|
*/
|
||||||
|
@ -86,7 +86,7 @@ public class GuiMainMenu extends GuiScreen {
|
|||||||
this.splashText = "missingno";
|
this.splashText = "missingno";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.field_92025_p = EaglerAdapter._wisWebGL() ? ("eaglercraft javascript runtime") : ("eaglercraft desktop runtime");
|
this.field_92025_p = "Eaglercraft 1.5.2 Service Pack #1";
|
||||||
this.start = System.currentTimeMillis();
|
this.start = System.currentTimeMillis();
|
||||||
this.start += this.start % 10000l;
|
this.start += this.start % 10000l;
|
||||||
this.ackLines = new ArrayList();
|
this.ackLines = new ArrayList();
|
||||||
@ -154,6 +154,7 @@ public class GuiMainMenu extends GuiScreen {
|
|||||||
this.buttonList.add(new GuiButton(2, this.width / 2 - 100, var4, var2.translateKey("menu.multiplayer")));
|
this.buttonList.add(new GuiButton(2, this.width / 2 - 100, var4, var2.translateKey("menu.multiplayer")));
|
||||||
this.buttonList.add(new GuiButton(3, this.width / 2 - 100, var4 + 24, var2.translateKey("menu.forkme")));
|
this.buttonList.add(new GuiButton(3, this.width / 2 - 100, var4 + 24, var2.translateKey("menu.forkme")));
|
||||||
}
|
}
|
||||||
|
((GuiButton)this.buttonList.get(this.buttonList.size() - 1)).enabled = false;
|
||||||
|
|
||||||
this.buttonList.add(new GuiButton(0, this.width / 2 - 100, var4 + 72 + 12, 98, 20, var2.translateKey("menu.options")));
|
this.buttonList.add(new GuiButton(0, this.width / 2 - 100, var4 + 72 + 12, 98, 20, var2.translateKey("menu.options")));
|
||||||
this.buttonList.add(new GuiButton(4, this.width / 2 + 2, var4 + 72 + 12, 98, 20, var2.translateKey("menu.editprofile")));
|
this.buttonList.add(new GuiButton(4, this.width / 2 + 2, var4 + 72 + 12, 98, 20, var2.translateKey("menu.editprofile")));
|
||||||
@ -504,7 +505,7 @@ public class GuiMainMenu extends GuiScreen {
|
|||||||
this.drawTexturedModalRect(var6 + 155, var7 + 0, 0, 45, 155, 44);
|
this.drawTexturedModalRect(var6 + 155, var7 + 0, 0, 45, 155, 44);
|
||||||
|
|
||||||
this.drawString(this.fontRenderer, "minecraft 1.5.2", 2, this.height - 20, 16777215);
|
this.drawString(this.fontRenderer, "minecraft 1.5.2", 2, this.height - 20, 16777215);
|
||||||
this.drawString(this.fontRenderer, ConfigConstants.mainMenuString + EnumChatFormatting.GRAY + " (cracked)", 2, this.height - 10, 16777215);
|
this.drawString(this.fontRenderer, ConfigConstants.mainMenuString + " official", 2, this.height - 10, 16777215);
|
||||||
|
|
||||||
//String var10 = "Copyright " + Calendar.getInstance().get(Calendar.YEAR) + " Mojang AB.";
|
//String var10 = "Copyright " + Calendar.getInstance().get(Calendar.YEAR) + " Mojang AB.";
|
||||||
String var10 = "copyright 2013 Mojang AB";
|
String var10 = "copyright 2013 Mojang AB";
|
||||||
|
@ -917,7 +917,7 @@ public class RenderGlobal implements IWorldAccess {
|
|||||||
var13 = (float) var27 * (float) Math.PI * 2.0F / (float) var26;
|
var13 = (float) var27 * (float) Math.PI * 2.0F / (float) var26;
|
||||||
float var14 = MathHelper.sin(var13);
|
float var14 = MathHelper.sin(var13);
|
||||||
float var15 = MathHelper.cos(var13);
|
float var15 = MathHelper.cos(var13);
|
||||||
var23.addVertex((double) (var14 * 120.0F), (double) (var15 * 120.0F), (double) (-var15 * 40.0F * var24[3]));
|
var23.addVertex((double) (var14 * 120.0F), (double) (var15 * 120.0F), (double) (var15 * 40.0F * var24[3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
var23.draw();
|
var23.draw();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user