| #include <metal_stdlib> |
| using namespace metal; |
| struct VertexOutput { |
| float4 vtxFragColor; |
| float4 Position; |
| }; |
| struct VertexInput { |
| float4 cur_position; |
| float4 color; |
| }; |
| struct Uniforms { |
| float4x4 modelViewProjectionMatrix; |
| }; |
| struct tint_module_vars_struct { |
| const constant Uniforms* uniforms; |
| }; |
| struct vtx_main_outputs { |
| float4 VertexOutput_vtxFragColor [[user(locn0)]]; |
| float4 VertexOutput_Position [[position]]; |
| }; |
| struct vtx_main_inputs { |
| float4 VertexInput_cur_position [[attribute(0)]]; |
| float4 VertexInput_color [[attribute(1)]]; |
| }; |
| struct frag_main_outputs { |
| float4 tint_symbol [[color(0)]]; |
| }; |
| struct frag_main_inputs { |
| float4 fragColor [[user(locn0)]]; |
| }; |
| |
| VertexOutput vtx_main_inner(VertexInput input, tint_module_vars_struct tint_module_vars) { |
| VertexOutput output = {}; |
| output.Position = ((*tint_module_vars.uniforms).modelViewProjectionMatrix * input.cur_position); |
| output.vtxFragColor = input.color; |
| return output; |
| } |
| float4 frag_main_inner(float4 fragColor) { |
| return fragColor; |
| } |
| vertex vtx_main_outputs vtx_main(vtx_main_inputs inputs [[stage_in]], const constant Uniforms* uniforms [[buffer(0)]]) { |
| tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.uniforms=uniforms}; |
| VertexOutput const v = vtx_main_inner(VertexInput{.cur_position=inputs.VertexInput_cur_position, .color=inputs.VertexInput_color}, tint_module_vars); |
| return vtx_main_outputs{.VertexOutput_vtxFragColor=v.vtxFragColor, .VertexOutput_Position=v.Position}; |
| } |
| fragment frag_main_outputs frag_main(frag_main_inputs inputs [[stage_in]]) { |
| return frag_main_outputs{.tint_symbol=frag_main_inner(inputs.fragColor)}; |
| } |