Change PaletteReference.TextureIndex to an integer.

This commit is contained in:
Paul Chote
2023-10-23 16:31:01 +01:00
committed by Gustas
parent c3ff5d954a
commit 4547f3c2b9
9 changed files with 39 additions and 37 deletions

View File

@@ -22,7 +22,7 @@ uniform float AntialiasPixelsPerTexel;
in vec4 vColor;
in vec4 vTexCoord;
in vec2 vTexMetadata;
in float vTexPalette;
in vec4 vChannelMask;
in vec4 vDepthMask;
in vec2 vTexSampler;
@@ -129,10 +129,10 @@ vec4 SamplePalettedBilinear(float samplerIndex, vec2 coords, vec2 textureSize)
vec4 x3 = Sample(samplerIndex, tl + vec2(0., px.y));
vec4 x4 = Sample(samplerIndex, tl + px);
vec4 c1 = texture(Palette, vec2(dot(x1, vChannelMask), vTexMetadata.s));
vec4 c2 = texture(Palette, vec2(dot(x2, vChannelMask), vTexMetadata.s));
vec4 c3 = texture(Palette, vec2(dot(x3, vChannelMask), vTexMetadata.s));
vec4 c4 = texture(Palette, vec2(dot(x4, vChannelMask), vTexMetadata.s));
vec4 c1 = texture(Palette, vec2(dot(x1, vChannelMask), vTexPalette));
vec4 c2 = texture(Palette, vec2(dot(x2, vChannelMask), vTexPalette));
vec4 c3 = texture(Palette, vec2(dot(x3, vChannelMask), vTexPalette));
vec4 c4 = texture(Palette, vec2(dot(x4, vChannelMask), vTexPalette));
return mix(mix(c1, c2, interp.x), mix(c3, c4, interp.x), interp.y);
}
@@ -174,7 +174,7 @@ void main()
if (!(AntialiasPixelsPerTexel > 0.0 && vPalettedFraction.x > 0.0))
{
vec4 x = Sample(vTexSampler.s, coords);
vec2 p = vec2(dot(x, vChannelMask), vTexMetadata.s);
vec2 p = vec2(dot(x, vChannelMask), vTexPalette);
c = vPalettedFraction * texture(Palette, p) + vRGBAFraction * x + vColorFraction * vTexCoord;
}
@@ -182,8 +182,8 @@ void main()
if (c.a == 0.0)
discard;
if (vRGBAFraction.r > 0.0 && vTexMetadata.s > 0.0)
c = ColorShift(c, vTexMetadata.s);
if (vRGBAFraction.r > 0.0 && vTexPalette > 0.0)
c = ColorShift(c, vTexPalette);
float depth = gl_FragCoord.z;
if (length(vDepthMask) > 0.0)

View File

@@ -2,6 +2,7 @@
uniform vec3 Scroll;
uniform vec3 p1, p2;
uniform float PaletteRows;
in vec3 aVertexPosition;
in vec4 aVertexTexCoord;
@@ -9,7 +10,7 @@ in vec2 aVertexTexMetadata;
in vec4 aVertexTint;
out vec4 vTexCoord;
out vec2 vTexMetadata;
out float vTexPalette;
out vec4 vChannelMask;
out vec4 vDepthMask;
out vec2 vTexSampler;
@@ -100,7 +101,7 @@ void main()
{
gl_Position = vec4((aVertexPosition - Scroll) * p1 + p2, 1);
vTexCoord = aVertexTexCoord;
vTexMetadata = aVertexTexMetadata;
vTexPalette = aVertexTexMetadata.s / PaletteRows;
vec4 attrib = UnpackChannelAttributes(aVertexTexMetadata.t);
vChannelMask = SelectChannelMask(attrib.s);

View File

@@ -4,7 +4,8 @@ precision mediump float;
#endif
uniform sampler2D Palette, DiffuseTexture;
uniform vec2 PaletteRows;
uniform vec2 Palettes;
uniform float PaletteRows;
uniform vec4 LightDirection;
uniform vec3 AmbientLight, DiffuseLight;
@@ -17,12 +18,12 @@ out vec4 fragColor;
void main()
{
vec4 x = texture(DiffuseTexture, vTexCoord.st);
vec4 color = texture(Palette, vec2(dot(x, vChannelMask), PaletteRows.x));
vec4 color = texture(Palette, vec2(dot(x, vChannelMask), (Palettes.x + 0.5) / PaletteRows));
if (color.a < 0.01)
discard;
vec4 y = texture(DiffuseTexture, vTexCoord.pq);
vec4 normal = (2.0 * texture(Palette, vec2(dot(y, vNormalsMask), PaletteRows.y)) - 1.0);
vec4 normal = (2.0 * texture(Palette, vec2(dot(y, vNormalsMask), (Palettes.y + 0.5) / PaletteRows)) - 1.0);
vec3 intensity = AmbientLight + DiffuseLight * max(dot(normal, LightDirection), 0.0);
fragColor = vec4(intensity * color.rgb, color.a);
}