12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- Texture2D theTextureY : register(t0);
- Texture2D theTextureUV : register(t1);
- SamplerState theSampler : register(s0);
- struct PixelShaderInput
- {
- float4 pos : SV_POSITION;
- float2 tex : TEXCOORD0;
- float4 color : COLOR0;
- };
- #define NVRS \
- "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
- " DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
- " DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
- " DENY_HULL_SHADER_ROOT_ACCESS )," \
- "RootConstants(num32BitConstants=32, b0),"\
- "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
- "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
- "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
- [RootSignature(NVRS)]
- float4 main(PixelShaderInput input) : SV_TARGET
- {
- const float3 offset = {0.0, -0.501960814, -0.501960814};
- const float3 Rcoeff = {1.0000, 0.0000, 1.4020};
- const float3 Gcoeff = {1.0000, -0.3441, -0.7141};
- const float3 Bcoeff = {1.0000, 1.7720, 0.0000};
- float4 Output;
- float3 yuv;
- yuv.x = theTextureY.Sample(theSampler, input.tex).r;
- yuv.yz = theTextureUV.Sample(theSampler, input.tex).gr;
- yuv += offset;
- Output.r = dot(yuv, Rcoeff);
- Output.g = dot(yuv, Gcoeff);
- Output.b = dot(yuv, Bcoeff);
- Output.a = 1.0f;
- return Output * input.color;
- }
|