Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
default_metal.h
Go to the documentation of this file.
1 #pragma once
2 
3 
4 
5 inline const char* default_vertex_metal = R"(
6 #include <metal_stdlib>
7 #include <simd/simd.h>
8 
9 using namespace metal;
10 
11 struct UniformBlock
12 {
13 float4x4 VIEW_PROJECTION_MATRIX;
14 };
15 
16 struct main0_out
17 {
18 float4 vColor [[user(locn0)]];
19 float2 vTexCoord [[user(locn1)]];
20 float4 gl_Position [[position]];
21 };
22 
23 struct main0_in
24 {
25 float3 a_vertex [[attribute(0)]];
26 float4 a_color [[attribute(1)]];
27 float2 a_uv [[attribute(2)]];
28 };
29 
30 vertex main0_out main0(main0_in in [[stage_in]], constant UniformBlock& _30 [[buffer(0)]])
31 {
32 main0_out out = {};
33 out.vColor = in.a_color;
34 out.vTexCoord = in.a_uv;
35 out.gl_Position = _30.VIEW_PROJECTION_MATRIX * float4(in.a_vertex, 1.0);
36 return out;
37 })";
38 
39 inline const char* default_fragment_metal = R"(
40 #include <metal_stdlib>
41 #include <simd/simd.h>
42 
43 using namespace metal;
44 
45 struct main0_out
46 {
47 float4 FragColor [[color(0)]];
48 };
49 
50 struct main0_in
51 {
52 float4 vColor [[user(locn0)]];
53 float2 vTexCoord [[user(locn1)]];
54 };
55 
56 fragment main0_out main0(main0_in in [[stage_in]], texture2d<float> u_texture [[texture(0)]], sampler u_textureSmplr [[sampler(0)]])
57 {
58 main0_out out = {};
59 float4 tex = u_texture.sample(u_textureSmplr, in.vTexCoord);
60 if (tex.w < 0.100000001490116119384765625)
61 {
62  discard_fragment();
63 }
64 out.FragColor = tex * in.vColor;
65 return out;
66 })";
67 
68 
const char * default_vertex_metal
Definition: default_metal.h:5
const char * default_fragment_metal
Definition: default_metal.h:39