SPIRV-Cross/reference/opt/shaders-msl/frag/control-dependent-in-branch.desktop.frag
Bill Hollings 9b4defe202 CompilerMSL support matrices & arrays in stage-in & stage-out.
Support flattening StorageOutput & StorageInput matrices and arrays.
No longer move matrix & array inputs to separate buffer.
Add separate SPIRFunction::fixup_statements_in & SPIRFunction::fixup_statements_out
instead of just  SPIRFunction::fixup_statements.
Emit SPIRFunction::fixup_statements at beginning of functions.
CompilerMSL track vars_needing_early_declaration.
Pass global output variables as variables to functions that access them.
Sort input structs by location, same as output structs.
Emit struct declarations in order output, input, uniforms.
Regenerate reference shaders to new formats defined by above.
2018-06-12 11:41:35 -04:00

46 lines
1.1 KiB
GLSL

#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float4 FragColor [[color(0)]];
};
struct main0_in
{
float4 vInput [[user(locn0)]];
};
fragment main0_out main0(main0_in in [[stage_in]], texture2d<float> uSampler [[texture(0)]], sampler uSamplerSmplr [[sampler(0)]])
{
main0_out out = {};
out.FragColor = in.vInput;
float4 _23 = uSampler.sample(uSamplerSmplr, in.vInput.xy);
float4 _26 = dfdx(in.vInput);
float4 _29 = dfdy(in.vInput);
float4 _32 = fwidth(in.vInput);
float4 _35 = dfdx(in.vInput);
float4 _38 = dfdy(in.vInput);
float4 _41 = fwidth(in.vInput);
float4 _44 = dfdx(in.vInput);
float4 _47 = dfdy(in.vInput);
float4 _50 = fwidth(in.vInput);
if (in.vInput.y > 10.0)
{
out.FragColor += _23;
out.FragColor += _26;
out.FragColor += _29;
out.FragColor += _32;
out.FragColor += _35;
out.FragColor += _38;
out.FragColor += _41;
out.FragColor += _44;
out.FragColor += _47;
out.FragColor += _50;
}
return out;
}