mirror of https://github.com/OpenRCT2/OpenRCT2.git
45 lines
1.1 KiB
GLSL
45 lines
1.1 KiB
GLSL
#version 150
|
|
|
|
// clang-format off
|
|
uniform usampler2D uOpaqueTex;
|
|
uniform sampler2D uOpaqueDepth;
|
|
uniform usampler2D uTransparentTex;
|
|
uniform sampler2D uTransparentDepth;
|
|
uniform usampler2D uPaletteTex;
|
|
uniform usampler2D uBlendPaletteTex;
|
|
// clang-format off
|
|
|
|
in vec2 fTextureCoordinate;
|
|
|
|
out uint oColour;
|
|
|
|
void main()
|
|
{
|
|
uint opaque = texture(uOpaqueTex, fTextureCoordinate).r;
|
|
float opaqueDepth = texture(uOpaqueDepth, fTextureCoordinate).r;
|
|
uint transparent = texture(uTransparentTex, fTextureCoordinate).r;
|
|
float transparentDepth = texture(uTransparentDepth, fTextureCoordinate).r;
|
|
|
|
if (opaqueDepth <= transparentDepth)
|
|
{
|
|
transparent = 0u;
|
|
}
|
|
|
|
uint blendColour = (transparent & 0xff00u) >> 8;
|
|
if(blendColour > 0u)
|
|
{
|
|
if((transparent & 0x00ffu) != 0u)
|
|
{
|
|
oColour = blendColour;
|
|
}
|
|
else
|
|
{
|
|
oColour = texture(uBlendPaletteTex, vec2(opaque, blendColour) / 256.f).r;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
oColour = texture(uPaletteTex, vec2(opaque, transparent) / 256.f).r;
|
|
}
|
|
}
|