// // Copyright 2012 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // sampler2D tex : s0; uniform float4 mult : c0; uniform float4 add : c1; // Passthrough Pixel Shader // Outputs texture 0 sampled at texcoord 0. float4 passthroughps(float4 texcoord : TEXCOORD0) : COLOR { return tex2D(tex, texcoord.xy); }; // Luminance Conversion Pixel Shader // Performs a mad operation using the LA data from the texture with mult.xw and add.xw. // Returns data in the form of llla float4 luminanceps(float4 texcoord : TEXCOORD0) : COLOR { return (tex2D(tex, texcoord.xy).xw * mult.xw + add.xw).xxxy; }; float4 luminancepremultps(float4 texcoord : TEXCOORD0) : COLOR { float4 luma = tex2D(tex, texcoord.xy).xxxw; luma.rgb *= luma.a; return luma * mult + add; }; float4 luminanceunmultps(float4 texcoord : TEXCOORD0) : COLOR { float4 luma = tex2D(tex, texcoord.xy).xxxw; if (luma.a > 0.0f) { luma.rgb /= luma.a; } return luma * mult + add; }; // RGB/A Component Mask Pixel Shader // Performs a mad operation using the texture's RGBA data with mult.xyzw and add.xyzw. // Returns data in the form of rgba float4 componentmaskps(float4 texcoord : TEXCOORD0) : COLOR { return tex2D(tex, texcoord.xy) * mult + add; }; float4 componentmaskpremultps(float4 texcoord : TEXCOORD0) : COLOR { float4 color = tex2D(tex, texcoord.xy); color.rgb *= color.a; return color * mult + add; }; float4 componentmaskunmultps(float4 texcoord : TEXCOORD0) : COLOR { float4 color = tex2D(tex, texcoord.xy); if (color.a > 0.0f) { color.rgb /= color.a; } return color * mult + add; };