mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-13 21:50:06 +00:00
132cf53737
The grammar for no semicolon and no object name for cbuffer/tbuffer was correct, but the production still skipped the anonymous declarations if an identifier followed.
48 lines
1.0 KiB
GLSL
48 lines
1.0 KiB
GLSL
cbuffer buf1 {
|
|
float4 v1;
|
|
}; // extraneous ;
|
|
|
|
tbuffer buf2 {
|
|
float4 v2;
|
|
}; // extraneous ;
|
|
|
|
cbuffer cbufName {
|
|
float4 v3 : packoffset(c0);
|
|
int i3 : packoffset(c1.y);
|
|
}
|
|
|
|
tbuffer tbufName : register(t8) {
|
|
float4 v4 : packoffset(c1);
|
|
int i4 : packoffset(c3);
|
|
float f1 : packoffset(c3.w);
|
|
float f3 : packoffset(c4.x);
|
|
float f4 : packoffset(c4.y);
|
|
float f5 : packoffset(c4.z);
|
|
float f6 : packoffset(c);
|
|
float f7 : packoffset(c8);
|
|
float3x4 m1 : packoffset(c7);
|
|
row_major float3x4 m2 : packoffset(c11);
|
|
column_major float3x4 m3 : packoffset(c15);
|
|
float3x4 m4 : packoffset(c19);
|
|
}
|
|
|
|
float foo() // float looks like identifier, but can't be part of tbuffer
|
|
{
|
|
return 1.0;
|
|
}
|
|
|
|
struct id {
|
|
float4 a;
|
|
};
|
|
|
|
cbuffer cbufName2 {
|
|
float4 v24;
|
|
}
|
|
|
|
id PixelShaderFunction(float4 input : SV_POSITION) : SV_TARGET0 // id looks like id for cbuffer name, but can't be
|
|
{
|
|
id ret;
|
|
ret.a = v24 + (input + v1 + v2 + v3 + v4) * foo();
|
|
return ret;
|
|
}
|