tr1/output/sprites: do not interpolate texture layer
Some checks are pending
Run code linters / Run code linters (push) Waiting to run
Publish a pre-release / Build TR1 (push) Has been skipped
Publish a pre-release / Build TR2 (push) Has been skipped
Publish a pre-release / Create a prerelease (push) Has been skipped

This commit is contained in:
Marcin Kurczewski 2025-04-01 20:46:12 +02:00
parent c0ff49461c
commit 6e27f24264

View file

@ -14,7 +14,8 @@ layout(location = 1) in vec2 inDisplacement;
layout(location = 2) in int inTextureIdx; layout(location = 2) in int inTextureIdx;
layout(location = 3) in float inShade; layout(location = 3) in float inShade;
out vec3 gUVW; // x = u, y = v, z = layer out vec2 gTexUV;
flat out int gTexLayer;
out float gShade; out float gShade;
void main(void) { void main(void) {
@ -27,7 +28,9 @@ void main(void) {
waterWibble(gl_Position, uViewportSize, uWibbleOffset); waterWibble(gl_Position, uViewportSize, uWibbleOffset);
} }
gUVW = texelFetch(uUVW, int(inTextureIdx)).xyz; vec3 uvw = texelFetch(uUVW, int(inTextureIdx)).xyz;
gTexUV = uvw.xy;
gTexLayer = int(uvw.z);
gShade = inShade; gShade = inShade;
} }
@ -38,13 +41,15 @@ uniform bool uSmoothingEnabled;
uniform float uBrightnessMultiplier; uniform float uBrightnessMultiplier;
uniform vec3 uGlobalTint; uniform vec3 uGlobalTint;
in vec3 gUVW; in vec2 gTexUV;
flat in int gTexLayer;
in float gShade; in float gShade;
out vec4 outColor; out vec4 outColor;
void main(void) { void main(void) {
vec4 texColor = texture(uTexture, gUVW); vec3 uvw = vec3(gTexUV.x, gTexUV.y, gTexLayer);
if (uSmoothingEnabled && discardTranslucent(uTexture, gUVW)) { vec4 texColor = texture(uTexture, uvw);
if (uSmoothingEnabled && discardTranslucent(uTexture, uvw)) {
discard; discard;
} }