SPIRV-Cross/reference/shaders-msl/frag/packing-test-3.frag
Hans-Kristian Arntzen 96492648d4 MSL: Fix struct declaration order with complex type aliases.
MSL generally emits the aliases, which means we cannot always place the
master type first, unlike GLSL and HLSL. The logic fix is just to
reorder after we have tagged types with packing information, rather than
doing it in the parser fixup.
2019-05-23 14:54:04 +02:00

55 lines
963 B
GLSL

#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct VertexOutput
{
float4 HPosition;
};
struct TestStruct
{
float3 position;
float radius;
};
struct TestStruct_1
{
packed_float3 position;
float radius;
};
struct CB0
{
TestStruct_1 CB0[16];
};
struct main0_out
{
float4 _entryPointOutput [[color(0)]];
};
float4 _main(thread const VertexOutput& IN, constant CB0& v_26)
{
TestStruct st;
st.position = float3(v_26.CB0[1].position);
st.radius = v_26.CB0[1].radius;
float4 col = float4(st.position, st.radius);
return col;
}
fragment main0_out main0(constant CB0& v_26 [[buffer(0)]], float4 gl_FragCoord [[position]])
{
main0_out out = {};
VertexOutput IN;
IN.HPosition = gl_FragCoord;
VertexOutput param = IN;
VertexOutput param_1 = param;
out._entryPointOutput = _main(param_1, v_26);
return out;
}