yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
a23adc221
master
1//TEST:COMPARE_HLSL: -profile ps_4_0 -entry main 2 3// Confirm that resources inside constant buffers get correct locations, 4// including the case where there are *multiple* constant buffers 5// with resources. 6 7#ifdef __SLANG__ 8#define R ( X ) /**/ 9#define BEGIN_CBUFFER ( NAME ) cbuffer NAME { 10#define MID_CBUFFER ( NAME ) /**/ 11#define END_CBUFFER ( NAME , REG ) /**/ } 12#define CBUFFER_REF ( NAME , FIELD ) FIELD 13#else 14#define R ( X ) X 15#define BEGIN_CBUFFER ( NAME ) struct SLANG_ParameterGroup_##NAME { 16#define MID_CBUFFER ( NAME ) }; 17#define END_CBUFFER ( NAME , REG ) cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; } 18#define CBUFFER_REF ( NAME , FIELD ) NAME.FIELD 19 20#define CA CA_0 21#define caa caa_0 22#define cab cab_0 23#define cac cac_0 24#define cad cad_0 25#define cae cae_0 26#define ta CA_ta_0 27#define sa CA_sa_0 28 29#define CB CB_0 30#define cba cba_0 31#define cbb cbb_0 32#define cbc cbc_0 33#define cbd cbd_0 34#define cbe cbe_0 35#define tbx CB_tbx_0 36#define tby CB_tby_0 37#define sb CB_sb_0 38 39#define CC CC_0 40#define cca cca_0 41#define ccb ccb_0 42#define ccc ccc_0 43#define ccd ccd_0 44#define cce cce_0 45#define tc CC_tc_0 46#define scx CC_scx_0 47#define scy CC_scy_0 48 49#endif 50 51float4 use ( float val ) { return val ; }; 52float4 use ( float2 val ) { return float4 ( val , 0.0 , 0.0 ); }; 53float4 use ( float3 val ) { return float4 ( val , 0.0 ); }; 54float4 use ( float4 val ) { return val ; }; 55float4 use ( Texture2D t , SamplerState s ) { return t . Sample ( s , 0.0 ); } 56 57BEGIN_CBUFFER ( CA ) 58 59float4 caa ; 60float3 cab ; 61float cac ; 62float2 cad ; 63float2 cae ; 64 65MID_CBUFFER ( CA ) 66 67Texture2D ta R ( :register ( t0 )); 68SamplerState sa R ( :register ( s0 )); 69 70END_CBUFFER ( CA , register ( b0 )) 71 72BEGIN_CBUFFER ( CB ) 73 74float4 cba ; 75float3 cbb ; 76float cbc ; 77float2 cbd ; 78float2 cbe ; 79 80MID_CBUFFER ( CB ) 81 82Texture2D tbx R ( :register ( t1 )); 83Texture2D tby R ( :register ( t2 )); 84SamplerState sb R ( :register ( s1 )); 85 86END_CBUFFER ( CB , register ( b1 )) 87 88BEGIN_CBUFFER ( CC ) 89 90float4 cca ; 91float3 ccb ; 92float ccc ; 93float2 ccd ; 94float2 cce ; 95 96MID_CBUFFER ( CC ) 97 98Texture2D tc R ( :register ( t3 )); 99SamplerState scx R ( :register ( s2 )); 100SamplerState scy R ( :register ( s3 )); 101 102END_CBUFFER ( CC , register ( b2 )) 103 104float4 main () : SV_TARGET 105{ 106// Go ahead and use everything in this case: 107return use ( ta , sa ) 108+ use ( tbx , sb ) 109+ use ( tby , scx ) 110+ use ( tc , scy ) 111+ use ( CBUFFER_REF ( CA , cae )) 112+ use ( CBUFFER_REF ( CB , cbe )) 113+ use ( CBUFFER_REF ( CC , cce )) 114; 115}