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