SPIRV-Cross/reference/opt/shaders-hlsl/vert/locations.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

76 lines
1.7 KiB
GLSL

struct Foo
{
float3 a;
float3 b;
float3 c;
};
struct VertexOut
{
float3 color;
float3 foo;
};
static const Foo _71 = { 1.0f.xxx, 1.0f.xxx, 1.0f.xxx };
static float4 gl_Position;
static float4 Input2;
static float4 Input4;
static float4 Input0;
static float vLocation0;
static float vLocation1;
static float vLocation2[2];
static Foo vLocation4;
static float vLocation9;
static VertexOut vout;
struct SPIRV_Cross_Input
{
float4 Input0 : TEXCOORD0;
float4 Input2 : TEXCOORD2;
float4 Input4 : TEXCOORD4;
};
struct SPIRV_Cross_Output
{
float vLocation0 : TEXCOORD0;
float vLocation1 : TEXCOORD1;
float vLocation2[2] : TEXCOORD2;
Foo vLocation4 : TEXCOORD4;
float3 VertexOut_color : TEXCOORD7;
float3 VertexOut_foo : TEXCOORD8;
float vLocation9 : TEXCOORD9;
float4 gl_Position : SV_Position;
};
void vert_main()
{
gl_Position = ((1.0f.xxxx + Input2) + Input4) + Input0;
vLocation0 = 0.0f;
vLocation1 = 1.0f;
vLocation2[0] = 2.0f;
vLocation2[1] = 2.0f;
vLocation4 = _71;
vLocation9 = 9.0f;
vout.color = 2.0f.xxx;
vout.foo = 4.0f.xxx;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
Input2 = stage_input.Input2;
Input4 = stage_input.Input4;
Input0 = stage_input.Input0;
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
stage_output.vLocation0 = vLocation0;
stage_output.vLocation1 = vLocation1;
stage_output.vLocation2 = vLocation2;
stage_output.vLocation4 = vLocation4;
stage_output.vLocation9 = vLocation9;
stage_output.VertexOut_color = vout.color;
stage_output.VertexOut_foo = vout.foo;
return stage_output;
}