#include "shared.effect" uniform texture2D InputA< bool automatic = true; >; uniform texture2D InputB< bool automatic = true; >; //------------------------------------------------------------------------------ // Technique: Texture //------------------------------------------------------------------------------ // Parameters: // - InputA: RGBA Texture float4 PSTexture(VertexData vtx) : TARGET { return InputA.Sample(BlankSampler, vtx.uv); }; technique Draw { pass { vertex_shader = DefaultVertexShader(vtx); pixel_shader = PSTexture(vtx); }; }; technique Texture { pass { vertex_shader = DefaultVertexShader(vtx); pixel_shader = PSTexture(vtx); }; }; //------------------------------------------------------------------------------ // Technique: TextureColor //------------------------------------------------------------------------------ // Parameters: // - InputA: RGBA Texture float4 PSTextureColor(VertexColorData vtx) : TARGET { return InputA.Sample(BlankSampler, vtx.uv) * vtx.clr; }; technique TextureColor { pass { vertex_shader = ColorVertexShader(vtx); pixel_shader = PSTextureColor(vtx); }; }; //------------------------------------------------------------------------------ // Technique: Texture Premultiplied //------------------------------------------------------------------------------ // Parameters: // - InputA: RGBA Texture float4 PSTexturePremultiplied(VertexData vtx) : TARGET { float4 rgba = InputA.Sample(BlankSampler, vtx.uv); rgba.rgb /= rgba.a > (1. / 1024.) ? rgba.a : 1.0; return rgba; }; technique DrawPremultiplied { pass { vertex_shader = DefaultVertexShader(vtx); pixel_shader = PSTexturePremultiplied(vtx); }; }; technique TexturePremultiplied { pass { vertex_shader = DefaultVertexShader(vtx); pixel_shader = PSTexturePremultiplied(vtx); }; }; //------------------------------------------------------------------------------ // Technique: Restore Alpha //------------------------------------------------------------------------------ // Parameters: // - InputA: RGBX Texture // - InputB: XXXA Texture float4 PSRestoreAlpha(VertexData vtx) : TARGET { float4 rgbx = InputA.Sample(BlankSampler, vtx.uv); float4 xxxa = InputB.Sample(BlankSampler, vtx.uv); rgbx.a = xxxa.a; return rgbx; }; technique RestoreAlpha { pass { vertex_shader = DefaultVertexShader(vtx); pixel_shader = PSRestoreAlpha(vtx); }; }; //------------------------------------------------------------------------------ // Technique: Color //------------------------------------------------------------------------------ // Parameters: float4 PSColor(VertexColorData vtx) : TARGET { return vtx.clr; }; technique Color { pass { vertex_shader = ColorVertexShader(vtx); pixel_shader = PSColor(vtx); }; };