yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
bf8a6ef7
main
1SamplerState g_sSamp : register(s0 ); 2 3RWTexture1D < float > g_tTex1df1 ; 4RWTexture1D < int > g_tTex1di1 ; 5RWTexture1D < uint > g_tTex1du1 ; 6 7RWTexture2D < float > g_tTex2df1 ; 8RWTexture2D < int > g_tTex2di1 ; 9RWTexture2D < uint > g_tTex2du1 ; 10 11RWTexture3D < float > g_tTex3df1 ; 12RWTexture3D < int > g_tTex3di1 ; 13RWTexture3D < uint > g_tTex3du1 ; 14 15RWTexture1DArray < float > g_tTex1df1a ; 16RWTexture1DArray < int > g_tTex1di1a ; 17RWTexture1DArray < uint > g_tTex1du1a ; 18 19RWTexture2DArray < float > g_tTex2df1a ; 20RWTexture2DArray < int > g_tTex2di1a ; 21RWTexture2DArray < uint > g_tTex2du1a ; 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 float uf1 ; 39uniform int ui1 ; 40uniform uint uu1 ; 41 42int Fn1 ( in int x ) { return x ; } 43uint Fn1 ( in uint x ) { return x ; } 44float Fn1 ( in float x ) { return x ; } 45 46void Fn2 ( out int x ) { x = int ( 0 ); } 47void Fn2 ( out uint x ) { x = uint ( 0 ); } 48void Fn2 ( out float x ) { x = float ( 0 ); } 49 50float SomeValue () { return c1 ; } 51 52PS_OUTPUT main () 53{ 54PS_OUTPUT psout ; 55 56// 1D 57g_tTex1df1 [ c1 ]; 5859 float r00 = g_tTex1df1 [ c1 ]; 60int r01 = g_tTex1di1 [ c1 ]; 61uint r02 = g_tTex1du1 [ c1 ]; 62 63// 2D 64float r10 = g_tTex2df1 [ c2 ]; 65int r11 = g_tTex2di1 [ c2 ]; 66uint r12 = g_tTex2du1 [ c2 ]; 6768 // 3D 69float r20 = g_tTex3df1 [ c3 ]; 70int r21 = g_tTex3di1 [ c3 ]; 71uint r22 = g_tTex3du1 [ c3 ]; 72 73float lf1 = uf1 ; 74 75// Test as L-values 76// 1D 77g_tTex1df1 [ c1 ] = SomeValue (); // complex R-value 78g_tTex1df1 [ c1 ] = lf1 ; 79g_tTex1di1 [ c1 ] = int ( 2 ); 80g_tTex1du1 [ c1 ] = uint ( 3 ); 81 82// Test some operator= things, which need to do both a load and a store. 83float val1 = ( g_tTex1df1 [ c1 ] *= 2.0 ); 84g_tTex1df1 [ c1 ] -= 3.0 ; 85g_tTex1df1 [ c1 ] += 4.0 ; 8687 g_tTex1di1 [ c1 ] /= 2 ; 88g_tTex1di1 [ c1 ] %= 2 ; 89g_tTex1di1 [ c1 ] &= 0xffff ; 90g_tTex1di1 [ c1 ] |= 0xf0f0 ; 91g_tTex1di1 [ c1 ] <<= 2 ; 92g_tTex1di1 [ c1 ] >>= 2 ; 93 94// 2D 95g_tTex2df1 [ c2 ] = SomeValue (); // complex L-value 96g_tTex2df1 [ c2 ] = lf1 ; 97g_tTex2di1 [ c2 ] = int ( 5 ); 98g_tTex2du1 [ c2 ] = uint ( 6 ); 99100 // 3D 101g_tTex3df1 [ c3 ] = SomeValue (); // complex L-value 102g_tTex3df1 [ c3 ] = lf1 ; 103g_tTex3di1 [ c3 ] = int ( 8 ); 104g_tTex3du1 [ c3 ] = uint ( 9 ); 105 106// Test function calling 107Fn1 ( g_tTex1df1 [ c1 ]); // in 108Fn1 ( g_tTex1di1 [ c1 ]); // in 109Fn1 ( g_tTex1du1 [ c1 ]); // in 110 111Fn2 ( g_tTex1df1 [ c1 ]); // out 112Fn2 ( g_tTex1di1 [ c1 ]); // out 113Fn2 ( g_tTex1du1 [ c1 ]); // out 114 115// Test increment operators 116// pre-ops 117++ g_tTex1df1 [ c1 ]; 118++ g_tTex1di1 [ c1 ]; 119++ g_tTex1du1 [ c1 ]; 120 121-- g_tTex1df1 [ c1 ]; 122-- g_tTex1di1 [ c1 ]; 123-- g_tTex1du1 [ c1 ]; 124 125// post-ops 126g_tTex1df1 [ c1 ]++; 127g_tTex1du1 [ c1 ]--; 128g_tTex1di1 [ c1 ]++; 129 130g_tTex1df1 [ c1 ]--; 131g_tTex1di1 [ c1 ]++; 132g_tTex1du1 [ c1 ]--; 133 134// read and write 135g_tTex1df1 [ 1 ] = g_tTex2df1 [ int2 ( 2 , 3 )]; 136 137psout . Color = 1.0 ; 138 139return psout ; 140}