shaders.h

  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;