b3344174f7
Helps translation layers where we expect inputs to be multiple float vectors rather than an indexed matrix.
52 lines
1.2 KiB
GLSL
52 lines
1.2 KiB
GLSL
static float4 gl_Position;
|
|
static float4x4 m4;
|
|
static float4 v;
|
|
static float3x3 m3;
|
|
static float2x2 m2;
|
|
|
|
struct SPIRV_Cross_Input
|
|
{
|
|
float4 m4_0 : TEXCOORD0;
|
|
float4 m4_1 : TEXCOORD1;
|
|
float4 m4_2 : TEXCOORD2;
|
|
float4 m4_3 : TEXCOORD3;
|
|
float3 m3_0 : TEXCOORD4;
|
|
float3 m3_1 : TEXCOORD5;
|
|
float3 m3_2 : TEXCOORD6;
|
|
float2 m2_0 : TEXCOORD7;
|
|
float2 m2_1 : TEXCOORD8;
|
|
float4 v : TEXCOORD9;
|
|
};
|
|
|
|
struct SPIRV_Cross_Output
|
|
{
|
|
float4 gl_Position : SV_Position;
|
|
};
|
|
|
|
void vert_main()
|
|
{
|
|
gl_Position = mul(v, m4);
|
|
float3 _37 = gl_Position.xyz + mul(v.xyz, m3);
|
|
gl_Position = float4(_37.x, _37.y, _37.z, gl_Position.w);
|
|
float2 _52 = gl_Position.xy + mul(v.xy, m2);
|
|
gl_Position = float4(_52.x, _52.y, gl_Position.z, gl_Position.w);
|
|
}
|
|
|
|
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
|
|
{
|
|
m4[0] = stage_input.m4_0;
|
|
m4[1] = stage_input.m4_1;
|
|
m4[2] = stage_input.m4_2;
|
|
m4[3] = stage_input.m4_3;
|
|
v = stage_input.v;
|
|
m3[0] = stage_input.m3_0;
|
|
m3[1] = stage_input.m3_1;
|
|
m3[2] = stage_input.m3_2;
|
|
m2[0] = stage_input.m2_0;
|
|
m2[1] = stage_input.m2_1;
|
|
vert_main();
|
|
SPIRV_Cross_Output stage_output;
|
|
stage_output.gl_Position = gl_Position;
|
|
return stage_output;
|
|
}
|