SPIRV-Cross/reference/opt/shaders-msl/vert/clip-distance-block.vert
Hans-Kristian Arntzen a3fe9756d2 MSL: Support ClipDistance as an input stage variable.
MSL does not support this, so we have to emulate it by passing it around
as a varying between stages. We use a special "user(clipN)" attribute
for this rather than locN which is used for user varyings.
2019-12-02 13:19:42 +01:00

30 lines
652 B
GLSL

#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float4 gl_Position [[position]];
float gl_ClipDistance [[clip_distance]] [2];
float gl_ClipDistance_0 [[user(clip0)]];
float gl_ClipDistance_1 [[user(clip1)]];
};
struct main0_in
{
float4 Position [[attribute(0)]];
};
vertex main0_out main0(main0_in in [[stage_in]])
{
main0_out out = {};
out.gl_Position = in.Position;
out.gl_ClipDistance[0] = in.Position.x;
out.gl_ClipDistance[1] = in.Position.y;
out.gl_ClipDistance_0 = out.gl_ClipDistance[0];
out.gl_ClipDistance_1 = out.gl_ClipDistance[1];
return out;
}