yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Yong HeImprove compile time performance. (#3857)efdbb954c

master
1.2 KiB53 linesraw
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