yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
f042e407
main
1SamplerState g_sSamp : register(s0 ); 2 3RWTexture1D < float4 > g_tTex1df4 : register(t0 ); 4RWTexture1D < int4 > g_tTex1di4 ; 5RWTexture1D < uint4 > g_tTex1du4 ; 6 7RWTexture2D < float4 > g_tTex2df4 ; 8RWTexture2D < int4 > g_tTex2di4 ; 9RWTexture2D < uint4 > g_tTex2du4 ; 10 11RWTexture3D < float4 > g_tTex3df4 ; 12RWTexture3D < int4 > g_tTex3di4 ; 13RWTexture3D < uint4 > g_tTex3du4 ; 14 15RWTexture1DArray < float4 > g_tTex1df4a ; 16RWTexture1DArray < int4 > g_tTex1di4a ; 17RWTexture1DArray < uint4 > g_tTex1du4a ; 18 19RWTexture2DArray < float4 > g_tTex2df4a ; 20RWTexture2DArray < int4 > g_tTex2di4a ; 21RWTexture2DArray < uint4 > g_tTex2du4a ; 22 23struct PS_OUTPUT 24{ 25float4 Color : SV_Target0 ; 26}; 27 28uniform int c1 ; 29uniform int2 c2 ; 30uniform int3 c3 ; 31uniform int4 c4 ; 32 33uniform int o1 ; 34uniform int2 o2 ; 35uniform int3 o3 ; 36uniform int4 o4 ; 37 38uniform float4 uf4 ; 39uniform int4 ui4 ; 40uniform uint4 uu4 ; 41 42int4 Fn1 ( in int4 x ) { return x ; } 43uint4 Fn1 ( in uint4 x ) { return x ; } 44float4 Fn1 ( in float4 x ) { return x ; } 45 46void Fn2 ( out int4 x ) { x = int4 ( 0 ); } 47void Fn2 ( out uint4 x ) { x = uint4 ( 0 ); } 48void Fn2 ( out float4 x ) { x = float4 ( 0 ); } 49 50float4 SomeValue () { return c4 ; } 51 52PS_OUTPUT main () 53{ 54PS_OUTPUT psout ; 55 56// 1D 57g_tTex1df4 [ c1 ]; 5859 float4 r00 = g_tTex1df4 [ c1 ]; 60int4 r01 = g_tTex1di4 [ c1 ]; 61uint4 r02 = g_tTex1du4 [ c1 ]; 62 63// 2D 64float4 r10 = g_tTex2df4 [ c2 ]; 65int4 r11 = g_tTex2di4 [ c2 ]; 66uint4 r12 = g_tTex2du4 [ c2 ]; 6768 // 3D 69float4 r20 = g_tTex3df4 [ c3 ]; 70int4 r21 = g_tTex3di4 [ c3 ]; 71uint4 r22 = g_tTex3du4 [ c3 ]; 72 73float4 lf4 = uf4 ; 74 75// Test as L-values 76// 1D 77g_tTex1df4 [ c1 ] = SomeValue (); // complex R-value 78g_tTex1df4 [ c1 ] = lf4 ; 79g_tTex1di4 [ c1 ] = int4 ( 2 , 2 , 3 , 4 ); 80g_tTex1du4 [ c1 ] = uint4 ( 3 , 2 , 3 , 4 ); 81 82// Test some operator= things, which need to do both a load and a store. 83float4 val1 = ( g_tTex1df4 [ c1 ] *= 2.0 ); 84g_tTex1df4 [ c1 ] -= 3.0 ; 85g_tTex1df4 [ c1 ] += 4.0 ; 8687 g_tTex1di4 [ c1 ] /= 2 ; 88g_tTex1di4 [ c1 ] %= 2 ; 89g_tTex1di4 [ c1 ] &= 0xffff ; 90g_tTex1di4 [ c1 ] |= 0xf0f0 ; 91g_tTex1di4 [ c1 ] <<= 2 ; 92g_tTex1di4 [ c1 ] >>= 2 ; 93 94// 2D 95g_tTex2df4 [ c2 ] = SomeValue (); // complex L-value 96g_tTex2df4 [ c2 ] = lf4 ; 97g_tTex2di4 [ c2 ] = int4 ( 5 , 2 , 3 , 4 ); 98g_tTex2du4 [ c2 ] = uint4 ( 6 , 2 , 3 , 4 ); 99100 // 3D 101g_tTex3df4 [ c3 ] = SomeValue (); // complex L-value 102g_tTex3df4 [ c3 ] = lf4 ; 103g_tTex3di4 [ c3 ] = int4 ( 8 , 6 , 7 , 8 ); 104g_tTex3du4 [ c3 ] = uint4 ( 9 , 2 , 3 , 4 ); 105 106// Test function calling 107Fn1 ( g_tTex1df4 [ c1 ]); // in 108Fn1 ( g_tTex1di4 [ c1 ]); // in 109Fn1 ( g_tTex1du4 [ c1 ]); // in 110 111Fn2 ( g_tTex1df4 [ c1 ]); // out 112Fn2 ( g_tTex1di4 [ c1 ]); // out 113Fn2 ( g_tTex1du4 [ c1 ]); // out 114 115// Test increment operators 116// pre-ops 117++ g_tTex1df4 [ c1 ]; 118++ g_tTex1di4 [ c1 ]; 119++ g_tTex1du4 [ c1 ]; 120 121-- g_tTex1df4 [ c1 ]; 122-- g_tTex1di4 [ c1 ]; 123-- g_tTex1du4 [ c1 ]; 124 125// post-ops 126g_tTex1df4 [ c1 ]++; 127g_tTex1du4 [ c1 ]--; 128g_tTex1di4 [ c1 ]++; 129 130g_tTex1df4 [ c1 ]--; 131g_tTex1di4 [ c1 ]++; 132g_tTex1du4 [ c1 ]--; 133 134// read and write 135g_tTex1df4 [ 1 ] = g_tTex2df4 [ int2 ( 2 , 3 )]; 136 137psout . Color = 1.0 ; 138 139return psout ; 140}