SPIRV-Cross/reference/shaders-hlsl/vert/qualifiers.vert
Hans-Kristian Arntzen d6b29ab017 HLSL: Rewrite how block IO is emitted.
Emit block members directly in the IO structs and sort them.
Ensures we can get some kind of stable order between stages.

To complete the story, we'll need to be able to inject unused inputs /
builtins, or eliminate unused outputs (probably easiest solution).
2021-06-28 15:04:49 +02:00

57 lines
1.4 KiB
GLSL

struct Block
{
float vFlat;
float vCentroid;
float vSample;
float vNoperspective;
};
static float4 gl_Position;
static float vFlat;
static float vCentroid;
static float vSample;
static float vNoperspective;
static Block vout;
struct SPIRV_Cross_Output
{
nointerpolation float vFlat : TEXCOORD0;
centroid float vCentroid : TEXCOORD1;
sample float vSample : TEXCOORD2;
noperspective float vNoperspective : TEXCOORD3;
nointerpolation float Block_vFlat : TEXCOORD4;
centroid float Block_vCentroid : TEXCOORD5;
sample float Block_vSample : TEXCOORD6;
noperspective float Block_vNoperspective : TEXCOORD7;
float4 gl_Position : SV_Position;
};
void vert_main()
{
gl_Position = 1.0f.xxxx;
vFlat = 0.0f;
vCentroid = 1.0f;
vSample = 2.0f;
vNoperspective = 3.0f;
vout.vFlat = 0.0f;
vout.vCentroid = 1.0f;
vout.vSample = 2.0f;
vout.vNoperspective = 3.0f;
}
SPIRV_Cross_Output main()
{
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
stage_output.vFlat = vFlat;
stage_output.vCentroid = vCentroid;
stage_output.vSample = vSample;
stage_output.vNoperspective = vNoperspective;
stage_output.Block_vFlat = vout.vFlat;
stage_output.Block_vCentroid = vout.vCentroid;
stage_output.Block_vSample = vout.vSample;
stage_output.Block_vNoperspective = vout.vNoperspective;
return stage_output;
}