diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-04-20 10:48:20 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-04-20 10:58:40 +0300 |
commit | ebf463674d0b79474dcdb9b32366b5aa52364ec5 (patch) | |
tree | c030898e7041868df3298ab00030f6761a889b02 /reference/opt/shaders-msl | |
parent | aa5fbc004b2be8ae7541196ad9adf8eb75562bc0 (diff) |
MSL: Allow removing clip distance user varyings.
Only safe if user knows that subsequent shader stage will not read clip
distance.
Diffstat (limited to 'reference/opt/shaders-msl')
3 files changed, 70 insertions, 0 deletions
diff --git a/reference/opt/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert b/reference/opt/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert new file mode 100644 index 00000000..1d688595 --- /dev/null +++ b/reference/opt/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert @@ -0,0 +1,25 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +struct main0_out +{ + float4 gl_Position [[position]]; + float gl_ClipDistance [[clip_distance]] [2]; +}; + +struct main0_in +{ + float4 pos [[attribute(0)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]]) +{ + main0_out out = {}; + out.gl_Position = in.pos; + out.gl_ClipDistance[0] = in.pos.x; + out.gl_ClipDistance[1] = in.pos.y; + return out; +} + diff --git a/reference/opt/shaders-msl/desktop-only/vert/clip-cull-distance..no-user-varying.desktop.vert b/reference/opt/shaders-msl/desktop-only/vert/clip-cull-distance..no-user-varying.desktop.vert new file mode 100644 index 00000000..a414c985 --- /dev/null +++ b/reference/opt/shaders-msl/desktop-only/vert/clip-cull-distance..no-user-varying.desktop.vert @@ -0,0 +1,20 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +struct main0_out +{ + float4 gl_Position [[position]]; + float gl_ClipDistance [[clip_distance]] [2]; +}; + +vertex main0_out main0() +{ + main0_out out = {}; + out.gl_Position = float4(10.0); + out.gl_ClipDistance[0] = 1.0; + out.gl_ClipDistance[1] = 4.0; + return out; +} + diff --git a/reference/opt/shaders-msl/vert/clip-distance-block.no-user-varying.vert b/reference/opt/shaders-msl/vert/clip-distance-block.no-user-varying.vert new file mode 100644 index 00000000..c78105e0 --- /dev/null +++ b/reference/opt/shaders-msl/vert/clip-distance-block.no-user-varying.vert @@ -0,0 +1,25 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +struct main0_out +{ + float4 gl_Position [[position]]; + float gl_ClipDistance [[clip_distance]] [2]; +}; + +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; + return out; +} + |