fna-workbench

fna-workbench Git Source Tree


Root/src/Graphics/Effect/YUVToRGBA/YUVToRGBAEffect.fx

/* YUV-to-RGBA Effect
 * Written by Ethan "flibitijibibo" Lee
 *
 * This effect is based on the YUV-to-RGBA GLSL shader found in SDL.
 * Thus, it also released under the zlib license:
 */
 
sampler samp0 : register(s0);
sampler samp1 : register(s1);
sampler samp2 : register(s2);
 
void VS(inout float2 tex : TEXCOORD0,
    inout float4 pos : SV_Position)
{
    pos.w = 1.0;
}
 
float4 PS(float2 tex : TEXCOORD0) : SV_Target0
{
    const float3 offset = float3(-0.0625, -0.5, -0.5);
    const float3 Rcoeff = float3(1.164,  0.000,  1.596);
    const float3 Gcoeff = float3(1.164, -0.391, -0.813);
    const float3 Bcoeff = float3(1.164,  2.018,  0.000);
 
    float3 yuv;
    yuv.x = tex2D(samp0, tex).x;
    yuv.y = tex2D(samp1, tex).x;
    yuv.z = tex2D(samp2, tex).x;
    yuv += offset;
 
    float4 rgba;
    rgba.x = dot(yuv, Rcoeff);
    rgba.y = dot(yuv, Gcoeff);
    rgba.z = dot(yuv, Bcoeff);
    rgba.w = 1.0;
    return rgba;
}
 
Technique T
{
    Pass P
    {
        VertexShader = compile vs_3_0 VS();
        PixelShader = compile ps_3_0 PS();
    }
}

Archive Download this file

Branches

Number of commits:
Page rendered in 0.11243s using 11 queries.