HLSL Pixel Shader that does palette swap

Posted by derrace on Game Development See other posts from Game Development or by derrace
Published on 2012-11-22T03:47:53Z Indexed on 2012/11/22 5:13 UTC
Read the original article Hit count: 363

Filed under:
|
|
|
|

I have implemented a simple pixel shader which can replace a particular colour in a sprite with another colour.

It looks something like this:

sampler input : register(s0);
float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0
{  
    float4 colour = tex2D(input, coords);
    if(colour.r == sourceColours[0].r &&
    colour.g == sourceColours[0].g &&
    colour.b == sourceColours[0].b) return targetColours[0];
    return colour;
}

What I would like to do is have the function take in 2 textures, a default table, and a lookup table (both same dimensions). Grab the current pixel, and find the location XY (coords) of the matching RGB in the default table, and then substitute it with the colour found in the lookup table at XY.

I have figured how to pass the Textures from C# into the function, but I am not sure how to find the coords in the default table by matching the colour.

Could someone kindly assist?

Thanks in advance.

© Game Development or respective owner

Related posts about c#

Related posts about shaders