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 eaebd018..f8a02bf0 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46/quads.frag +++ b/src/main/resources/assets/voxy/shaders/lod/gl46/quads.frag @@ -19,6 +19,9 @@ layout(location = 7) in flat uint quadDebug; #endif layout(location = 0) out vec4 outColour; + +#import + vec4 uint2vec4RGBA(uint colour) { return vec4((uvec4(colour)>>uvec4(24,16,8,0))&uvec4(0xFF))/255.0; } @@ -40,12 +43,12 @@ vec4 computeColour(vec4 colour) { 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); + return (colour * uint2vec4RGBA(interData.y)) + uint2vec4RGBA(interData.w); } uint getFace() { - return (interData.w>>8)&7u; + return (interData.w)&7u; } vec2 getBaseUV() { @@ -89,7 +92,9 @@ void main() { #endif } - outColour = computeColour(colour); + colour = computeColour(colour); + + outColour = colour; #ifdef 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 4c20e722..fb55236d 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46/quads2.vert +++ b/src/main/resources/assets/voxy/shaders/lod/gl46/quads2.vert @@ -26,11 +26,10 @@ void setSizeAndFlags(uint modelId, uint _flags, ivec2 quadSize) { interData.x = (modelId<<16) | _flags | (uint(quadSize.x-1)<<8) | (uint(quadSize.y-1)<<12); } -void setTintingAndExtra(vec4 _tinting, uint _conditionalTinting, uint alphaAddin, uint face) { - uint packedData = alphaAddin|(face<<8); +void setTintingAndExtra(vec4 _tinting, uint _conditionalTinting, uint addin) { interData.y = packVec4(_tinting); interData.z = _conditionalTinting; - interData.w = packedData; + interData.w = addin; } #ifdef DEBUG_RENDER @@ -113,6 +112,24 @@ void main() { ivec2 quadSize = extractSize(quad); + + + + vec4 faceSize = getFaceSize(faceData); + + vec2 cQuadSize = (faceSize.yw + quadSize - 1) * vec2((cornerIdx>>1)&1, cornerIdx&1); + uv = faceSize.xz + cQuadSize; + + vec3 cornerPos = extractPos(quad); + float depthOffset = extractFaceIndentation(faceData); + cornerPos += swizzelDataAxis(face>>1, vec3(faceSize.xz, mix(depthOffset, 1-depthOffset, float(face&1u)))); + + vec3 origin = vec3(((extractLoDPosition(encPos)<>1,vec3(cQuadSize,0)))*(1<>1)&1, cornerIdx&1); - uv = faceSize.xz + cQuadSize; - - vec3 cornerPos = extractPos(quad); - float depthOffset = extractFaceIndentation(faceData); - cornerPos += swizzelDataAxis(face>>1, vec3(faceSize.xz, mix(depthOffset, 1-depthOffset, float(face&1u)))); - - - vec3 origin = vec3(((extractLoDPosition(encPos)<>1,vec3(cQuadSize,0)))*(1<