summaryrefslogtreecommitdiff
path: root/assets/shaders/triangle.metal
diff options
context:
space:
mode:
authoromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-06-09 01:43:02 +1000
committeromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-06-09 01:43:02 +1000
commit859ea7e23d2bbbc4b32b43727ae50aebe399e720 (patch)
tree868b5d938cec7846637cf403cde3723829822305 /assets/shaders/triangle.metal
parent19a5fae08d7f1f85cb5448a5f2b19f0f9d342a0e (diff)
metal is back, baby
Diffstat (limited to 'assets/shaders/triangle.metal')
-rw-r--r--assets/shaders/triangle.metal33
1 files changed, 33 insertions, 0 deletions
diff --git a/assets/shaders/triangle.metal b/assets/shaders/triangle.metal
new file mode 100644
index 0000000..6055705
--- /dev/null
+++ b/assets/shaders/triangle.metal
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct VertexIn {
+ float2 position;
+ float3 color;
+};
+
+struct VertexOut {
+ float4 computedPosition [[position]];
+ float3 fragColor;
+};
+
+// Vertex shader
+vertex VertexOut basic_vertex(
+ const device VertexIn* vertex_array [[ buffer(0) ]],
+ unsigned int vid [[ vertex_id ]]
+ ) {
+ VertexIn v = vertex_array[vid];
+
+ VertexOut outVertex = VertexOut();
+ outVertex.computedPosition = float4(v.position.xy, 0.0, 1.0);
+ outVertex.fragColor = v.color;
+ return outVertex;
+}
+
+// Fragment shader
+fragment float4 basic_fragment(
+ VertexOut interpolated [[stage_in]]
+) {
+ return float4(interpolated.fragColor, 1.0);
+} \ No newline at end of file