OpenRCT2/data/shaders/drawimage.frag

47 lines
1.0 KiB
GLSL
Raw Normal View History

2016-06-15 18:53:26 +02:00
#version 150
2016-06-09 00:13:49 +02:00
uniform vec4 uPalette[256];
uniform usampler2DArray uTexture;
flat in ivec4 fClip;
flat in int fFlags;
in vec4 fColour;
flat in int fTexColourAtlas;
in vec2 fTexColourCoords;
flat in int fTexMaskAtlas;
in vec2 fTexMaskCoords;
flat in int fMask;
2016-06-09 00:13:49 +02:00
in vec2 fPosition;
in vec2 fTextureCoordinate;
2016-06-15 18:53:26 +02:00
out vec4 oColour;
2016-06-09 00:13:49 +02:00
void main()
{
if (fPosition.x < fClip.x || fPosition.x > fClip.z ||
fPosition.y < fClip.y || fPosition.y > fClip.w)
2016-06-09 00:13:49 +02:00
{
discard;
}
vec4 texel = uPalette[texture(uTexture, vec3(fTexColourCoords, float(fTexColourAtlas))).r];
vec4 mask = uPalette[texture(uTexture, vec3(fTexMaskCoords, float(fTexMaskAtlas))).r];
if (fMask != 0)
{
oColour = texel * mask;
}
else
{
if ((fFlags & 1) != 0)
{
oColour = vec4(fColour.rgb, fColour.a * texel.a);
}
else
{
oColour = texel;
}
}
2016-06-09 00:13:49 +02:00
}