mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-14 13:51:04 +00:00
7ee29ba730
Issue #791 was partially fixed by PR #1161 (the mat mul implicit truncations were its main point), but it still wouldn't compile due to the use of ConstantBuffer as an identifier. Apparently those fall into the same class as "float float", where float is both a type and an identifier. This allows struct definitions with such keyword-identifiers, and adds ConstantBuffer to the set. 'cbuffer int' is legal in HLSL, and 'struct int' appears to only be rejected due to the redefinition of the 'int' type. Fixes #791
33 lines
663 B
GLSL
33 lines
663 B
GLSL
|
|
cbuffer ConstantBuffer : register( b0 )
|
|
{
|
|
matrix World;
|
|
matrix View;
|
|
matrix Projection;
|
|
};
|
|
|
|
struct VS_INPUT
|
|
{
|
|
float4 Pos : POSITION;
|
|
float3 Norm : NORMAL;
|
|
};
|
|
|
|
struct PS_INPUT
|
|
{
|
|
float4 Pos : SV_POSITION;
|
|
float3 Norm : TEXCOORD0;
|
|
};
|
|
|
|
PS_INPUT main( VS_INPUT input )
|
|
{
|
|
int ConstantBuffer = 42; // test ConstantBuffer as an identifier
|
|
|
|
PS_INPUT output = (PS_INPUT)0;
|
|
output.Pos = mul( input.Pos, World );
|
|
output.Pos = mul( output.Pos, View );
|
|
output.Pos = mul( output.Pos, Projection );
|
|
output.Norm = mul( input.Norm, World ); // Work when output.Norm = mul( input.Norm, (float3x3)World );
|
|
|
|
return output;
|
|
}
|