yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
efdbb954c
master
1//TEST:SIMPLE(filecheck=CHECK):-target hlsl -profile ps_5_1 -entry main -parameter-blocks-use-register-spaces 2 3// Confirm that Slang `ParameterBlock<T>` generates 4// parameter bindings like we expect. 5 6// CHECK: Texture2D{{.*}} p_t_0 : register(t0); 7// CHECK: Texture2D{{.*}} p_ta_0[{{.*}}] : register(t1); 8 9// CHECK: Texture2D{{.*}} p1_t_0 : register(t0, space1); 10// CHECK: SamplerState p1_s_0 : register(s0, space1); 11float4 use(float4 val) { return val; }; 12float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } 13 14#ifdef __SLANG__ 15 16struct S 17{ 18 Texture2D t; 19 Texture2D ta[4]; 20 SamplerState s; 21}; 22 23ParameterBlock<S> p; 24ParameterBlock<S> p1; 25 26float4 main(float v : V) : SV_Target 27{ 28 return use(p.t, p.s) 29 + use(p.ta[int(v)], p.s) 30 + use(p1.t, p1.s) 31 + use(p1.ta[int(v)], p1.s); 32} 33 34#else 35 36Texture2D p_t_0 : register(t0, space0); 37Texture2D p_ta_0[4] : register(t1, space0); 38SamplerState p_s_0 : register(s0, space0); 39 40Texture2D p1_t_0 : register(t0, space1); 41Texture2D p1_ta_0[4] : register(t1, space1); 42SamplerState p1_s_0 : register(s0, space1); 43 44float4 main(float v : V) : SV_TARGET 45{ 46 int _S2 = int(v); 47 return use(p_t_0, p_s_0) 48 + use(p_ta_0[_S2], p_s_0) 49 + use(p1_t_0, p1_s_0) 50 + use(p1_ta_0[_S2], p1_s_0); 51} 52 53#endif