This commit is contained in:
catfoolyou 2025-05-08 10:42:58 -04:00
parent e042c6ff4b
commit e0dded89fb
42 changed files with 2126 additions and 583 deletions

View File

@ -1,2 +1,2 @@
#!/bin/sh
java -Xmx4G -Xms4G -Djava.library.path=. -cp "eaglercraft.jar:UnsafeMemcpy.jar:lwjgl.jar:lwjgl-egl.jar:lwjgl-glfw.jar:lwjgl-jemalloc.jar:lwjgl-openal.jar:lwjgl-opengles.jar:soundsystem-20120107.jar:codecjorbis-20101023.jar:codecwav-20101023.jar:Java-WebSocket-1.5.1-with-dependencies.jar" net.lax1dude.eaglercraft.internal.LWJGLEntryPoint
java -Xmx4G -Xms4G -Djava.library.path=. -cp "eaglercraft.jar:UnsafeMemcpy.jar:lwjgl.jar:lwjgl-egl.jar:lwjgl-glfw.jar:lwjgl-jemalloc.jar:lwjgl-openal.jar:lwjgl-opengles.jar:soundsystem-20120107.jar:codecjorbis-20101023.jar:codecwav-20101023.jar:Java-WebSocket-1.5.1-with-dependencies.jar" net.lax1dude.eaglercraft.internal.MainClass

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,32 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_IN(vec2, v_texCoord2f)
EAGLER_IN(vec4, v_color4f)
EAGLER_FRAG_OUT()
uniform sampler2D u_inputTexture;
uniform vec4 u_colorBias4f;
void main() {
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, v_texCoord2f) * v_color4f + u_colorBias4f;
if(EAGLER_FRAG_COLOR.a < 0.004) {
discard;
}
}

View File

@ -0,0 +1,50 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_VSH_LAYOUT_BEGIN()
EAGLER_IN(0, vec3, a_position3f)
EAGLER_IN(1, vec2, c_position2i)
EAGLER_IN(2, vec2, c_coords2i)
EAGLER_IN(3, vec4, c_color4f)
EAGLER_VSH_LAYOUT_END()
EAGLER_OUT(vec2, v_texCoord2f)
EAGLER_OUT(vec4, v_color4f)
uniform mat4 u_matrixTransform;
uniform vec2 u_charSize2f;
uniform vec2 u_charCoordSize2f;
uniform vec4 u_color4f;
void main() {
v_color4f = c_color4f.bgra;
float shadowBit = a_position3f.z;
float boldBit = shadowBit >= 0.5 ? 1.0 : 0.0;
shadowBit -= boldBit * 0.5;
v_color4f.rgb *= (1.0 - shadowBit * 3.0);
v_texCoord2f = (c_coords2i + a_position3f.xy) * u_charCoordSize2f;
vec2 pos2d = c_position2i + vec2(shadowBit * 4.0);
pos2d += a_position3f.xy * u_charSize2f;
pos2d.x += boldBit;
float italicBit = v_color4f.a >= 0.5 ? 2.0 : 0.0;
v_color4f.a -= italicBit * 0.25;
pos2d.x -= (a_position3f.y - 0.5) * italicBit;
v_color4f.a *= 2.0;
v_color4f *= u_color4f;
EAGLER_VERT_POSITION = u_matrixTransform * vec4(pos2d, 0.0, 1.0);
}

View File

@ -0,0 +1,31 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_IN(vec2, v_texCoord2f)
EAGLER_IN(vec4, v_color4f)
EAGLER_FRAG_OUT()
uniform sampler2D u_inputTexture;
void main() {
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, v_texCoord2f) * v_color4f;
if(EAGLER_FRAG_COLOR.a < 0.004) {
discard;
}
}

View File

@ -0,0 +1,55 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_VSH_LAYOUT_BEGIN()
EAGLER_IN(0, vec2, a_position2f)
EAGLER_IN(1, vec3, p_position3f)
EAGLER_IN(2, vec2, p_texCoords2i)
EAGLER_IN(3, vec2, p_lightMap2f)
EAGLER_IN(4, vec2, p_particleSize_texCoordsSize_2i)
EAGLER_IN(5, vec4, p_color4f)
EAGLER_VSH_LAYOUT_END()
EAGLER_OUT(vec2, v_texCoord2f)
EAGLER_OUT(vec4, v_color4f)
uniform mat4 u_matrixTransform;
uniform vec3 u_texCoordSize2f_particleSize1f;
uniform vec3 u_transformParam_1_2_5_f;
uniform vec2 u_transformParam_3_4_f;
uniform vec4 u_color4f;
uniform sampler2D u_lightmapTexture;
void main() {
v_color4f = u_color4f * p_color4f.bgra * EAGLER_TEXTURE_2D(u_lightmapTexture, p_lightMap2f);
vec2 tex2f = a_position2f * 0.5 + 0.5;
tex2f.y = 1.0 - tex2f.y;
tex2f = p_texCoords2i + tex2f * p_particleSize_texCoordsSize_2i.y;
v_texCoord2f = tex2f * u_texCoordSize2f_particleSize1f.xy;
float particleSize = u_texCoordSize2f_particleSize1f.z * p_particleSize_texCoordsSize_2i.x;
vec3 pos3f = p_position3f;
vec2 spos2f = a_position2f * particleSize;
pos3f += u_transformParam_1_2_5_f * spos2f.xyy;
pos3f.zx += u_transformParam_3_4_f * spos2f;
EAGLER_VERT_POSITION = u_matrixTransform * vec4(pos3f, 1.0);
}

View File

@ -0,0 +1,199 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#if defined(COMPILE_ENABLE_TEX_GEN) || defined(COMPILE_ENABLE_FOG)
EAGLER_IN(vec4, v_position4f)
#endif
#ifdef COMPILE_TEXTURE_ATTRIB
EAGLER_IN(vec2, v_texture2f)
#endif
uniform vec4 u_color4f;
#ifdef COMPILE_BLEND_ADD
uniform vec4 u_colorBlendSrc4f;
uniform vec4 u_colorBlendAdd4f;
#endif
#ifdef COMPILE_COLOR_ATTRIB
EAGLER_IN(vec4, v_color4f)
#endif
#ifdef COMPILE_NORMAL_ATTRIB
EAGLER_IN(vec3, v_normal3f)
#endif
#ifdef COMPILE_LIGHTMAP_ATTRIB
EAGLER_IN(vec2, v_lightmap2f)
#endif
#ifdef COMPILE_ENABLE_TEXTURE2D
uniform sampler2D u_samplerTexture;
#if !defined(COMPILE_TEXTURE_ATTRIB) && !defined(COMPILE_ENABLE_TEX_GEN)
uniform vec2 u_textureCoords01;
#endif
#endif
#ifdef COMPILE_ENABLE_LIGHTMAP
uniform sampler2D u_samplerLightmap;
#ifndef COMPILE_LIGHTMAP_ATTRIB
uniform vec2 u_textureCoords02;
#endif
#endif
#ifdef COMPILE_ENABLE_ALPHA_TEST
uniform float u_alphaTestRef1f;
#endif
#ifdef COMPILE_ENABLE_MC_LIGHTING
uniform int u_lightsEnabled1i;
uniform vec4 u_lightsDirections4fv[4];
uniform vec3 u_lightsAmbient3f;
#ifndef COMPILE_NORMAL_ATTRIB
uniform vec3 u_uniformNormal3f;
#endif
#endif
#ifdef COMPILE_ENABLE_FOG
uniform vec4 u_fogParameters4f;
uniform vec4 u_fogColor4f;
#endif
#ifdef COMPILE_ENABLE_TEX_GEN
EAGLER_IN(vec3, v_objectPosition3f)
uniform ivec4 u_texGenPlane4i;
uniform vec4 u_texGenS4f;
uniform vec4 u_texGenT4f;
uniform vec4 u_texGenR4f;
uniform vec4 u_texGenQ4f;
uniform mat4 u_textureMat4f01;
#endif
#ifdef COMPILE_ENABLE_ANISOTROPIC_FIX
uniform vec2 u_textureAnisotropicFix;
#endif
EAGLER_FRAG_OUT()
void main() {
#ifdef COMPILE_COLOR_ATTRIB
vec4 color = v_color4f * u_color4f;
#else
vec4 color = u_color4f;
#endif
#ifdef COMPILE_ENABLE_TEX_GEN
vec4 tmpVec4 = vec4(v_objectPosition3f, 1.0);
vec4 texGenVector;
texGenVector.x = dot(u_texGenPlane4i.x == 1 ? v_position4f : tmpVec4, u_texGenS4f);
texGenVector.y = dot(u_texGenPlane4i.y == 1 ? v_position4f : tmpVec4, u_texGenT4f);
texGenVector.z = dot(u_texGenPlane4i.z == 1 ? v_position4f : tmpVec4, u_texGenR4f);
texGenVector.w = dot(u_texGenPlane4i.w == 1 ? v_position4f : tmpVec4, u_texGenQ4f);
#ifdef EAGLER_HAS_GLES_300
texGenVector.xyz = mat4x3(
u_textureMat4f01[0].xyw,
u_textureMat4f01[1].xyw,
u_textureMat4f01[2].xyw,
u_textureMat4f01[3].xyw
) * texGenVector;
texGenVector.xy /= texGenVector.z;
#else
texGenVector = u_textureMat4f01 * texGenVector;
texGenVector.xy /= texGenVector.w;
#endif
color *= EAGLER_TEXTURE_2D(u_samplerTexture, texGenVector.xy);
#ifdef COMPILE_ENABLE_ALPHA_TEST
if(color.a < u_alphaTestRef1f) discard;
#endif
#else
#ifdef COMPILE_ENABLE_TEXTURE2D
#ifdef COMPILE_TEXTURE_ATTRIB
#ifdef COMPILE_ENABLE_ANISOTROPIC_FIX
// d3d11 doesn't support GL_NEAREST upscaling with anisotropic
// filtering enabled, so it needs this stupid fix to 'work'
vec2 uv = floor(v_texture2f * u_textureAnisotropicFix) + 0.5;
color *= EAGLER_TEXTURE_2D(u_samplerTexture, uv / u_textureAnisotropicFix);
#else
color *= EAGLER_TEXTURE_2D(u_samplerTexture, v_texture2f);
#endif
#else
color *= EAGLER_TEXTURE_2D(u_samplerTexture, u_textureCoords01);
#endif
#endif
#ifdef COMPILE_ENABLE_LIGHTMAP
#ifdef COMPILE_LIGHTMAP_ATTRIB
color *= EAGLER_TEXTURE_2D(u_samplerLightmap, v_lightmap2f);
#else
color *= EAGLER_TEXTURE_2D(u_samplerLightmap, u_textureCoords02);
#endif
#endif
#ifdef COMPILE_BLEND_ADD
color = color * u_colorBlendSrc4f + u_colorBlendAdd4f;
#endif
#ifdef COMPILE_ENABLE_ALPHA_TEST
if(color.a < u_alphaTestRef1f) discard;
#endif
#endif
#ifdef COMPILE_ENABLE_MC_LIGHTING
#ifdef COMPILE_NORMAL_ATTRIB
vec3 normal = normalize(v_normal3f);
#else
vec3 normal = u_uniformNormal3f;
#endif
float diffuse = 0.0;
vec4 light;
#ifdef EAGLER_HAS_GLES_300
for(int i = 0; i < u_lightsEnabled1i; ++i) {
#else
for(int i = 0; i < 4; ++i) {
#endif
light = u_lightsDirections4fv[i];
diffuse += max(dot(light.xyz, normal), 0.0) * light.w;
#ifndef EAGLER_HAS_GLES_300
if(i + 1 >= u_lightsEnabled1i) {
break;
}
#endif
}
color.rgb *= min(u_lightsAmbient3f + vec3(diffuse), 1.0);
#endif
#ifdef COMPILE_ENABLE_FOG
vec3 fogPos = v_position4f.xyz / v_position4f.w;
float dist = length(fogPos);
float fogDensity = u_fogParameters4f.y;
float fogStart = u_fogParameters4f.z;
float fogEnd = u_fogParameters4f.w;
float f = u_fogParameters4f.x > 0.0 ? 1.0 - exp(-fogDensity * dist) :
(dist - fogStart) / (fogEnd - fogStart);
color.rgb = mix(color.rgb, u_fogColor4f.rgb, clamp(f, 0.0, 1.0) * u_fogColor4f.a);
#endif
EAGLER_FRAG_COLOR = color;
}

View File

@ -0,0 +1,99 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_IN_AUTO(vec3, a_position3f)
#if defined(COMPILE_ENABLE_TEX_GEN) || defined(COMPILE_ENABLE_FOG)
#define _COMPILE_VARYING_POSITION
#endif
#ifdef _COMPILE_VARYING_POSITION
EAGLER_OUT(vec4, v_position4f)
#endif
#ifdef COMPILE_ENABLE_TEX_GEN
EAGLER_OUT(vec3, v_objectPosition3f)
#endif
#ifdef COMPILE_TEXTURE_ATTRIB
EAGLER_IN_AUTO(vec2, a_texture2f)
EAGLER_OUT(vec2, v_texture2f)
uniform mat4 u_textureMat4f01;
#endif
#ifdef COMPILE_COLOR_ATTRIB
EAGLER_IN_AUTO(vec4, a_color4f)
EAGLER_OUT(vec4, v_color4f)
#endif
#ifdef COMPILE_NORMAL_ATTRIB
EAGLER_IN_AUTO(vec4, a_normal4f)
EAGLER_OUT(vec3, v_normal3f)
#endif
#ifdef COMPILE_LIGHTMAP_ATTRIB
EAGLER_IN_AUTO(vec2, a_lightmap2f)
EAGLER_OUT(vec2, v_lightmap2f)
uniform mat4 u_textureMat4f02;
#endif
#ifdef _COMPILE_VARYING_POSITION
uniform mat4 u_modelviewMat4f;
uniform mat4 u_projectionMat4f;
#else
uniform mat4 u_modelviewProjMat4f;
#ifdef COMPILE_NORMAL_ATTRIB
uniform mat4 u_modelviewMat4f;
#endif
#endif
#define TEX_MAT3(mat4In) mat3(mat4In[0].xyw,mat4In[1].xyw,mat4In[3].xyw)
void main() {
#ifdef COMPILE_ENABLE_TEX_GEN
v_objectPosition3f = a_position3f;
#endif
#ifdef _COMPILE_VARYING_POSITION
v_position4f = u_modelviewMat4f * vec4(a_position3f, 1.0);
#endif
#ifdef COMPILE_TEXTURE_ATTRIB
vec3 v_textureTmp3f = TEX_MAT3(u_textureMat4f01) * vec3(a_texture2f, 1.0);
v_texture2f = v_textureTmp3f.xy / v_textureTmp3f.z;
#endif
#ifdef COMPILE_COLOR_ATTRIB
v_color4f = a_color4f;
#endif
#ifdef COMPILE_NORMAL_ATTRIB
v_normal3f = normalize(mat3(u_modelviewMat4f) * a_normal4f.xyz);
#endif
#ifdef COMPILE_LIGHTMAP_ATTRIB
vec3 v_lightmapTmp3f = TEX_MAT3(u_textureMat4f02) * vec3(a_lightmap2f, 1.0);
v_lightmap2f = v_lightmapTmp3f.xy / v_lightmapTmp3f.z;
#endif
#ifdef _COMPILE_VARYING_POSITION
EAGLER_VERT_POSITION = u_projectionMat4f * v_position4f;
#else
EAGLER_VERT_POSITION = u_modelviewProjMat4f * vec4(a_position3f, 1.0);
#endif
}

View File

@ -0,0 +1,98 @@
#line 2 6969
/*
* Copyright (c) 2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifdef EAGLER_HAS_GLES_300
// For GLES 3.00+ (WebGL 2.0)
#ifdef EAGLER_IS_VERTEX_SHADER
// Vertex Shaders:
#define EAGLER_VSH_LAYOUT_BEGIN()
#define EAGLER_VSH_LAYOUT_END()
#define EAGLER_IN(_loc, _type, _name) layout(location = _loc) in _type _name;
#define EAGLER_IN_AUTO(_type, _name) in _type _name;
#define EAGLER_OUT(_type, _name) out _type _name;
#define EAGLER_VERT_POSITION gl_Position
#else
#ifdef EAGLER_IS_FRAGMENT_SHADER
// Fragment Shaders:
#define EAGLER_IN(_type, _name) in _type _name;
#define EAGLER_FRAG_COLOR eagler_FragColor
#define EAGLER_FRAG_DEPTH gl_FragDepth
#define EAGLER_FRAG_OUT() layout(location = 0) out vec4 EAGLER_FRAG_COLOR;
#endif
#endif
// All Shaders:
#define EAGLER_TEXTURE_2D(tex, coord2f) texture(tex, coord2f)
#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) textureLod(_tex, _coord2f, _lod1f)
#define EAGLER_HAS_TEXTURE_2D_LOD
#else
#ifdef EAGLER_HAS_GLES_200
// For GLES 2.00 (WebGL 1.0)
#ifdef EAGLER_IS_VERTEX_SHADER
// Vertex Shaders:
#define EAGLER_VSH_LAYOUT_BEGIN()
#define EAGLER_VSH_LAYOUT_END()
#define EAGLER_IN(_loc, _type, _name) attribute _type _name;
#define EAGLER_IN_AUTO(_type, _name) attribute _type _name;
#define EAGLER_OUT(_type, _name) varying _type _name;
#define EAGLER_VERT_POSITION gl_Position
#else
#ifdef EAGLER_IS_FRAGMENT_SHADER
// Fragment Shaders:
#define EAGLER_IN(_type, _name) varying _type _name;
#define EAGLER_FRAG_COLOR gl_FragColor
// TODO: Must require EXT_frag_depth to use this on GLES 2.0 (currently not needed)
#define EAGLER_FRAG_DEPTH gl_FragDepth
#define EAGLER_FRAG_OUT()
#endif
#endif
// All Shaders:
#define EAGLER_TEXTURE_2D(_tex, _coord2f) texture2D(_tex, _coord2f)
#ifdef EAGLER_HAS_GLES_200_SHADER_TEXTURE_LOD
#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) texture2DLodEXT(_tex, _coord2f, _lod1f)
#define EAGLER_HAS_TEXTURE_2D_LOD
#else
// Beware!
#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) texture2D(_tex, _coord2f)
#define EAGLER_HAS_TEXTURE_2D_LOD
#endif
#else
#error Unable to determine API version! (Missing directive EAGLER_HAS_GLES_200 or 300)
#endif
#endif
#line 1 0

View File

@ -0,0 +1,55 @@
#line 2
/*
* Copyright (c) 2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_IN(vec2, v_position2f)
EAGLER_FRAG_OUT()
uniform sampler2D u_inputTexture;
uniform mat4 u_textureMatrix;
vec2 rand(in vec2 co){
float f = dot(co, vec2(12.98984576, 78.23378678));
return fract(vec2(sin(f + 0.32490982), cos(f - 0.69890)) * 43758.54576873);
}
void main() {
vec4 coords4f = vec4(v_position2f.x * 0.25 - 0.125, v_position2f.y * 0.25 - 0.125, v_position2f.y * 10.0 - 9.0, 1.0);
coords4f = u_textureMatrix * coords4f;
coords4f.xy /= coords4f.w;
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, coords4f.xy * 0.5 + 0.5);
EAGLER_FRAG_COLOR.rg += rand(v_position2f * 1.2344574345) * 0.05;
EAGLER_FRAG_COLOR.ba -= rand(v_position2f * 1.2343525225) * 0.05;
EAGLER_FRAG_COLOR.a = fract(sin(dot(coords4f.yz, vec2(12.9898, 78.233))) * 43758.5453);
EAGLER_FRAG_COLOR.a += exp(length(rand(coords4f.xw)) * -69.420);
EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(1.0 / 2.423952));
EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(5.4523856));
EAGLER_FRAG_COLOR += 0.00004423 + EAGLER_FRAG_COLOR.a * 0.02;
EAGLER_FRAG_COLOR = sqrt(EAGLER_FRAG_COLOR);
EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(1.0 / 1.9023576));
#ifdef EAGLER_HAS_GLES_300
EAGLER_FRAG_COLOR.ra += tanh(fract(EAGLER_FRAG_COLOR.a * 32.324834)) * 0.1012426;
#endif
EAGLER_FRAG_COLOR.b *= 0.934924;
EAGLER_FRAG_COLOR.b += (1.23213 / inversesqrt(EAGLER_FRAG_COLOR.a)) * 0.156365;
EAGLER_FRAG_COLOR.ga += rand(gl_FragCoord.xy) * 0.13423567;
EAGLER_FRAG_COLOR.rb += gl_PointCoord * 0.0124264565;
#ifdef EAGLER_HAS_GLES_300
EAGLER_FRAG_COLOR *= 0.95234 + asinh(EAGLER_FRAG_COLOR.g * 5.23423) * 0.0254325;
#endif
}

View File

@ -0,0 +1,28 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_VSH_LAYOUT_BEGIN()
EAGLER_IN(0, vec2, a_position2f)
EAGLER_VSH_LAYOUT_END()
EAGLER_OUT(vec2, v_position2f)
void main() {
v_position2f = a_position2f * 0.5 + 0.5;
EAGLER_VERT_POSITION = vec4(a_position2f, 0.0, 1.0);
}

View File

@ -0,0 +1,369 @@
#line 2
// Remove this line below if you plan to modify this file
#ifndef EAGLER_IS_GLES_200
#define USE_OPTIMIZED
#endif
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
/*
* This file was modified by lax1dude to remove dead code
*
* Original: https://gist.github.com/kosua20/0c506b81b3812ac900048059d2383126
*
*/
/*
* ============================================================================
*
*
* NVIDIA FXAA 3.11 by TIMOTHY LOTTES
*
*
* ------------------------------------------------------------------------------
* COPYRIGHT (C) 2010, 2011 NVIDIA CORPORATION. ALL RIGHTS RESERVED.
* ------------------------------------------------------------------------------
* TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
* *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
* OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA
* OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
* CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
* LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
* OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
* THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGES.
*
*/
EAGLER_IN(vec2, v_position2f)
EAGLER_FRAG_OUT()
uniform sampler2D u_screenTexture;
uniform vec2 u_screenSize2f;
#ifndef USE_OPTIMIZED
#ifndef FXAA_GREEN_AS_LUMA
// For those using non-linear color,
// and either not able to get luma in alpha, or not wanting to,
// this enables FXAA to run using green as a proxy for luma.
// So with this enabled, no need to pack luma in alpha.
//
// This will turn off AA on anything which lacks some amount of green.
// Pure red and blue or combination of only R and B, will get no AA.
//
// Might want to lower the settings for both,
// fxaaConsoleEdgeThresholdMin
// fxaaQualityEdgeThresholdMin
// In order to insure AA does not get turned off on colors
// which contain a minor amount of green.
//
// 1 = On.
// 0 = Off.
//
#define FXAA_GREEN_AS_LUMA 0
#endif
#ifndef FXAA_DISCARD
// 1 = Use discard on pixels which don't need AA.
// 0 = Return unchanged color on pixels which don't need AA.
#define FXAA_DISCARD 0
#endif
/*============================================================================
API PORTING
============================================================================*/
#define FxaaBool bool
#define FxaaDiscard discard
#define FxaaFloat float
#define FxaaFloat2 vec2
#define FxaaFloat3 vec3
#define FxaaFloat4 vec4
#define FxaaHalf float
#define FxaaHalf2 vec2
#define FxaaHalf3 vec3
#define FxaaHalf4 vec4
#define FxaaInt2 ivec2
#define FxaaSat(x) clamp(x, 0.0, 1.0)
#define FxaaTex sampler2D
/*--------------------------------------------------------------------------*/
#define FxaaTexTop(t, p) EAGLER_TEXTURE_2D_LOD(t, p, 0.0)
/*============================================================================
GREEN AS LUMA OPTION SUPPORT FUNCTION
============================================================================*/
#if (FXAA_GREEN_AS_LUMA == 0)
FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return dot(rgba.xyz * rgba.xyz, vec3(0.299, 0.587, 0.114)); }
#else
FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
#endif
/*============================================================================
FXAA3 CONSOLE - PC VERSION
============================================================================*/
/*--------------------------------------------------------------------------*/
FxaaFloat4 FxaaPixelShader(
// See FXAA Quality FxaaPixelShader() source for docs on Inputs!
//
// Use noperspective interpolation here (turn off perspective interpolation).
// {xy} = center of pixel
FxaaFloat2 pos,
//
// Used only for FXAA Console, and not used on the 360 version.
// Use noperspective interpolation here (turn off perspective interpolation).
// {xy__} = upper left of pixel
// {__zw} = lower right of pixel
FxaaFloat4 fxaaConsolePosPos,
//
// Input color texture.
// {rgb_} = color in linear or perceptual color space
// if (FXAA_GREEN_AS_LUMA == 0)
// {___a} = luma in perceptual color space (not linear)
FxaaTex tex,
//
// Only used on FXAA Console.
// This must be from a constant/uniform.
// This effects sub-pixel AA quality and inversely sharpness.
// Where N ranges between,
// N = 0.50 (default)
// N = 0.33 (sharper)
// {x___} = -N/screenWidthInPixels
// {_y__} = -N/screenHeightInPixels
// {__z_} = N/screenWidthInPixels
// {___w} = N/screenHeightInPixels
FxaaFloat4 fxaaConsoleRcpFrameOpt,
//
// Only used on FXAA Console.
// Not used on 360, but used on PS3 and PC.
// This must be from a constant/uniform.
// {x___} = -2.0/screenWidthInPixels
// {_y__} = -2.0/screenHeightInPixels
// {__z_} = 2.0/screenWidthInPixels
// {___w} = 2.0/screenHeightInPixels
FxaaFloat4 fxaaConsoleRcpFrameOpt2,
//
// Only used on FXAA Console.
// This used to be the FXAA_CONSOLE__EDGE_SHARPNESS define.
// It is here now to allow easier tuning.
// This does not effect PS3, as this needs to be compiled in.
// Use FXAA_CONSOLE__PS3_EDGE_SHARPNESS for PS3.
// Due to the PS3 being ALU bound,
// there are only three safe values here: 2 and 4 and 8.
// These options use the shaders ability to a free *|/ by 2|4|8.
// For all other platforms can be a non-power of two.
// 8.0 is sharper (default!!!)
// 4.0 is softer
// 2.0 is really soft (good only for vector graphics inputs)
FxaaFloat fxaaConsoleEdgeSharpness,
//
// Only used on FXAA Console.
// This used to be the FXAA_CONSOLE__EDGE_THRESHOLD define.
// It is here now to allow easier tuning.
// This does not effect PS3, as this needs to be compiled in.
// Use FXAA_CONSOLE__PS3_EDGE_THRESHOLD for PS3.
// Due to the PS3 being ALU bound,
// there are only two safe values here: 1/4 and 1/8.
// These options use the shaders ability to a free *|/ by 2|4|8.
// The console setting has a different mapping than the quality setting.
// Other platforms can use other values.
// 0.125 leaves less aliasing, but is softer (default!!!)
// 0.25 leaves more aliasing, and is sharper
FxaaFloat fxaaConsoleEdgeThreshold,
//
// Only used on FXAA Console.
// This used to be the FXAA_CONSOLE__EDGE_THRESHOLD_MIN define.
// It is here now to allow easier tuning.
// Trims the algorithm from processing darks.
// The console setting has a different mapping than the quality setting.
// This does not apply to PS3,
// PS3 was simplified to avoid more shader instructions.
// 0.06 - faster but more aliasing in darks
// 0.05 - default
// 0.04 - slower and less aliasing in darks
// Special notes when using FXAA_GREEN_AS_LUMA,
// Likely want to set this to zero.
// As colors that are mostly not-green
// will appear very dark in the green channel!
// Tune by looking at mostly non-green content,
// then start at zero and increase until aliasing is a problem.
FxaaFloat fxaaConsoleEdgeThresholdMin
) {
/*--------------------------------------------------------------------------*/
FxaaFloat lumaNw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xy));
FxaaFloat lumaSw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xw));
FxaaFloat lumaNe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zy));
FxaaFloat lumaSe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zw));
/*--------------------------------------------------------------------------*/
FxaaFloat4 rgbyM = FxaaTexTop(tex, pos.xy);
#if (FXAA_GREEN_AS_LUMA == 0)
// TODO Luma
FxaaFloat lumaM = FxaaLuma(rgbyM);
#else
FxaaFloat lumaM = rgbyM.y;
#endif
/*--------------------------------------------------------------------------*/
FxaaFloat lumaMaxNwSw = max(lumaNw, lumaSw);
lumaNe += 1.0/384.0;
FxaaFloat lumaMinNwSw = min(lumaNw, lumaSw);
/*--------------------------------------------------------------------------*/
FxaaFloat lumaMaxNeSe = max(lumaNe, lumaSe);
FxaaFloat lumaMinNeSe = min(lumaNe, lumaSe);
/*--------------------------------------------------------------------------*/
FxaaFloat lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);
FxaaFloat lumaMin = min(lumaMinNeSe, lumaMinNwSw);
/*--------------------------------------------------------------------------*/
FxaaFloat lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;
/*--------------------------------------------------------------------------*/
FxaaFloat lumaMinM = min(lumaMin, lumaM);
FxaaFloat lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);
FxaaFloat lumaMaxM = max(lumaMax, lumaM);
FxaaFloat dirSwMinusNe = lumaSw - lumaNe;
FxaaFloat lumaMaxSubMinM = lumaMaxM - lumaMinM;
FxaaFloat dirSeMinusNw = lumaSe - lumaNw;
if(lumaMaxSubMinM < lumaMaxScaledClamped)
{
#if (FXAA_DISCARD == 1)
FxaaDiscard;
#else
return rgbyM;
#endif
}
/*--------------------------------------------------------------------------*/
FxaaFloat2 dir;
dir.x = dirSwMinusNe + dirSeMinusNw;
dir.y = dirSwMinusNe - dirSeMinusNw;
/*--------------------------------------------------------------------------*/
FxaaFloat2 dir1 = normalize(dir.xy);
FxaaFloat4 rgbyN1 = FxaaTexTop(tex, pos.xy - dir1 * fxaaConsoleRcpFrameOpt.zw);
FxaaFloat4 rgbyP1 = FxaaTexTop(tex, pos.xy + dir1 * fxaaConsoleRcpFrameOpt.zw);
/*--------------------------------------------------------------------------*/
FxaaFloat dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;
FxaaFloat2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
/*--------------------------------------------------------------------------*/
FxaaFloat2 dir2x = dir2 * fxaaConsoleRcpFrameOpt2.zw;
FxaaFloat4 rgbyN2 = FxaaTexTop(tex, pos.xy - dir2x);
FxaaFloat4 rgbyP2 = FxaaTexTop(tex, pos.xy + dir2x);
/*--------------------------------------------------------------------------*/
FxaaFloat4 rgbyA = rgbyN1 + rgbyP1;
FxaaFloat4 rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);
/*--------------------------------------------------------------------------*/
#if (FXAA_GREEN_AS_LUMA == 0)
// TODO Luma
float lumaB = FxaaLuma(rgbyB);
#else
float lumaB = rgbyB.y;
#endif
if((lumaB < lumaMin) || (lumaB > lumaMax))
rgbyB.xyz = rgbyA.xyz * 0.5;
//
return rgbyB;
}
/*==========================================================================*/
#define edgeSharpness 3.0
#define edgeThreshold 0.15
#define edgeThresholdMin 0.05
void main(){
vec2 screenSize05 = 0.5 * u_screenSize2f;
vec4 posPos;
posPos.xy = v_position2f;
posPos.zw = v_position2f + u_screenSize2f;
vec4 rcpFrameOpt;
rcpFrameOpt.xy = -screenSize05;
rcpFrameOpt.zw = screenSize05;
EAGLER_FRAG_COLOR = vec4(FxaaPixelShader(v_position2f + screenSize05, posPos, u_screenTexture, rcpFrameOpt, rcpFrameOpt * 4.0, edgeSharpness, edgeThreshold, edgeThresholdMin).rgb, 1.0);
}
#else
// This 'optimized' code was generated using glslangValidator + spirv-cross + spirv-opt on the source code above
// Is it faster? Idfk, probably compiles faster at least, what matters it I tried
float _616;
void main()
{
mediump vec2 _257 = u_screenSize2f * 0.5;
mediump vec4 _611 = vec4(v_position2f, v_position2f + u_screenSize2f);
mediump vec4 _612 = vec4(_616, _616, _257);
mediump vec2 _290 = v_position2f + _257;
mediump vec4 _608;
for(;;)
{
mediump vec3 _532 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.xy, 0.0).xyz;
mediump float _536 = dot(_532 * _532, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
mediump vec3 _540 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.xw, 0.0).xyz;
mediump float _544 = dot(_540 * _540, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
mediump vec3 _548 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.zy, 0.0).xyz;
mediump vec3 _556 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.zw, 0.0).xyz;
mediump float _560 = dot(_556 * _556, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
mediump vec4 _390 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _290, 0.0);
mediump vec3 _564 = _390.xyz;
mediump float _568 = dot(_564 * _564, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
mediump float _397 = dot(_548 * _548, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)) + 0.00260416674427688121795654296875;
mediump float _409 = max(max(_397, _560), max(_536, _544));
mediump float _412 = min(min(_397, _560), min(_536, _544));
mediump float _427 = _544 - _397;
mediump float _433 = _560 - _536;
if ((max(_409, _568) - min(_412, _568)) < max(0.0500000007450580596923828125, _409 * 0.1500000059604644775390625))
{
_608 = _390;
break;
}
mediump vec2 _449 = normalize(vec2(_427 + _433, _427 - _433));
vec2 hp_copy_449 = _449;
mediump vec2 _454 = _612.zw;
vec2 _614 = -hp_copy_449;
mediump vec2 mp_copy_614 = _614;
mediump vec2 _481 = clamp(_449 / vec2(min(abs(_449.x), abs(_449.y)) * 3.0), vec2(-2.0), vec2(2.0));
vec2 hp_copy_481 = _481;
mediump vec2 _484 = (_612 * 4.0).zw;
vec2 _615 = -hp_copy_481;
mediump vec2 mp_copy_615 = _615;
mediump vec4 _498 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, mp_copy_614 * _454 + _290, 0.0) + EAGLER_TEXTURE_2D_LOD(u_screenTexture, _449 * _454 + _290, 0.0);
mediump vec4 _505 = ((EAGLER_TEXTURE_2D_LOD(u_screenTexture, mp_copy_615 * _484 + _290, 0.0) + EAGLER_TEXTURE_2D_LOD(u_screenTexture, _481 * _484 + _290, 0.0)) * 0.25) + (_498 * 0.25);
mediump float _576 = dot(_505.xyz * _505.xyz, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
mediump vec4 _607;
if ((_576 < _412) || (_576 > _409))
{
mediump vec3 _518 = _498.xyz * 0.5;
mediump vec4 _600;
_600.x = _518.x;
_600.y = _518.y;
_600.z = _518.z;
_607 = _600;
}
else
{
_607 = _505;
}
_608 = _607;
break;
}
EAGLER_FRAG_COLOR = vec4(_608.xyz, 1.0);
}
#endif

View File

@ -0,0 +1,43 @@
#line 2
/*
* Copyright (c) 2023-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_IN(vec2, v_texCoords2f)
#ifndef COMPILE_BLIT_DEPTH
EAGLER_FRAG_OUT()
#endif
uniform sampler2D u_inputTexture;
uniform float u_textureLod1f;
#ifdef COMPILE_PIXEL_ALIGNMENT
uniform vec4 u_pixelAlignmentSizes4f;
uniform vec2 u_pixelAlignmentOffset2f;
#endif
void main() {
vec2 uv2f = v_texCoords2f;
#ifdef COMPILE_PIXEL_ALIGNMENT
uv2f = (floor(uv2f * u_pixelAlignmentSizes4f.xy) + u_pixelAlignmentOffset2f) * u_pixelAlignmentSizes4f.zw;
#endif
#ifndef COMPILE_BLIT_DEPTH
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D_LOD(u_inputTexture, uv2f, u_textureLod1f);
#else
EAGLER_FRAG_DEPTH = EAGLER_TEXTURE_2D_LOD(u_inputTexture, uv2f, u_textureLod1f).r;
#endif
}

View File

@ -0,0 +1,32 @@
#line 2
/*
* Copyright (c) 2023-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_VSH_LAYOUT_BEGIN()
EAGLER_IN(0, vec2, a_position2f)
EAGLER_VSH_LAYOUT_END()
EAGLER_OUT(vec2, v_texCoords2f)
uniform vec4 u_srcCoords4f;
uniform vec4 u_dstCoords4f;
void main() {
vec2 uv = a_position2f * 0.5 + 0.5;
v_texCoords2f = u_srcCoords4f.xy + u_srcCoords4f.zw * uv;
EAGLER_VERT_POSITION = vec4(u_dstCoords4f.xy + u_dstCoords4f.zw * uv, 0.0, 1.0);
}

View File

@ -0,0 +1,33 @@
#line 2
/*
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
EAGLER_IN(vec2, v_position2f)
EAGLER_FRAG_OUT()
uniform sampler2D u_inputTexture;
uniform float u_textureLod1f;
uniform vec4 u_blendFactor4f;
uniform vec4 u_blendBias4f;
uniform mat3 u_matrixTransform;
void main() {
vec3 coords = u_matrixTransform * vec3(v_position2f, 1.0);
vec4 color4f = EAGLER_TEXTURE_2D_LOD(u_inputTexture, coords.xy, u_textureLod1f);
EAGLER_FRAG_COLOR = color4f * u_blendFactor4f + u_blendBias4f;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -15,7 +15,6 @@ import net.minecraft.src.EnumOS;
import net.minecraft.src.FontRenderer;
import net.minecraft.src.GLAllocation;
import net.minecraft.src.GameSettings;
import net.minecraft.src.GameWindowListener;
import net.minecraft.src.GuiChat;
import net.minecraft.src.GuiConflictWarning;
import net.minecraft.src.GuiConnecting;
@ -36,7 +35,6 @@ import net.minecraft.src.ModelBiped;
import net.minecraft.src.MouseHelper;
import net.minecraft.src.MovementInputFromOptions;
import net.minecraft.src.MovingObjectPosition;
import net.minecraft.src.OpenGlCapsChecker;
import net.minecraft.src.PlayerController;
import net.minecraft.src.PlayerControllerCreative;
import net.minecraft.src.RenderEngine;
@ -54,7 +52,6 @@ import net.minecraft.src.TextureWaterFX;
import net.minecraft.src.TextureWaterFlowFX;
import net.minecraft.src.ThreadSleepForever;
import net.minecraft.src.Timer;
import net.minecraft.src.UnexpectedThrowable;
import net.minecraft.src.Vec3D;
import net.minecraft.src.World;
import net.minecraft.src.WorldRenderer;
@ -72,7 +69,6 @@ public class Minecraft implements Runnable {
public int displayHeight;
public float dpi;
public int debugFPS;
private OpenGlCapsChecker glCapabilities;
private Timer timer = new Timer(20.0F);
public World theWorld;
public RenderGlobal renderGlobal;
@ -117,6 +113,8 @@ public class Minecraft implements Runnable {
public ScaledResolution scaledResolution = null;
private static Minecraft theMinecraft;
public Minecraft() {
this.tempDisplayWidth = 640;
this.tempDisplayHeight = 480;
@ -124,6 +122,11 @@ public class Minecraft implements Runnable {
new ThreadSleepForever(this, "Timer hack thread");
this.displayWidth = 640;
this.displayHeight = 480;
theMinecraft = this;
}
public static Minecraft getMinecraft(){
return theMinecraft;
}
public void updateDisplay() {
@ -191,7 +194,7 @@ public class Minecraft implements Runnable {
GL11.glLoadIdentity();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
this.checkGLError("Startup");
this.glCapabilities = new OpenGlCapsChecker();
// this.glCapabilities = new OpenGlCapsChecker();
this.sndManager.loadSoundSettings(this.options);
this.renderEngine.registerTextureFX(this.textureLavaFX);
this.renderEngine.registerTextureFX(this.textureWaterFX);
@ -1035,10 +1038,6 @@ public class Minecraft implements Runnable {
//
// }
public OpenGlCapsChecker getOpenGlCapsChecker() {
return this.glCapabilities;
}
public String debugInfoRenders() {
return this.renderGlobal.getDebugInfoRenders();
}

View File

@ -1,378 +0,0 @@
package net.minecraft.src;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferStrategy;
import java.awt.image.ImageObserver;
import java.io.File;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class CanvasIsomPreview extends Canvas implements KeyListener, MouseListener, MouseMotionListener, Runnable {
private int currentRender = 0;
private int zoomLevel = 2;
private boolean displayHelpText = true;
private World level;
private File dataFolder = this.getWorkingDirectory();
private boolean running = true;
private List zonesToRender = Collections.synchronizedList(new LinkedList());
private IsoImageBuffer[][] zoneMap = new IsoImageBuffer[64][64];
private int translateX;
private int translateY;
private int xPosition;
private int yPosition;
public File getWorkingDirectory() {
if(this.dataFolder == null) {
this.dataFolder = this.getWorkingDirectory("minecraft");
}
return this.dataFolder;
}
public File getWorkingDirectory(String var1) {
String var2 = System.getProperty("user.home", ".");
File var3;
switch(OSMapIsom.osValues[getPlatform().ordinal()]) {
case 1:
case 2:
var3 = new File(var2, '.' + var1 + '/');
break;
case 3:
String var4 = System.getenv("APPDATA");
if(var4 != null) {
var3 = new File(var4, "." + var1 + '/');
} else {
var3 = new File(var2, '.' + var1 + '/');
}
break;
case 4:
var3 = new File(var2, "Library/Application Support/" + var1);
break;
default:
var3 = new File(var2, var1 + '/');
}
if(!var3.exists() && !var3.mkdirs()) {
throw new RuntimeException("The working directory could not be created: " + var3);
} else {
return var3;
}
}
private static EnumOSIsom getPlatform() {
String var0 = System.getProperty("os.name").toLowerCase();
return var0.contains("win") ? EnumOSIsom.windows : (var0.contains("mac") ? EnumOSIsom.macos : (var0.contains("solaris") ? EnumOSIsom.solaris : (var0.contains("sunos") ? EnumOSIsom.solaris : (var0.contains("linux") ? EnumOSIsom.linux : (var0.contains("unix") ? EnumOSIsom.linux : EnumOSIsom.unknown)))));
}
public CanvasIsomPreview() {
for(int var1 = 0; var1 < 64; ++var1) {
for(int var2 = 0; var2 < 64; ++var2) {
this.zoneMap[var1][var2] = new IsoImageBuffer((World)null, var1, var2);
}
}
this.addMouseListener(this);
this.addMouseMotionListener(this);
this.addKeyListener(this);
this.setFocusable(true);
this.requestFocus();
this.setBackground(Color.red);
}
public void loadLevel(String var1) {
this.translateX = this.translateY = 0;
this.level = new WorldIso(this, new File(this.dataFolder, "saves"), var1);
this.level.skylightSubtracted = 0;
List var2 = this.zonesToRender;
synchronized(var2) {
this.zonesToRender.clear();
for(int var3 = 0; var3 < 64; ++var3) {
for(int var4 = 0; var4 < 64; ++var4) {
this.zoneMap[var3][var4].setLevel(this.level, var3, var4);
}
}
}
}
private void setBrightness(int var1) {
List var2 = this.zonesToRender;
synchronized(var2) {
this.level.skylightSubtracted = var1;
this.zonesToRender.clear();
for(int var3 = 0; var3 < 64; ++var3) {
for(int var4 = 0; var4 < 64; ++var4) {
this.zoneMap[var3][var4].setLevel(this.level, var3, var4);
}
}
}
}
public void start() {
(new ThreadRunIsoClient(this)).start();
for(int var1 = 0; var1 < 8; ++var1) {
(new Thread(this)).start();
}
}
public void stop() {
this.running = false;
}
private IsoImageBuffer getZone(int var1, int var2) {
int var3 = var1 & 63;
int var4 = var2 & 63;
IsoImageBuffer var5 = this.zoneMap[var3][var4];
if(var5.x == var1 && var5.y == var2) {
return var5;
} else {
List var6 = this.zonesToRender;
synchronized(var6) {
this.zonesToRender.remove(var5);
}
var5.init(var1, var2);
return var5;
}
}
public void run() {
TerrainTextureManager var1 = new TerrainTextureManager();
while(this.running) {
IsoImageBuffer var2 = null;
List var3 = this.zonesToRender;
synchronized(var3) {
if(this.zonesToRender.size() > 0) {
var2 = (IsoImageBuffer)this.zonesToRender.remove(0);
}
}
if(var2 != null) {
if(this.currentRender - var2.lastVisible < 2) {
var1.render(var2);
this.repaint();
} else {
var2.addedToRenderQueue = false;
}
}
try {
Thread.sleep(2L);
} catch (InterruptedException var5) {
var5.printStackTrace();
}
}
}
public void update(Graphics var1) {
}
public void paint(Graphics var1) {
}
public void render() {
BufferStrategy var1 = this.getBufferStrategy();
if(var1 == null) {
this.createBufferStrategy(2);
} else {
this.render((Graphics2D)var1.getDrawGraphics());
var1.show();
}
}
public void render(Graphics2D var1) {
++this.currentRender;
AffineTransform var2 = var1.getTransform();
var1.setClip(0, 0, this.getWidth(), this.getHeight());
var1.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
var1.translate(this.getWidth() / 2, this.getHeight() / 2);
var1.scale((double)this.zoomLevel, (double)this.zoomLevel);
var1.translate(this.translateX, this.translateY);
if(this.level != null) {
var1.translate(-(this.level.spawnX + this.level.spawnZ), -(-this.level.spawnX + this.level.spawnZ) + 64);
}
Rectangle var3 = var1.getClipBounds();
var1.setColor(new Color(-15724512));
var1.fillRect(var3.x, var3.y, var3.width, var3.height);
byte var4 = 16;
byte var5 = 3;
int var6 = var3.x / var4 / 2 - 2 - var5;
int var7 = (var3.x + var3.width) / var4 / 2 + 1 + var5;
int var8 = var3.y / var4 - 1 - var5 * 2;
int var9 = (var3.y + var3.height + 16 + 128) / var4 + 1 + var5 * 2;
int var10;
for(var10 = var8; var10 <= var9; ++var10) {
for(int var11 = var6; var11 <= var7; ++var11) {
int var12 = var11 - (var10 >> 1);
int var13 = var11 + (var10 + 1 >> 1);
IsoImageBuffer var14 = this.getZone(var12, var13);
var14.lastVisible = this.currentRender;
if(!var14.rendered) {
if(!var14.addedToRenderQueue) {
var14.addedToRenderQueue = true;
this.zonesToRender.add(var14);
}
} else {
var14.addedToRenderQueue = false;
if(!var14.noContent) {
int var15 = var11 * var4 * 2 + (var10 & 1) * var4;
int var16 = var10 * var4 - 128 - 16;
var1.drawImage(var14.image, var15, var16, (ImageObserver)null);
}
}
}
}
if(this.displayHelpText) {
var1.setTransform(var2);
var10 = this.getHeight() - 32 - 4;
var1.setColor(new Color(Integer.MIN_VALUE, true));
var1.fillRect(4, this.getHeight() - 32 - 4, this.getWidth() - 8, 32);
var1.setColor(Color.WHITE);
String var17 = "F1 - F5: load levels | 0-9: Set time of day | Space: return to spawn | Double click: zoom | Escape: hide this text";
var1.drawString(var17, this.getWidth() / 2 - var1.getFontMetrics().stringWidth(var17) / 2, var10 + 20);
}
var1.dispose();
}
public void mouseDragged(MouseEvent var1) {
int var2 = var1.getX() / this.zoomLevel;
int var3 = var1.getY() / this.zoomLevel;
this.translateX += var2 - this.xPosition;
this.translateY += var3 - this.yPosition;
this.xPosition = var2;
this.yPosition = var3;
this.repaint();
}
public void mouseMoved(MouseEvent var1) {
}
public void mouseClicked(MouseEvent var1) {
if(var1.getClickCount() == 2) {
this.zoomLevel = 3 - this.zoomLevel;
this.repaint();
}
}
public void mouseEntered(MouseEvent var1) {
}
public void mouseExited(MouseEvent var1) {
}
public void mousePressed(MouseEvent var1) {
int var2 = var1.getX() / this.zoomLevel;
int var3 = var1.getY() / this.zoomLevel;
this.xPosition = var2;
this.yPosition = var3;
}
public void mouseReleased(MouseEvent var1) {
}
public void keyPressed(KeyEvent var1) {
if(var1.getKeyCode() == 48) {
this.setBrightness(11);
}
if(var1.getKeyCode() == 49) {
this.setBrightness(10);
}
if(var1.getKeyCode() == 50) {
this.setBrightness(9);
}
if(var1.getKeyCode() == 51) {
this.setBrightness(7);
}
if(var1.getKeyCode() == 52) {
this.setBrightness(6);
}
if(var1.getKeyCode() == 53) {
this.setBrightness(5);
}
if(var1.getKeyCode() == 54) {
this.setBrightness(3);
}
if(var1.getKeyCode() == 55) {
this.setBrightness(2);
}
if(var1.getKeyCode() == 56) {
this.setBrightness(1);
}
if(var1.getKeyCode() == 57) {
this.setBrightness(0);
}
if(var1.getKeyCode() == 112) {
this.loadLevel("World1");
}
if(var1.getKeyCode() == 113) {
this.loadLevel("World2");
}
if(var1.getKeyCode() == 114) {
this.loadLevel("World3");
}
if(var1.getKeyCode() == 115) {
this.loadLevel("World4");
}
if(var1.getKeyCode() == 116) {
this.loadLevel("World5");
}
if(var1.getKeyCode() == 32) {
this.translateX = this.translateY = 0;
}
if(var1.getKeyCode() == 27) {
this.displayHelpText = !this.displayHelpText;
}
this.repaint();
}
public void keyReleased(KeyEvent var1) {
}
public void keyTyped(KeyEvent var1) {
}
static boolean isRunning(CanvasIsomPreview var0) {
return var0.running;
}
}

View File

@ -0,0 +1,66 @@
package net.minecraft.src;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ChatAllowedCharacters {
/**
* This String have the characters allowed in any text drawing of minecraft.
*/
public static String allowedCharacters = null;
/**
* Array of the special characters that are allowed in any text drawing of
* Minecraft.
*/
public static final char[] allowedCharactersArray = new char[] { '/', '\n', '\r', '\t', '\u0000', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':' };
/**
* Load the font.txt resource file, that is on UTF-8 format. This file contains
* the characters that minecraft can render Strings on screen.
*/
// public static void getAllowedCharacters() {
// String var0 = "";
//
// try {
// BufferedReader var1 = new BufferedReader(new InputStreamReader(EaglerAdapter.loadResource("/font.txt"), "UTF-8"));
// String var2 = "";
//
// while ((var2 = var1.readLine()) != null) {
// if (!var2.startsWith("#")) {
// var0 = var0 + var2;
// }
// }
//
// var1.close();
// } catch (Exception var3) {
// ;
// }
//
// allowedCharacters = var0;
// }
public static final boolean isAllowedCharacter(char par0) {
return par0 != 167 && (allowedCharacters.indexOf(par0) >= 0 || par0 > 32);
}
/**
* Filter string by only keeping those characters for which isAllowedCharacter()
* returns true.
*/
public static String filerAllowedCharacters(String par0Str) {
StringBuilder var1 = new StringBuilder();
char[] var2 = par0Str.toCharArray();
int var3 = var2.length;
for (int var4 = 0; var4 < var3; ++var4) {
char var5 = var2[var4];
if (isAllowedCharacter(var5)) {
var1.append(var5);
}
}
return var1.toString();
}
}

View File

@ -1,6 +1,6 @@
package net.minecraft.src;
import java.nio.FloatBuffer;
import net.lax1dude.eaglercraft.internal.buffer.FloatBuffer;
import org.lwjgl.opengl.GL11;
public class ClippingHelperImplementation extends ClippingHelper {

View File

@ -1,11 +0,0 @@
package net.minecraft.src;
import java.io.IOException;
import java.io.InputStream;
import paulscode.sound.codecs.CodecJOrbis;
public class CodecMus extends CodecJOrbis {
protected InputStream openInputStream() throws IOException {
return new MusInputStream(this, this.url, this.urlConnection.getInputStream());
}
}

View File

@ -2,7 +2,7 @@ package net.minecraft.src;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.IntBuffer;
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
import javax.imageio.ImageIO;
import org.lwjgl.opengl.GL11;
@ -12,6 +12,8 @@ public class FontRenderer {
private int fontDisplayLists;
private IntBuffer buffer = GLAllocation.createDirectIntBuffer(1024);
public int FONT_HEIGHT = 9;
public FontRenderer(GameSettings var1, String var2, RenderEngine var3) {
BufferedImage var4;
try {
@ -112,6 +114,86 @@ public class FontRenderer {
}
public String trimStringToWidth(String par1Str, int par2) {
return this.trimStringToWidth(par1Str, par2, false);
}
/**
* Trims a string to a specified width, and will reverse it if par3 is set.
*/
public String trimStringToWidth(String par1Str, int par2, boolean par3) {
StringBuilder var4 = new StringBuilder();
int var5 = 0;
int var6 = par3 ? par1Str.length() - 1 : 0;
int var7 = par3 ? -1 : 1;
boolean var8 = false;
boolean var9 = false;
for (int var10 = var6; var10 >= 0 && var10 < par1Str.length() && var5 < par2; var10 += var7) {
char var11 = par1Str.charAt(var10);
int var12 = this.getCharWidth(var11);
if (var8) {
var8 = false;
if (var11 != 108 && var11 != 76) {
if (var11 == 114 || var11 == 82) {
var9 = false;
}
} else {
var9 = true;
}
} else if (var12 < 0) {
var8 = true;
} else {
var5 += var12;
if (var9) {
++var5;
}
}
if (var5 > par2) {
break;
}
if (par3) {
var4.insert(0, var11);
} else {
var4.append(var11);
}
}
return var4.toString();
}
public int getCharWidth(char par1) {
if (par1 == 167) {
return -1;
} else if (par1 == 32) {
return 4;
} else {
int var2 = ChatAllowedCharacters.allowedCharacters.indexOf(par1);
if (var2 >= 0) {
return this.charWidth[var2 + 32];
} else if (this.charWidth[par1] != 0) {
int var3 = this.charWidth[par1] >>> 4;
int var4 = this.charWidth[par1] & 15;
if (var4 > 7) {
var4 = 15;
var3 = 0;
}
++var4;
return (var4 - var3) / 2 + 1;
} else {
return 0;
}
}
}
public void drawStringWithShadow(String var1, int var2, int var3, int var4) {
this.renderString(var1, var2 + 1, var3 + 1, var4, true);
this.drawString(var1, var2, var3, var4);

View File

@ -5,7 +5,7 @@ import org.lwjgl.opengl.GL11;
public class Gui {
protected float zLevel = 0.0F;
protected void drawRect(int var1, int var2, int var3, int var4, int var5) {
protected static void drawRect(int var1, int var2, int var3, int var4, int var5) {
float var6 = (float)(var5 >> 24 & 255) / 255.0F;
float var7 = (float)(var5 >> 16 & 255) / 255.0F;
float var8 = (float)(var5 >> 8 & 255) / 255.0F;

View File

@ -17,7 +17,7 @@ public class GuiButton extends Gui {
this(var1, var2, var3, 200, 20, var4);
}
protected GuiButton(int var1, int var2, int var3, int var4, int var5, String var6) {
public GuiButton(int var1, int var2, int var3, int var4, int var5, String var6) {
this.width = 200;
this.height = 20;
this.enabled = true;

View File

@ -5,6 +5,8 @@ import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.util.ArrayList;
import java.util.List;
import net.lax1dude.eaglercraft.EagRuntime;
import net.minecraft.client.Minecraft;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
@ -48,6 +50,18 @@ public class GuiScreen extends Gui {
return null;
}
public static void setClipboardString(String text){
EagRuntime.setClipboard(text);
}
public static boolean isCtrlKeyDown() {
return Keyboard.isKeyDown(29) || Keyboard.isKeyDown(157);
}
public static boolean isShiftKeyDown() {
return Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54);
}
protected void mouseClicked(int var1, int var2, int var3) {
if(var3 == 0) {
for(int var4 = 0; var4 < this.controlList.size(); ++var4) {

View File

@ -0,0 +1,757 @@
package net.minecraft.src;
import org.lwjgl.opengl.GL11;
public class GuiTextField extends Gui
{
/**
* Have the font renderer from GuiScreen to render the textbox text into the screen.
*/
private final FontRenderer fontRenderer;
private final int xPos;
private final int yPos;
/** The width of this text field. */
private final int width;
private final int height;
/** Have the current text beign edited on the textbox. */
private String text = "";
private int maxStringLength = 32;
private int cursorCounter;
private boolean enableBackgroundDrawing = true;
/**
* if true the textbox can lose focus by clicking elsewhere on the screen
*/
private boolean canLoseFocus = true;
/**
* If this value is true along isEnabled, keyTyped will process the keys.
*/
private boolean isFocused;
/**
* If this value is true along isFocused, keyTyped will process the keys.
*/
private boolean isEnabled = true;
/**
* The current character index that should be used as start of the rendered text.
*/
private int lineScrollOffset;
private int cursorPosition;
/** other selection position, maybe the same as the cursor */
private int selectionEnd;
private int enabledColor = 14737632;
private int disabledColor = 7368816;
/** True if this textbox is visible */
private boolean visible = true;
public GuiTextField(FontRenderer par1FontRenderer, int par2, int par3, int par4, int par5)
{
this.fontRenderer = par1FontRenderer;
this.xPos = par2;
this.yPos = par3;
this.width = par4;
this.height = par5;
}
/**
* Increments the cursor counter
*/
public void updateCursorCounter()
{
++this.cursorCounter;
}
/**
* Sets the text of the textbox.
*/
public void setText(String par1Str)
{
if (par1Str.length() > this.maxStringLength)
{
this.text = par1Str.substring(0, this.maxStringLength);
}
else
{
this.text = par1Str;
}
this.setCursorPositionEnd();
}
/**
* Returns the text beign edited on the textbox.
*/
public String getText()
{
return this.text;
}
/**
* @return returns the text between the cursor and selectionEnd
*/
public String getSelectedtext()
{
int var1 = this.cursorPosition < this.selectionEnd ? this.cursorPosition : this.selectionEnd;
int var2 = this.cursorPosition < this.selectionEnd ? this.selectionEnd : this.cursorPosition;
return this.text.substring(var1, var2);
}
/**
* replaces selected text, or inserts text at the position on the cursor
*/
public void writeText(String par1Str)
{
String var2 = "";
String var3 = ChatAllowedCharacters.filerAllowedCharacters(par1Str);
int var4 = this.cursorPosition < this.selectionEnd ? this.cursorPosition : this.selectionEnd;
int var5 = this.cursorPosition < this.selectionEnd ? this.selectionEnd : this.cursorPosition;
int var6 = this.maxStringLength - this.text.length() - (var4 - this.selectionEnd);
boolean var7 = false;
if (this.text.length() > 0)
{
var2 = var2 + this.text.substring(0, var4);
}
int var8;
if (var6 < var3.length())
{
var2 = var2 + var3.substring(0, var6);
var8 = var6;
}
else
{
var2 = var2 + var3;
var8 = var3.length();
}
if (this.text.length() > 0 && var5 < this.text.length())
{
var2 = var2 + this.text.substring(var5);
}
this.text = var2;
this.moveCursorBy(var4 - this.selectionEnd + var8);
}
/**
* Deletes the specified number of words starting at the cursor position. Negative numbers will delete words left of
* the cursor.
*/
public void deleteWords(int par1)
{
if (this.text.length() != 0)
{
if (this.selectionEnd != this.cursorPosition)
{
this.writeText("");
}
else
{
this.deleteFromCursor(this.getNthWordFromCursor(par1) - this.cursorPosition);
}
}
}
/**
* delete the selected text, otherwsie deletes characters from either side of the cursor. params: delete num
*/
public void deleteFromCursor(int par1)
{
if (this.text.length() != 0)
{
if (this.selectionEnd != this.cursorPosition)
{
this.writeText("");
}
else
{
boolean var2 = par1 < 0;
int var3 = var2 ? this.cursorPosition + par1 : this.cursorPosition;
int var4 = var2 ? this.cursorPosition : this.cursorPosition + par1;
String var5 = "";
if (var3 >= 0)
{
var5 = this.text.substring(0, var3);
}
if (var4 < this.text.length())
{
var5 = var5 + this.text.substring(var4);
}
this.text = var5;
if (var2)
{
this.moveCursorBy(par1);
}
}
}
}
/**
* see @getNthNextWordFromPos() params: N, position
*/
public int getNthWordFromCursor(int par1)
{
return this.getNthWordFromPos(par1, this.getCursorPosition());
}
/**
* gets the position of the nth word. N may be negative, then it looks backwards. params: N, position
*/
public int getNthWordFromPos(int par1, int par2)
{
return this.func_73798_a(par1, this.getCursorPosition(), true);
}
public int func_73798_a(int par1, int par2, boolean par3)
{
int var4 = par2;
boolean var5 = par1 < 0;
int var6 = Math.abs(par1);
for (int var7 = 0; var7 < var6; ++var7)
{
if (var5)
{
while (par3 && var4 > 0 && this.text.charAt(var4 - 1) == 32)
{
--var4;
}
while (var4 > 0 && this.text.charAt(var4 - 1) != 32)
{
--var4;
}
}
else
{
int var8 = this.text.length();
var4 = this.text.indexOf(32, var4);
if (var4 == -1)
{
var4 = var8;
}
else
{
while (par3 && var4 < var8 && this.text.charAt(var4) == 32)
{
++var4;
}
}
}
}
return var4;
}
/**
* Moves the text cursor by a specified number of characters and clears the selection
*/
public void moveCursorBy(int par1)
{
this.setCursorPosition(this.selectionEnd + par1);
}
/**
* sets the position of the cursor to the provided index
*/
public void setCursorPosition(int par1)
{
this.cursorPosition = par1;
int var2 = this.text.length();
if (this.cursorPosition < 0)
{
this.cursorPosition = 0;
}
if (this.cursorPosition > var2)
{
this.cursorPosition = var2;
}
this.setSelectionPos(this.cursorPosition);
}
/**
* sets the cursors position to the beginning
*/
public void setCursorPositionZero()
{
this.setCursorPosition(0);
}
/**
* sets the cursors position to after the text
*/
public void setCursorPositionEnd()
{
this.setCursorPosition(this.text.length());
}
/**
* Call this method from you GuiScreen to process the keys into textbox.
*/
public boolean textboxKeyTyped(char par1, int par2)
{
if (this.isEnabled && this.isFocused)
{
switch (par1)
{
case 1:
this.setCursorPositionEnd();
this.setSelectionPos(0);
return true;
case 3:
GuiScreen.setClipboardString(this.getSelectedtext());
return true;
case 22:
this.writeText(GuiScreen.getClipboardString());
return true;
case 24:
GuiScreen.setClipboardString(this.getSelectedtext());
this.writeText("");
return true;
default:
switch (par2)
{
case 14:
if (GuiScreen.isCtrlKeyDown())
{
this.deleteWords(-1);
}
else
{
this.deleteFromCursor(-1);
}
return true;
case 199:
if (GuiScreen.isShiftKeyDown())
{
this.setSelectionPos(0);
}
else
{
this.setCursorPositionZero();
}
return true;
case 203:
if (GuiScreen.isShiftKeyDown())
{
if (GuiScreen.isCtrlKeyDown())
{
this.setSelectionPos(this.getNthWordFromPos(-1, this.getSelectionEnd()));
}
else
{
this.setSelectionPos(this.getSelectionEnd() - 1);
}
}
else if (GuiScreen.isCtrlKeyDown())
{
this.setCursorPosition(this.getNthWordFromCursor(-1));
}
else
{
this.moveCursorBy(-1);
}
return true;
case 205:
if (GuiScreen.isShiftKeyDown())
{
if (GuiScreen.isCtrlKeyDown())
{
this.setSelectionPos(this.getNthWordFromPos(1, this.getSelectionEnd()));
}
else
{
this.setSelectionPos(this.getSelectionEnd() + 1);
}
}
else if (GuiScreen.isCtrlKeyDown())
{
this.setCursorPosition(this.getNthWordFromCursor(1));
}
else
{
this.moveCursorBy(1);
}
return true;
case 207:
if (GuiScreen.isShiftKeyDown())
{
this.setSelectionPos(this.text.length());
}
else
{
this.setCursorPositionEnd();
}
return true;
case 211:
if (GuiScreen.isCtrlKeyDown())
{
this.deleteWords(1);
}
else
{
this.deleteFromCursor(1);
}
return true;
default:
if (ChatAllowedCharacters.isAllowedCharacter(par1))
{
this.writeText(Character.toString(par1));
return true;
}
else
{
return false;
}
}
}
}
else
{
return false;
}
}
/**
* Args: x, y, buttonClicked
*/
public void mouseClicked(int par1, int par2, int par3)
{
boolean var4 = par1 >= this.xPos && par1 < this.xPos + this.width && par2 >= this.yPos && par2 < this.yPos + this.height;
if (this.canLoseFocus)
{
this.setFocused(this.isEnabled && var4);
}
if (this.isFocused && par3 == 0)
{
int var5 = par1 - this.xPos;
if (this.enableBackgroundDrawing)
{
var5 -= 4;
}
String var6 = this.fontRenderer.trimStringToWidth(this.text.substring(this.lineScrollOffset), this.getWidth());
this.setCursorPosition(this.fontRenderer.trimStringToWidth(var6, var5).length() + this.lineScrollOffset);
}
}
/**
* Draws the textbox
*/
public void drawTextBox()
{
if (this.getVisible())
{
if (this.getEnableBackgroundDrawing())
{
drawRect(this.xPos - 1, this.yPos - 1, this.xPos + this.width + 1, this.yPos + this.height + 1, -6250336);
drawRect(this.xPos, this.yPos, this.xPos + this.width, this.yPos + this.height, -16777216);
}
int var1 = this.isEnabled ? this.enabledColor : this.disabledColor;
int var2 = this.cursorPosition - this.lineScrollOffset;
int var3 = this.selectionEnd - this.lineScrollOffset;
String var4 = this.fontRenderer.trimStringToWidth(this.text.substring(this.lineScrollOffset), this.getWidth());
boolean var5 = var2 >= 0 && var2 <= var4.length();
boolean var6 = this.isFocused && this.cursorCounter / 6 % 2 == 0 && var5;
int var7 = this.enableBackgroundDrawing ? this.xPos + 4 : this.xPos;
int var8 = this.enableBackgroundDrawing ? this.yPos + (this.height - 8) / 2 : this.yPos;
int var9 = var7;
if (var3 > var4.length())
{
var3 = var4.length();
}
if (var4.length() > 0)
{
String var10 = var5 ? var4.substring(0, var2) : var4;
this.fontRenderer.drawStringWithShadow(var10, var7, var8, var1);
}
boolean var13 = this.cursorPosition < this.text.length() || this.text.length() >= this.getMaxStringLength();
int var11 = var9;
if (!var5)
{
var11 = var2 > 0 ? var7 + this.width : var7;
}
else if (var13)
{
var11 = var9 - 1;
--var9;
}
if (var4.length() > 0 && var5 && var2 < var4.length())
{
this.fontRenderer.drawStringWithShadow(var4.substring(var2), var9, var8, var1);
}
if (var6)
{
if (var13)
{
Gui.drawRect(var11, var8 - 1, var11 + 1, var8 + 1 + this.fontRenderer.FONT_HEIGHT, -3092272);
}
else
{
this.fontRenderer.drawStringWithShadow("_", var11, var8, var1);
}
}
if (var3 != var2)
{
int var12 = var7 + this.fontRenderer.getStringWidth(var4.substring(0, var3));
this.drawCursorVertical(var11, var8 - 1, var12 - 1, var8 + 1 + this.fontRenderer.FONT_HEIGHT);
}
}
}
/**
* draws the vertical line cursor in the textbox
*/
private void drawCursorVertical(int par1, int par2, int par3, int par4)
{
int var5;
if (par1 < par3)
{
var5 = par1;
par1 = par3;
par3 = var5;
}
if (par2 < par4)
{
var5 = par2;
par2 = par4;
par4 = var5;
}
Tessellator var6 = Tessellator.instance;
GL11.glColor4f(0.0F, 0.0F, 255.0F, 255.0F);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_COLOR_LOGIC_OP);
//GL11.glLogicOp(GL11.GL_OR_REVERSE);
var6.startDrawingQuads();
var6.addVertex((double)par1, (double)par4, 0.0D);
var6.addVertex((double)par3, (double)par4, 0.0D);
var6.addVertex((double)par3, (double)par2, 0.0D);
var6.addVertex((double)par1, (double)par2, 0.0D);
var6.draw();
GL11.glDisable(GL11.GL_COLOR_LOGIC_OP);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
public void setMaxStringLength(int par1)
{
this.maxStringLength = par1;
if (this.text.length() > par1)
{
this.text = this.text.substring(0, par1);
}
}
/**
* returns the maximum number of character that can be contained in this textbox
*/
public int getMaxStringLength()
{
return this.maxStringLength;
}
/**
* returns the current position of the cursor
*/
public int getCursorPosition()
{
return this.cursorPosition;
}
/**
* get enable drawing background and outline
*/
public boolean getEnableBackgroundDrawing()
{
return this.enableBackgroundDrawing;
}
/**
* enable drawing background and outline
*/
public void setEnableBackgroundDrawing(boolean par1)
{
this.enableBackgroundDrawing = par1;
}
/**
* Sets the text colour for this textbox (disabled text will not use this colour)
*/
public void setTextColor(int par1)
{
this.enabledColor = par1;
}
public void setDisabledTextColour(int par1)
{
this.disabledColor = par1;
}
/**
* setter for the focused field
*/
public void setFocused(boolean par1)
{
if (par1 && !this.isFocused)
{
this.cursorCounter = 0;
}
this.isFocused = par1;
}
/**
* getter for the focused field
*/
public boolean isFocused()
{
return this.isFocused;
}
public void setEnabled(boolean par1)
{
this.isEnabled = par1;
}
/**
* the side of the selection that is not the cursor, maye be the same as the cursor
*/
public int getSelectionEnd()
{
return this.selectionEnd;
}
/**
* returns the width of the textbox depending on if the the box is enabled
*/
public int getWidth()
{
return this.getEnableBackgroundDrawing() ? this.width - 8 : this.width;
}
/**
* Sets the position of the selection anchor (i.e. position the selection was started at)
*/
public void setSelectionPos(int par1)
{
int var2 = this.text.length();
if (par1 > var2)
{
par1 = var2;
}
if (par1 < 0)
{
par1 = 0;
}
this.selectionEnd = par1;
if (this.fontRenderer != null)
{
if (this.lineScrollOffset > var2)
{
this.lineScrollOffset = var2;
}
int var3 = this.getWidth();
String var4 = this.fontRenderer.trimStringToWidth(this.text.substring(this.lineScrollOffset), var3);
int var5 = var4.length() + this.lineScrollOffset;
if (par1 == this.lineScrollOffset)
{
this.lineScrollOffset -= this.fontRenderer.trimStringToWidth(this.text, var3, true).length();
}
if (par1 > var5)
{
this.lineScrollOffset += par1 - var5;
}
else if (par1 <= this.lineScrollOffset)
{
this.lineScrollOffset -= this.lineScrollOffset - par1;
}
if (this.lineScrollOffset < 0)
{
this.lineScrollOffset = 0;
}
if (this.lineScrollOffset > var2)
{
this.lineScrollOffset = var2;
}
}
}
/**
* if true the textbox can lose focus by clicking elsewhere on the screen
*/
public void setCanLoseFocus(boolean par1)
{
this.canLoseFocus = par1;
}
/**
* @return {@code true} if this textbox is visible
*/
public boolean getVisible()
{
return this.visible;
}
/**
* Sets whether or not this textbox is visible
*/
public void setVisible(boolean par1)
{
this.visible = par1;
}
}

View File

@ -1,37 +0,0 @@
package net.minecraft.src;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
class MusInputStream extends InputStream {
private int hash;
private InputStream inputStream;
byte[] buffer;
final CodecMus codec;
public MusInputStream(CodecMus var1, URL var2, InputStream var3) {
this.codec = var1;
this.buffer = new byte[1];
this.inputStream = var3;
String var4 = var2.getPath();
var4 = var4.substring(var4.lastIndexOf("/") + 1);
this.hash = var4.hashCode();
}
public int read() throws IOException {
int var1 = this.read(this.buffer, 0, 1);
return var1 < 0 ? var1 : this.buffer[0];
}
public int read(byte[] var1, int var2, int var3) throws IOException {
var3 = this.inputStream.read(var1, var2, var3);
for(int var4 = 0; var4 < var3; ++var4) {
byte var5 = var1[var2 + var4] = (byte)(var1[var2 + var4] ^ this.hash >> 8);
this.hash = this.hash * 498729871 + 85731 * var5;
}
return var3;
}
}

View File

@ -126,6 +126,10 @@ public class NBTTagCompound extends NBTBase {
return !this.tagMap.containsKey(var1) ? new NBTTagList() : (NBTTagList)this.tagMap.get(var1);
}
public boolean hasNoTags() {
return this.tagMap.isEmpty();
}
public boolean getBoolean(String var1) {
return this.getByte(var1) != 0;
}

View File

@ -275,25 +275,7 @@ public class NetClientHandler extends NetHandler {
}
public void handleHandshake(Packet2Handshake var1) {
if(var1.username.equals("-")) {
this.addToSendQueue(new Packet1Login(this.mc.session.username, "Password", 2));
} else {
try {
URL var2 = new URL("http://www.minecraft.net/game/joinserver.jsp?user=" + this.mc.session.username + "&sessionId=" + this.mc.session.sessionId + "&serverId=" + var1.username);
BufferedReader var3 = new BufferedReader(new InputStreamReader(var2.openStream()));
String var4 = var3.readLine();
var3.close();
if(var4.equalsIgnoreCase("ok")) {
this.addToSendQueue(new Packet1Login(this.mc.session.username, "Password", 2));
} else {
this.netManager.networkShutdown("Failed to login: " + var4);
}
} catch (Exception var5) {
var5.printStackTrace();
this.netManager.networkShutdown("Internal client error: " + var5.toString());
}
}
this.addToSendQueue(new Packet1Login(this.mc.session.username, "Password", 8));
}
public void disconnect() {

View File

@ -1,11 +0,0 @@
package net.minecraft.src;
import org.lwjgl.opengl.GLContext;
public class OpenGlCapsChecker {
private static boolean tryCheckOcclusionCapable = false;
public boolean checkARBOcclusion() {
return tryCheckOcclusionCapable && GLContext.getCapabilities().GL_ARB_occlusion_query;
}
}

View File

@ -4,8 +4,8 @@ import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import net.lax1dude.eaglercraft.internal.buffer.ByteBuffer;
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

View File

@ -1,6 +1,6 @@
package net.minecraft.src;
import java.nio.IntBuffer;
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@ -61,15 +61,15 @@ public class RenderGlobal implements IWorldAccess {
this.renderEngine = var2;
byte var3 = 64;
this.glRenderListBase = GLAllocation.generateDisplayLists(var3 * var3 * var3 * 3);
this.occlusionEnabled = var1.getOpenGlCapsChecker().checkARBOcclusion();
if(this.occlusionEnabled) {
this.occlusionResult.clear();
this.glOcclusionQueryBase = GLAllocation.createDirectIntBuffer(var3 * var3 * var3);
this.glOcclusionQueryBase.clear();
this.glOcclusionQueryBase.position(0);
this.glOcclusionQueryBase.limit(var3 * var3 * var3);
ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase);
}
// this.occlusionEnabled = var1.getOpenGlCapsChecker().checkARBOcclusion();
// if(this.occlusionEnabled) {
// this.occlusionResult.clear();
// this.glOcclusionQueryBase = GLAllocation.createDirectIntBuffer(var3 * var3 * var3);
// this.glOcclusionQueryBase.clear();
// this.glOcclusionQueryBase.position(0);
// this.glOcclusionQueryBase.limit(var3 * var3 * var3);
// ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase);
// }
this.starGLCallList = GLAllocation.generateDisplayLists(3);
GL11.glPushMatrix();
@ -391,7 +391,7 @@ public class RenderGlobal implements IWorldAccess {
if(this.occlusionEnabled && !this.mc.options.anaglyph && var2 == 0) {
byte var18 = 0;
int var19 = 16;
this.checkOcclusionQueryResult(var18, var19);
//this.checkOcclusionQueryResult(var18, var19);
for(int var20 = var18; var20 < var19; ++var20) {
this.sortedWorldRenderers[var20].isVisible = true;
@ -412,7 +412,7 @@ public class RenderGlobal implements IWorldAccess {
GL11.glDisable(GL11.GL_FOG);
GL11.glColorMask(false, false, false, false);
GL11.glDepthMask(false);
this.checkOcclusionQueryResult(var34, var19);
//this.checkOcclusionQueryResult(var34, var19);
GL11.glPushMatrix();
float var35 = 0.0F;
float var21 = 0.0F;
@ -444,9 +444,9 @@ public class RenderGlobal implements IWorldAccess {
var22 += var32;
}
ARBOcclusionQuery.glBeginQueryARB(GL15.GL_SAMPLES_PASSED, this.sortedWorldRenderers[var23].glOcclusionQuery);
//ARBOcclusionQuery.glBeginQueryARB(GL15.GL_SAMPLES_PASSED, this.sortedWorldRenderers[var23].glOcclusionQuery);
this.sortedWorldRenderers[var23].callOcclusionQueryList();
ARBOcclusionQuery.glEndQueryARB(GL15.GL_SAMPLES_PASSED);
//ARBOcclusionQuery.glEndQueryARB(GL15.GL_SAMPLES_PASSED);
this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery = true;
}
}
@ -468,21 +468,21 @@ public class RenderGlobal implements IWorldAccess {
return var33;
}
private void checkOcclusionQueryResult(int var1, int var2) {
for(int var3 = var1; var3 < var2; ++var3) {
if(this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery) {
this.occlusionResult.clear();
ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT_AVAILABLE, this.occlusionResult);
if(this.occlusionResult.get(0) != 0) {
this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false;
this.occlusionResult.clear();
ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT, this.occlusionResult);
this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0;
}
}
}
}
// private void checkOcclusionQueryResult(int var1, int var2) {
// for(int var3 = var1; var3 < var2; ++var3) {
// if(this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery) {
// this.occlusionResult.clear();
// ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT_AVAILABLE, this.occlusionResult);
// if(this.occlusionResult.get(0) != 0) {
// this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false;
// this.occlusionResult.clear();
// ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT, this.occlusionResult);
// this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0;
// }
// }
// }
//
// }
private int renderSortedRenderers(int var1, int var2, int var3, double var4) {
this.glRenderLists.clear();

View File

@ -1,10 +1,14 @@
package net.minecraft.src;
import java.nio.FloatBuffer;
import net.lax1dude.eaglercraft.internal.buffer.FloatBuffer;
import net.lax1dude.eaglercraft.opengl.GlStateManager;
import net.peyton.eagler.v1_12.vec.Vec3D_112;
import org.lwjgl.opengl.GL11;
public class RenderHelper {
private static FloatBuffer colorBuffer = GLAllocation.createDirectFloatBuffer(16);
private static final Vec3D_112 LIGHT0_POS = (new Vec3D_112(0.20000000298023224D, 1.0D, -0.699999988079071D)).normalize();
private static final Vec3D_112 LIGHT1_POS = (new Vec3D_112(-0.20000000298023224D, 1.0D, 0.699999988079071D)).normalize();
public static void disableStandardItemLighting() {
GL11.glDisable(GL11.GL_LIGHTING);
@ -15,25 +19,10 @@ public class RenderHelper {
public static void enableStandardItemLighting() {
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_LIGHT0);
GL11.glEnable(GL11.GL_LIGHT1);
GlStateManager.enableMCLight(0, 0.6f, LIGHT0_POS.xCoord, LIGHT0_POS.yCoord, LIGHT0_POS.zCoord, 0.0D);
GlStateManager.enableMCLight(1, 0.6f, LIGHT1_POS.xCoord, LIGHT1_POS.yCoord, LIGHT1_POS.zCoord, 0.0D);
GlStateManager.setMCLightAmbient(0.4f, 0.4f, 0.4f);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glColorMaterial(GL11.GL_FRONT_AND_BACK, GL11.GL_AMBIENT_AND_DIFFUSE);
float var0 = 0.4F;
float var1 = 0.6F;
float var2 = 0.0F;
Vec3D var3 = Vec3D.createVector((double)0.2F, 1.0D, (double)-0.7F).normalize();
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, setColorBuffer(var3.xCoord, var3.yCoord, var3.zCoord, 0.0D));
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_DIFFUSE, setColorBuffer(var1, var1, var1, 1.0F));
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_AMBIENT, setColorBuffer(0.0F, 0.0F, 0.0F, 1.0F));
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_SPECULAR, setColorBuffer(var2, var2, var2, 1.0F));
var3 = Vec3D.createVector((double)-0.2F, 1.0D, (double)0.7F).normalize();
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, setColorBuffer(var3.xCoord, var3.yCoord, var3.zCoord, 0.0D));
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, setColorBuffer(var1, var1, var1, 1.0F));
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_AMBIENT, setColorBuffer(0.0F, 0.0F, 0.0F, 1.0F));
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_SPECULAR, setColorBuffer(var2, var2, var2, 1.0F));
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, setColorBuffer(var0, var0, var0, 1.0F));
}
private static FloatBuffer setColorBuffer(double var0, double var2, double var4, double var6) {

View File

@ -1,6 +1,6 @@
package net.minecraft.src;
import java.nio.IntBuffer;
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
import org.lwjgl.opengl.GL11;
public class RenderList {

View File

@ -30,26 +30,26 @@ public class SoundManager {
}
private void tryToSetLibraryAndCodecs() {
try {
float var1 = this.options.soundVolume;
float var2 = this.options.musicVolume;
this.options.soundVolume = 0.0F;
this.options.musicVolume = 0.0F;
this.options.saveOptions();
SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class);
SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
SoundSystemConfig.setCodec("mus", CodecMus.class);
SoundSystemConfig.setCodec("wav", CodecWav.class);
sndSystem = new SoundSystem();
this.options.soundVolume = var1;
this.options.musicVolume = var2;
this.options.saveOptions();
} catch (Throwable var3) {
var3.printStackTrace();
System.err.println("error linking with the LibraryJavaSound plug-in");
}
loaded = true;
// try {
// float var1 = this.options.soundVolume;
// float var2 = this.options.musicVolume;
// this.options.soundVolume = 0.0F;
// this.options.musicVolume = 0.0F;
// this.options.saveOptions();
// SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class);
// SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
// SoundSystemConfig.setCodec("mus", CodecMus.class);
// SoundSystemConfig.setCodec("wav", CodecWav.class);
// sndSystem = new SoundSystem();
// this.options.soundVolume = var1;
// this.options.musicVolume = var2;
// this.options.saveOptions();
// } catch (Throwable var3) {
// var3.printStackTrace();
// System.err.println("error linking with the LibraryJavaSound plug-in");
// }
//
// loaded = true;
}
public void onSoundOptionsChanged() {

View File

@ -1,21 +0,0 @@
package net.minecraft.src;
class ThreadRunIsoClient extends Thread {
final CanvasIsomPreview isomPreview;
ThreadRunIsoClient(CanvasIsomPreview var1) {
this.isomPreview = var1;
}
public void run() {
while(CanvasIsomPreview.isRunning(this.isomPreview)) {
this.isomPreview.render();
try {
Thread.sleep(1L);
} catch (Exception var2) {
}
}
}
}

View File

@ -1,16 +0,0 @@
package net.minecraft.src;
import net.lax1dude.eaglercraft.internal.vfs2.VFile2;
class WorldIso extends World {
final CanvasIsomPreview isomPreview;
WorldIso(CanvasIsomPreview var1, VFile2 var2, String var3) {
super(var2, var3);
this.isomPreview = var1;
}
protected IChunkProvider getChunkProvider(VFile2 var1) {
return new ChunkProviderIso(this, new ChunkLoader(var1, false));
}
}

View File

@ -1,6 +1,6 @@
/*
* Copyright (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved.
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@ -11,7 +11,7 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*
*/
package net.lax1dude.eaglercraft.profile;
@ -28,7 +28,7 @@ import net.minecraft.src.NBTTagCompound;
public class EaglerProfile {
private static String username;
public static String getName() {
return username;
}
@ -37,7 +37,7 @@ public class EaglerProfile {
username = str;
Minecraft mc = Minecraft.getMinecraft();
if(mc != null && mc.session != null) {
mc.session.playerName = str;
mc.session.username = str;
}
}
@ -52,7 +52,7 @@ public class EaglerProfile {
NBTTagCompound profile;
try {
profile = CompressedStreamTools.func_1138_a(new EaglerInputStream(profileStorage));
profile = CompressedStreamTools.readCompressed(new EaglerInputStream(profileStorage));
}catch(IOException ex) {
return;
}