1#include <simd/simd.h>
2
3typedef struct
4{
5 vector_float2 viewport_size;
6} GPUIUniforms;
7
8typedef enum
9{
10 GPUIQuadInputIndexVertices = 0,
11 GPUIQuadInputIndexQuads = 1,
12 GPUIQuadInputIndexUniforms = 2,
13} GPUIQuadInputIndex;
14
15typedef struct
16{
17 vector_float2 origin;
18 vector_float2 size;
19 vector_uchar4 background_color;
20 float border_top;
21 float border_right;
22 float border_bottom;
23 float border_left;
24 vector_uchar4 border_color;
25 float corner_radius;
26} GPUIQuad;
27
28typedef enum
29{
30 GPUIShadowInputIndexVertices = 0,
31 GPUIShadowInputIndexShadows = 1,
32 GPUIShadowInputIndexUniforms = 2,
33} GPUIShadowInputIndex;
34
35typedef struct
36{
37 vector_float2 origin;
38 vector_float2 size;
39 float corner_radius;
40 float sigma;
41 vector_uchar4 color;
42} GPUIShadow;
43
44typedef enum
45{
46 GPUISpriteVertexInputIndexVertices = 0,
47 GPUISpriteVertexInputIndexSprites = 1,
48 GPUISpriteVertexInputIndexViewportSize = 2,
49 GPUISpriteVertexInputIndexAtlasSize = 3,
50} GPUISpriteVertexInputIndex;
51
52typedef enum
53{
54 GPUISpriteFragmentInputIndexAtlas = 0,
55} GPUISpriteFragmentInputIndex;
56
57typedef struct
58{
59 vector_float2 origin;
60 vector_float2 target_size;
61 vector_float2 source_size;
62 vector_float2 atlas_origin;
63 vector_uchar4 color;
64 uint8_t compute_winding;
65} GPUISprite;
66
67typedef enum
68{
69 GPUIPathAtlasVertexInputIndexVertices = 0,
70 GPUIPathAtlasVertexInputIndexAtlasSize = 1,
71} GPUIPathAtlasVertexInputIndex;
72
73typedef struct
74{
75 vector_float2 xy_position;
76 vector_float2 st_position;
77 vector_float2 clip_rect_origin;
78 vector_float2 clip_rect_size;
79} GPUIPathVertex;
80
81typedef enum
82{
83 GPUIImageVertexInputIndexVertices = 0,
84 GPUIImageVertexInputIndexImages = 1,
85 GPUIImageVertexInputIndexViewportSize = 2,
86 GPUIImageVertexInputIndexAtlasSize = 3,
87} GPUIImageVertexInputIndex;
88
89typedef enum
90{
91 GPUIImageFragmentInputIndexAtlas = 0,
92} GPUIImageFragmentInputIndex;
93
94typedef struct
95{
96 vector_float2 origin;
97 vector_float2 target_size;
98 vector_float2 source_size;
99 vector_float2 atlas_origin;
100 float border_top;
101 float border_right;
102 float border_bottom;
103 float border_left;
104 vector_uchar4 border_color;
105 float corner_radius;
106} GPUIImage;
107
108typedef enum
109{
110 GPUIUnderlineInputIndexVertices = 0,
111 GPUIUnderlineInputIndexUnderlines = 1,
112 GPUIUnderlineInputIndexUniforms = 2,
113} GPUIUnderlineInputIndex;
114
115typedef struct
116{
117 vector_float2 origin;
118 vector_float2 size;
119 float thickness;
120 vector_uchar4 color;
121 uint8_t squiggly;
122} GPUIUnderline;