diff options
Diffstat (limited to 'tests/bindings/multi-file.hlsl')
| -rw-r--r-- | tests/bindings/multi-file.hlsl | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/tests/bindings/multi-file.hlsl b/tests/bindings/multi-file.hlsl index 6269c703e..8c719bbcf 100644 --- a/tests/bindings/multi-file.hlsl +++ b/tests/bindings/multi-file.hlsl @@ -8,8 +8,14 @@ #ifdef __SLANG__ #define R(X) /**/ +#define BEGIN_CBUFFER(NAME) cbuffer NAME +#define END_CBUFFER(NAME, REG) /**/ +#define CBUFFER_REF(NAME, FIELD) FIELD #else #define R(X) X +#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME +#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; } +#define CBUFFER_REF(NAME, FIELD) NAME.FIELD #define sharedC sharedC_0 #define sharedCA sharedCA_0 @@ -55,13 +61,15 @@ float4 use(Texture2D t, SamplerState s) // Start with some parameters that will appear in both shaders Texture2D sharedT R(: register(t0)); SamplerState sharedS R(: register(s0)); -cbuffer sharedC R(: register(b0)) + +BEGIN_CBUFFER(sharedC) { - float3 sharedCA R(: packoffset(c0)); - float sharedCB R(: packoffset(c0.w)); - float3 sharedCC R(: packoffset(c1)); - float2 sharedCD R(: packoffset(c2)); + float3 sharedCA; + float sharedCB; + float3 sharedCC; + float2 sharedCD; } +END_CBUFFER(sharedC, register(b0)) // Then some parameters specific to this shader // (these will get placed before the ones in the `extra` file, @@ -69,13 +77,15 @@ cbuffer sharedC R(: register(b0)) Texture2D vertexT R(: register(t1)); SamplerState vertexS R(: register(s1)); -cbuffer vertexC R(: register(b1)) + +BEGIN_CBUFFER(vertexC) { - float3 vertexCA R(: packoffset(c0)); - float vertexCB R(: packoffset(c0.w)); - float3 vertexCC R(: packoffset(c1)); - float2 vertexCD R(: packoffset(c2)); + float3 vertexCA; + float vertexCB; + float3 vertexCC; + float2 vertexCD; } +END_CBUFFER(vertexC, register(b1)) // And end with some shared parameters again Texture2D sharedTV R(: register(t2)); @@ -86,9 +96,9 @@ float4 main() : SV_POSITION { // Go ahead and use everything here, just to make sure things got placed correctly return use(sharedT, sharedS) - + use(sharedCD) + + use(CBUFFER_REF(sharedC, sharedCD)) + use(vertexT, vertexS) - + use(vertexCD) + + use(CBUFFER_REF(vertexC, vertexCD)) + use(sharedTV, vertexS) ; }
\ No newline at end of file |
