File: hlsl.rw.vec2.bracket.frag

package info (click to toggle)
glslang 16.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 51,712 kB
  • sloc: cpp: 92,305; yacc: 4,320; sh: 603; python: 305; ansic: 94; javascript: 74; makefile: 17
file content (140 lines) | stat: -rw-r--r-- 2,975 bytes parent folder | download | duplicates (19)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
SamplerState       g_sSamp : register(s0);

RWTexture1D <float2> g_tTex1df2;
RWTexture1D <int2>   g_tTex1di2;
RWTexture1D <uint2>  g_tTex1du2;

RWTexture2D <float2> g_tTex2df2;
RWTexture2D <int2>   g_tTex2di2;
RWTexture2D <uint2>  g_tTex2du2;

RWTexture3D <float2> g_tTex3df2;
RWTexture3D <int2>   g_tTex3di2;
RWTexture3D <uint2>  g_tTex3du2;

RWTexture1DArray <float2> g_tTex1df2a;
RWTexture1DArray <int2>   g_tTex1di2a;
RWTexture1DArray <uint2>  g_tTex1du2a;

RWTexture2DArray <float2> g_tTex2df2a;
RWTexture2DArray <int2>   g_tTex2di2a;
RWTexture2DArray <uint2>  g_tTex2du2a;

struct PS_OUTPUT
{
    float4 Color : SV_Target0;
};

uniform int   c1;
uniform int2  c2;
uniform int3  c3;
uniform int4  c4;

uniform int   o1;
uniform int2  o2;
uniform int3  o3;
uniform int4  o4;

uniform float2 uf2;
uniform int2   ui2;
uniform uint2  uu2;

int2   Fn1(in int2 x)   { return x; }
uint2  Fn1(in uint2 x)  { return x; }
float2 Fn1(in float2 x) { return x; }

void Fn2(out int2 x)   { x = int2(0,0); }
void Fn2(out uint2 x)  { x = uint2(0,0); }
void Fn2(out float2 x) { x = float2(0,0); }

float2 SomeValue() { return c2; }

PS_OUTPUT main()
{
   PS_OUTPUT psout;

   // 1D
   g_tTex1df2[c1];
   
   float2 r00 = g_tTex1df2[c1];
   int2   r01 = g_tTex1di2[c1];
   uint2  r02 = g_tTex1du2[c1];

   // 2D
   float2 r10 = g_tTex2df2[c2];
   int2   r11 = g_tTex2di2[c2];
   uint2  r12 = g_tTex2du2[c2];
   
   // 3D
   float2 r20 = g_tTex3df2[c3];
   int2   r21 = g_tTex3di2[c3];
   uint2  r22 = g_tTex3du2[c3];

   float2 lf2 = uf2;

   // Test as L-values
   // 1D
   g_tTex1df2[c1] = SomeValue(); // complex R-value
   g_tTex1df2[c1] = lf2;
   g_tTex1di2[c1] = int2(2,2);
   g_tTex1du2[c1] = uint2(3,2);

   // Test some operator= things, which need to do both a load and a store.
   float2 val1 = (g_tTex1df2[c1] *= 2.0);
   g_tTex1df2[c1] -= 3.0;
   g_tTex1df2[c1] += 4.0;
   
   g_tTex1di2[c1] /= 2;
   g_tTex1di2[c1] %= 2;
   g_tTex1di2[c1] &= 0xffff;
   g_tTex1di2[c1] |= 0xf0f0;
   g_tTex1di2[c1] <<= 2;
   g_tTex1di2[c1] >>= 2;

   // 2D
   g_tTex2df2[c2] = SomeValue(); // complex L-value
   g_tTex2df2[c2] = lf2;
   g_tTex2di2[c2] = int2(5,2);
   g_tTex2du2[c2] = uint2(6,2);
   
   // 3D
   g_tTex3df2[c3] = SomeValue(); // complex L-value
   g_tTex3df2[c3] = lf2;
   g_tTex3di2[c3] = int2(8,6);
   g_tTex3du2[c3] = uint2(9,2);

   // Test function calling
   Fn1(g_tTex1df2[c1]);  // in
   Fn1(g_tTex1di2[c1]);  // in
   Fn1(g_tTex1du2[c1]);  // in

   Fn2(g_tTex1df2[c1]);  // out
   Fn2(g_tTex1di2[c1]);  // out
   Fn2(g_tTex1du2[c1]);  // out

   // Test increment operators
   // pre-ops
   ++g_tTex1df2[c1];
   ++g_tTex1di2[c1];
   ++g_tTex1du2[c1];

   --g_tTex1df2[c1];
   --g_tTex1di2[c1];
   --g_tTex1du2[c1];

   // post-ops
   g_tTex1df2[c1]++;
   g_tTex1du2[c1]--;
   g_tTex1di2[c1]++;

   g_tTex1df2[c1]--;
   g_tTex1di2[c1]++;
   g_tTex1du2[c1]--;

   // read and write
   g_tTex1df2[1] = g_tTex2df2[int2(2,3)];

   psout.Color = 1.0;

   return psout;
}