Change PaletteReference.TextureIndex to an integer.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user