summaryrefslogtreecommitdiffstats
path: root/third_party/rust/metal/examples/circle/shaders.metal
blob: 037af8a23337218bfb55e5b4c1f290816ff9030a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <metal_stdlib>

#include <simd/simd.h>

using namespace metal;

typedef struct {
  float x;
  float y;
}position;

typedef struct {
  float r;
  float g;
  float b;
}color;

typedef struct {
  position p;
  color c;
}AAPLVertex;

struct ColorInOut {
  float4 position[[position]];
  float4 color;
};

vertex ColorInOut vs(constant AAPLVertex * vertex_array[[buffer(0)]], unsigned int vid[[vertex_id]]) {
  ColorInOut out;

  out.position = float4(float2(vertex_array[vid].p.x, vertex_array[vid].p.y), 0.0, 1.0);
  out.color = float4(float3(vertex_array[vid].c.r, vertex_array[vid].c.g, vertex_array[vid].c.b), 1.0);

  return out;
}

fragment float4 ps(ColorInOut in [[stage_in]]) {
  return in.color;
}