From 37d0b755af0d749c82e0057f08c9ead2253b7edb Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Sun, 22 Jun 2025 11:06:15 +1000 Subject: [PATCH] Fix issues --- .../voxy/shaders/lod/gl46/bindings.glsl | 2 -- .../assets/voxy/shaders/lod/gl46/quads.frag | 27 ++++++++++++------- .../assets/voxy/shaders/lod/gl46/quads2.vert | 6 ++--- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/resources/assets/voxy/shaders/lod/gl46/bindings.glsl b/src/main/resources/assets/voxy/shaders/lod/gl46/bindings.glsl index 2a5f50c6..c0696c89 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46/bindings.glsl +++ b/src/main/resources/assets/voxy/shaders/lod/gl46/bindings.glsl @@ -1,5 +1,3 @@ -#line 1 - layout(binding = 0, std140) uniform SceneUniform { mat4 MVP; ivec3 baseSectionPos; diff --git a/src/main/resources/assets/voxy/shaders/lod/gl46/quads.frag b/src/main/resources/assets/voxy/shaders/lod/gl46/quads.frag index c42805e6..eaebd018 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46/quads.frag +++ b/src/main/resources/assets/voxy/shaders/lod/gl46/quads.frag @@ -23,18 +23,27 @@ vec4 uint2vec4RGBA(uint colour) { return vec4((uvec4(colour)>>uvec4(24,16,8,0))&uvec4(0xFF))/255.0; } -vec4 computeColour(vec4 colour) { - //Conditional tinting, TODO: FIXME: REPLACE WITH MASK OR SOMETHING, like encode data into the top bit of alpha - if ((interData.x&(1u<<2)) != 0 && abs(colour.r-colour.g) < 0.02f && abs(colour.g-colour.b) < 0.02f) { - colour *= uint2vec4RGBA(interData.z).yzwx; - } - return (colour * uint2vec4RGBA(interData.y)) + (float(interData.w&0xFFu)/255); +bool useMipmaps() { + return (interData.x&2u)==0u; } -bool useMipmaps() { - return ((interData.x>>1)&1u)==0u; +bool useTinting() { + return (interData.x&4u)!=0u; } +bool useCutout() { + return (interData.x&1u)==1u; +} + +vec4 computeColour(vec4 colour) { + //Conditional tinting, TODO: FIXME: REPLACE WITH MASK OR SOMETHING, like encode data into the top bit of alpha + if (useTinting() && abs(colour.r-colour.g) < 0.02f && abs(colour.g-colour.b) < 0.02f) { + colour *= uint2vec4RGBA(interData.z).yzwx; + } + return (colour * uint2vec4RGBA(interData.y)) + vec4(0,0,0,float(interData.w&0xFFu)/255); +} + + uint getFace() { return (interData.w>>8)&7u; } @@ -72,7 +81,7 @@ void main() { //Also, small quad is really fking over the mipping level somehow - if ((interData.x&1u) == 1 && (texture(blockModelAtlas, texPos, -16.0).a <= 0.1f)) { + if (useCutout() && (texture(blockModelAtlas, texPos, -16.0).a <= 0.1f)) { //This is stupidly stupidly bad for divergence //TODO: FIXME, basicly what this do is sample the exact pixel (no lod) for discarding, this stops mipmapping fucking it over #ifndef DEBUG_RENDER diff --git a/src/main/resources/assets/voxy/shaders/lod/gl46/quads2.vert b/src/main/resources/assets/voxy/shaders/lod/gl46/quads2.vert index f94d25e0..4c20e722 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46/quads2.vert +++ b/src/main/resources/assets/voxy/shaders/lod/gl46/quads2.vert @@ -27,10 +27,10 @@ void setSizeAndFlags(uint modelId, uint _flags, ivec2 quadSize) { } void setTintingAndExtra(vec4 _tinting, uint _conditionalTinting, uint alphaAddin, uint face) { - uint packed = alphaAddin|(face<<8); + uint packedData = alphaAddin|(face<<8); interData.y = packVec4(_tinting); interData.z = _conditionalTinting; - interData.w = packed; + interData.w = packedData; } #ifdef DEBUG_RENDER @@ -163,7 +163,7 @@ void main() { } setSizeAndFlags(modelId, flags, quadSize); - setTinting(tinting, conditionalTinting, alphaAddin, face); + setTintingAndExtra(tinting, conditionalTinting, alphaAddin, face); } vec4 faceSize = getFaceSize(faceData);