summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
blob: ecc593cc78f1c4350272f44d79ab92d8810695b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//
// Copyright (c) 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;
};