yum-mirror/slang

Making it easier to work with shaders

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

Yong HeMake `-no-mangle` option work, add `-no-hlsl-binding`. (#3817)a23adc221

master
2.3 KiB115 linesraw
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
59	float4 caa;
60	float3 cab;
61	float  cac;
62	float2 cad;
63	float2 cae;
64
65MID_CBUFFER(CA)
66
67	Texture2D ta R(: register(t0));
68	SamplerState sa R(: register(s0));
69
70END_CBUFFER(CA, register(b0))
71
72BEGIN_CBUFFER(CB)
73
74	float4 cba;
75	float3 cbb;
76	float  cbc;
77	float2 cbd;
78	float2 cbe;
79
80MID_CBUFFER(CB)
81
82	Texture2D tbx R(: register(t1));
83	Texture2D tby R(: register(t2));
84	SamplerState sb R(: register(s1));
85
86END_CBUFFER(CB, register(b1))
87
88BEGIN_CBUFFER(CC)
89
90	float4 cca;
91	float3 ccb;
92	float  ccc;
93	float2 ccd;
94	float2 cce;
95
96MID_CBUFFER(CC)
97
98	Texture2D tc R(: register(t3));
99	SamplerState scx R(: register(s2));
100	SamplerState 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:
107	return 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}