1 module shaders.vertexpull; 2 import sg = sokol.gfx; 3 import m = handmade.math; 4 extern(C): 5 6 /* 7 #version:1# (machine generated, don't edit!) 8 9 Generated by sokol-shdc (https://github.com/floooh/sokol-tools) 10 11 Cmdline: 12 sokol-shdc -i src/examples/shaders/vertexpull.glsl -o src/examples/shaders/vertexpull.d -l glsl430:glsl310es:metal_macos:hlsl5:wgsl -f sokol_d 13 14 Overview: 15 ========= 16 Shader program: 'vertexpull': 17 Get shader desc: vertexpullShaderDesc(sg.queryBackend()); 18 Vertex Shader: vs 19 Fragment Shader: fs 20 Attributes: 21 Bindings: 22 Uniform block 'vs_params': 23 D struct: VsParams 24 Bind slot: UB_VS_PARAMS => 0 25 Storage buffer 'ssbo': 26 D struct: SbVertex 27 Bind slot: SBUF_SSBO => 0 28 Readonly: true 29 */ 30 enum UB_VS_PARAMS = 0; 31 enum SBUF_SSBO = 0; 32 struct VsParams { 33 align(16) m.Mat4 mvp; 34 } 35 struct SbVertex { 36 align(16) float[3] pos = 0; 37 align(1) ubyte[4] _pad_12 = 0; 38 align(1) float[4] color = 0; 39 } 40 /* 41 #version 430 42 43 struct sb_vertex 44 { 45 vec3 pos; 46 vec4 color; 47 }; 48 49 uniform vec4 vs_params[4]; 50 layout(binding = 0, std430) readonly buffer ssbo 51 { 52 sb_vertex vtx[]; 53 } _28; 54 55 layout(location = 0) out vec4 color; 56 57 void main() 58 { 59 gl_Position = mat4(vs_params[0], vs_params[1], vs_params[2], vs_params[3]) * vec4(_28.vtx[gl_VertexID].pos, 1.0); 60 color = _28.vtx[gl_VertexID].color; 61 } 62 63 */ 64 __gshared char[388] VS_SOURCE_GLSL430 = [ 65 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x73,0x74, 66 0x72,0x75,0x63,0x74,0x20,0x73,0x62,0x5f,0x76,0x65,0x72,0x74,0x65,0x78,0x0a,0x7b, 67 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20, 68 0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d, 69 0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20, 70 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61, 71 0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x30, 72 0x2c,0x20,0x73,0x74,0x64,0x34,0x33,0x30,0x29,0x20,0x72,0x65,0x61,0x64,0x6f,0x6e, 73 0x6c,0x79,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x73,0x73,0x62,0x6f,0x0a,0x7b, 74 0x0a,0x20,0x20,0x20,0x20,0x73,0x62,0x5f,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x76, 75 0x74,0x78,0x5b,0x5d,0x3b,0x0a,0x7d,0x20,0x5f,0x32,0x38,0x3b,0x0a,0x0a,0x6c,0x61, 76 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 77 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f, 78 0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a, 79 0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, 80 0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61, 81 0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, 82 0x5b,0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32, 83 0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29, 84 0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x32,0x38,0x2e,0x76,0x74,0x78,0x5b, 85 0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x44,0x5d,0x2e,0x70,0x6f,0x73, 86 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f, 87 0x72,0x20,0x3d,0x20,0x5f,0x32,0x38,0x2e,0x76,0x74,0x78,0x5b,0x67,0x6c,0x5f,0x56, 88 0x65,0x72,0x74,0x65,0x78,0x49,0x44,0x5d,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, 89 0x7d,0x0a,0x0a,0x00, 90 ]; 91 /* 92 #version 430 93 94 layout(location = 0) out vec4 frag_color; 95 layout(location = 0) in vec4 color; 96 97 void main() 98 { 99 frag_color = color; 100 } 101 102 */ 103 __gshared char[135] FS_SOURCE_GLSL430 = [ 104 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x6c,0x61, 105 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 106 0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67, 107 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, 108 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20, 109 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69, 110 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, 111 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f, 112 0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, 113 ]; 114 /* 115 #version 310 es 116 117 struct sb_vertex 118 { 119 vec3 pos; 120 vec4 color; 121 }; 122 123 uniform vec4 vs_params[4]; 124 layout(binding = 0, std430) readonly buffer ssbo 125 { 126 sb_vertex vtx[]; 127 } _28; 128 129 layout(location = 0) out vec4 color; 130 131 void main() 132 { 133 gl_Position = mat4(vs_params[0], vs_params[1], vs_params[2], vs_params[3]) * vec4(_28.vtx[gl_VertexID].pos, 1.0); 134 color = _28.vtx[gl_VertexID].color; 135 } 136 137 */ 138 __gshared char[391] VS_SOURCE_GLSL310ES = [ 139 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x31,0x30,0x20,0x65,0x73,0x0a, 140 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x62,0x5f,0x76,0x65,0x72,0x74,0x65, 141 0x78,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73, 142 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72, 143 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65, 144 0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b, 145 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20, 146 0x3d,0x20,0x30,0x2c,0x20,0x73,0x74,0x64,0x34,0x33,0x30,0x29,0x20,0x72,0x65,0x61, 147 0x64,0x6f,0x6e,0x6c,0x79,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x73,0x73,0x62, 148 0x6f,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x62,0x5f,0x76,0x65,0x72,0x74,0x65, 149 0x78,0x20,0x76,0x74,0x78,0x5b,0x5d,0x3b,0x0a,0x7d,0x20,0x5f,0x32,0x38,0x3b,0x0a, 150 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, 151 0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63, 152 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, 153 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69, 154 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70, 155 0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72, 156 0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, 157 0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, 158 0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x32,0x38,0x2e,0x76, 159 0x74,0x78,0x5b,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x44,0x5d,0x2e, 160 0x70,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63, 161 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x32,0x38,0x2e,0x76,0x74,0x78,0x5b,0x67, 162 0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x44,0x5d,0x2e,0x63,0x6f,0x6c,0x6f, 163 0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, 164 ]; 165 /* 166 #version 310 es 167 precision mediump float; 168 precision highp int; 169 170 layout(location = 0) out highp vec4 frag_color; 171 layout(location = 0) in highp vec4 color; 172 173 void main() 174 { 175 frag_color = color; 176 } 177 178 */ 179 __gshared char[196] FS_SOURCE_GLSL310ES = [ 180 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x31,0x30,0x20,0x65,0x73,0x0a, 181 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, 182 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, 183 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x6c, 184 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, 185 0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, 186 0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c, 187 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, 188 0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, 189 0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d, 190 0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, 191 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, 192 0x7d,0x0a,0x0a,0x00, 193 ]; 194 /* 195 struct sb_vertex 196 { 197 float3 pos; 198 float4 color; 199 }; 200 201 cbuffer vs_params : register(b0) 202 { 203 row_major float4x4 _19_mvp : packoffset(c0); 204 }; 205 206 ByteAddressBuffer _28 : register(t16); 207 208 static float4 gl_Position; 209 static int gl_VertexIndex; 210 static float4 color; 211 212 struct SPIRV_Cross_Input 213 { 214 uint gl_VertexIndex : SV_VertexID; 215 }; 216 217 struct SPIRV_Cross_Output 218 { 219 float4 color : TEXCOORD0; 220 float4 gl_Position : SV_Position; 221 }; 222 223 void vert_main() 224 { 225 gl_Position = mul(float4(asfloat(_28.Load3(gl_VertexIndex * 32 + 0)), 1.0f), _19_mvp); 226 color = asfloat(_28.Load4(gl_VertexIndex * 32 + 16)); 227 } 228 229 SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) 230 { 231 gl_VertexIndex = int(stage_input.gl_VertexIndex); 232 vert_main(); 233 SPIRV_Cross_Output stage_output; 234 stage_output.gl_Position = gl_Position; 235 stage_output.color = color; 236 return stage_output; 237 } 238 */ 239 __gshared char[871] VS_SOURCE_HLSL5 = [ 240 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x62,0x5f,0x76,0x65,0x72,0x74,0x65,0x78, 241 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x6f, 242 0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f, 243 0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x63,0x62,0x75,0x66,0x66,0x65,0x72, 244 0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3a,0x20,0x72,0x65,0x67, 245 0x69,0x73,0x74,0x65,0x72,0x28,0x62,0x30,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, 246 0x72,0x6f,0x77,0x5f,0x6d,0x61,0x6a,0x6f,0x72,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, 247 0x78,0x34,0x20,0x5f,0x31,0x39,0x5f,0x6d,0x76,0x70,0x20,0x3a,0x20,0x70,0x61,0x63, 248 0x6b,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x63,0x30,0x29,0x3b,0x0a,0x7d,0x3b,0x0a, 249 0x0a,0x42,0x79,0x74,0x65,0x41,0x64,0x64,0x72,0x65,0x73,0x73,0x42,0x75,0x66,0x66, 250 0x65,0x72,0x20,0x5f,0x32,0x38,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65, 251 0x72,0x28,0x74,0x31,0x36,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, 252 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, 253 0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x74,0x20,0x67, 254 0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x3b,0x0a,0x73, 255 0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c, 256 0x6f,0x72,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52, 257 0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x0a,0x7b,0x0a, 258 0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74, 259 0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x20,0x3a,0x20,0x53,0x56,0x5f,0x56,0x65,0x72, 260 0x74,0x65,0x78,0x49,0x44,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63, 261 0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75, 262 0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, 263 0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f, 264 0x52,0x44,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, 265 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x53,0x56, 266 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76, 267 0x6f,0x69,0x64,0x20,0x76,0x65,0x72,0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a, 268 0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, 269 0x6e,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x61, 270 0x73,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x32,0x38,0x2e,0x4c,0x6f,0x61,0x64,0x33, 271 0x28,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x20, 272 0x2a,0x20,0x33,0x32,0x20,0x2b,0x20,0x30,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x66, 273 0x29,0x2c,0x20,0x5f,0x31,0x39,0x5f,0x6d,0x76,0x70,0x29,0x3b,0x0a,0x20,0x20,0x20, 274 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x61,0x73,0x66,0x6c,0x6f,0x61,0x74, 275 0x28,0x5f,0x32,0x38,0x2e,0x4c,0x6f,0x61,0x64,0x34,0x28,0x67,0x6c,0x5f,0x56,0x65, 276 0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x33,0x32,0x20,0x2b, 277 0x20,0x31,0x36,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,0x50,0x49,0x52,0x56,0x5f, 278 0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x6d,0x61,0x69, 279 0x6e,0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e, 280 0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x29, 281 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78, 282 0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x73,0x74,0x61,0x67, 283 0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65, 284 0x78,0x49,0x6e,0x64,0x65,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x72, 285 0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x53,0x50, 286 0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74, 287 0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x20, 288 0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e, 289 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x67,0x6c, 290 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73, 291 0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f, 292 0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, 293 0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70, 294 0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x00, 295 ]; 296 /* 297 static float4 frag_color; 298 static float4 color; 299 300 struct SPIRV_Cross_Input 301 { 302 float4 color : TEXCOORD0; 303 }; 304 305 struct SPIRV_Cross_Output 306 { 307 float4 frag_color : SV_Target0; 308 }; 309 310 void frag_main() 311 { 312 frag_color = color; 313 } 314 315 SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) 316 { 317 color = stage_input.color; 318 frag_main(); 319 SPIRV_Cross_Output stage_output; 320 stage_output.frag_color = frag_color; 321 return stage_output; 322 } 323 */ 324 __gshared char[435] FS_SOURCE_HLSL5 = [ 325 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72, 326 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63, 327 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a, 328 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f, 329 0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, 330 0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x54,0x45, 331 0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72, 332 0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f, 333 0x4f,0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, 334 0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a, 335 0x20,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65,0x74,0x30,0x3b,0x0a,0x7d,0x3b,0x0a, 336 0x0a,0x76,0x6f,0x69,0x64,0x20,0x66,0x72,0x61,0x67,0x5f,0x6d,0x61,0x69,0x6e,0x28, 337 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, 338 0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x53, 339 0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75, 340 0x74,0x20,0x6d,0x61,0x69,0x6e,0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f, 341 0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69, 342 0x6e,0x70,0x75,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f, 343 0x72,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e, 344 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, 345 0x6d,0x61,0x69,0x6e,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,0x52, 346 0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x73, 347 0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20, 348 0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x66,0x72, 349 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f, 350 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, 351 0x6e,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a, 352 0x7d,0x0a,0x00, 353 ]; 354 /* 355 #include <metal_stdlib> 356 #include <simd/simd.h> 357 358 using namespace metal; 359 360 struct vs_params 361 { 362 float4x4 mvp; 363 }; 364 365 struct sb_vertex 366 { 367 float3 pos; 368 float4 color; 369 }; 370 371 struct ssbo 372 { 373 sb_vertex vtx[1]; 374 }; 375 376 struct main0_out 377 { 378 float4 color [[user(locn0)]]; 379 float4 gl_Position [[position]]; 380 }; 381 382 vertex main0_out main0(constant vs_params& _19 [[buffer(0)]], const device ssbo& _28 [[buffer(8)]], uint gl_VertexIndex [[vertex_id]]) 383 { 384 main0_out out = {}; 385 out.gl_Position = _19.mvp * float4(_28.vtx[int(gl_VertexIndex)].pos, 1.0); 386 out.color = _28.vtx[int(gl_VertexIndex)].color; 387 return out; 388 } 389 390 */ 391 __gshared char[616] VS_SOURCE_METAL_MACOS = [ 392 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, 393 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, 394 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, 395 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, 396 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76, 397 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, 398 0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x7d,0x3b,0x0a, 399 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x62,0x5f,0x76,0x65,0x72,0x74,0x65, 400 0x78,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70, 401 0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, 402 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74, 403 0x20,0x73,0x73,0x62,0x6f,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x73,0x62,0x5f,0x76, 404 0x65,0x72,0x74,0x65,0x78,0x20,0x76,0x74,0x78,0x5b,0x31,0x5d,0x3b,0x0a,0x7d,0x3b, 405 0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, 406 0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, 407 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, 408 0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, 409 0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b, 410 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, 411 0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74, 412 0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20, 413 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x39,0x20,0x5b, 414 0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x63,0x6f, 415 0x6e,0x73,0x74,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20,0x73,0x73,0x62,0x6f,0x26, 416 0x20,0x5f,0x32,0x38,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x38,0x29, 417 0x5d,0x5d,0x2c,0x20,0x75,0x69,0x6e,0x74,0x20,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74, 418 0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x20,0x5b,0x5b,0x76,0x65,0x72,0x74,0x65,0x78, 419 0x5f,0x69,0x64,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69, 420 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b, 421 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69, 422 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x31,0x39,0x2e,0x6d,0x76,0x70,0x20,0x2a, 423 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x32,0x38,0x2e,0x76,0x74,0x78,0x5b, 424 0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64, 425 0x65,0x78,0x29,0x5d,0x2e,0x70,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, 426 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, 427 0x5f,0x32,0x38,0x2e,0x76,0x74,0x78,0x5b,0x69,0x6e,0x74,0x28,0x67,0x6c,0x5f,0x56, 428 0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x29,0x5d,0x2e,0x63,0x6f,0x6c, 429 0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f, 430 0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, 431 ]; 432 /* 433 #include <metal_stdlib> 434 #include <simd/simd.h> 435 436 using namespace metal; 437 438 struct main0_out 439 { 440 float4 frag_color [[color(0)]]; 441 }; 442 443 struct main0_in 444 { 445 float4 color [[user(locn0)]]; 446 }; 447 448 fragment main0_out main0(main0_in in [[stage_in]]) 449 { 450 main0_out out = {}; 451 out.frag_color = in.color; 452 return out; 453 } 454 455 */ 456 __gshared char[315] FS_SOURCE_METAL_MACOS = [ 457 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, 458 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, 459 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, 460 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, 461 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, 462 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, 463 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, 464 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, 465 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, 466 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, 467 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, 468 0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d, 469 0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61, 470 0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20, 471 0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a, 472 0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75, 473 0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, 474 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e, 475 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, 476 0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, 477 ]; 478 /* 479 diagnostic(off, derivative_uniformity); 480 481 struct vs_params { 482 /_ @offset(0) _/ 483 mvp : mat4x4f, 484 } 485 486 struct sb_vertex { 487 /_ @offset(0) _/ 488 pos : vec3f, 489 /_ @offset(16) _/ 490 color : vec4f, 491 } 492 493 alias RTArr = array<sb_vertex>; 494 495 struct ssbo { 496 /_ @offset(0) _/ 497 vtx : RTArr, 498 } 499 500 @group(0) @binding(0) var<uniform> x_19 : vs_params; 501 502 @group(1) @binding(32) var<storage, read> x_28 : ssbo; 503 504 var<private> gl_VertexIndex : i32; 505 506 var<private> color : vec4f; 507 508 var<private> gl_Position : vec4f; 509 510 fn main_1() { 511 let x_22 : mat4x4f = x_19.mvp; 512 let x_31 : i32 = gl_VertexIndex; 513 let x_34 : vec3f = x_28.vtx[x_31].pos; 514 gl_Position = (x_22 * vec4f(x_34.x, x_34.y, x_34.z, 1.0f)); 515 let x_44 : i32 = gl_VertexIndex; 516 let x_48 : vec4f = x_28.vtx[x_44].color; 517 color = x_48; 518 return; 519 } 520 521 struct main_out { 522 @builtin(position) 523 gl_Position : vec4f, 524 @location(0) 525 color_1 : vec4f, 526 } 527 528 @vertex 529 fn main(@builtin(vertex_index) gl_VertexIndex_param : u32) -> main_out { 530 gl_VertexIndex = bitcast<i32>(gl_VertexIndex_param); 531 main_1(); 532 return main_out(gl_Position, color); 533 } 534 535 */ 536 __gshared char[1068] VS_SOURCE_WGSL = [ 537 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 538 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 539 0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, 540 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x7b,0x0a,0x20,0x20,0x2f,0x2a, 541 0x20,0x40,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x30,0x29,0x20,0x2a,0x2f,0x0a,0x20, 542 0x20,0x6d,0x76,0x70,0x20,0x3a,0x20,0x6d,0x61,0x74,0x34,0x78,0x34,0x66,0x2c,0x0a, 543 0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x62,0x5f,0x76,0x65,0x72, 544 0x74,0x65,0x78,0x20,0x7b,0x0a,0x20,0x20,0x2f,0x2a,0x20,0x40,0x6f,0x66,0x66,0x73, 545 0x65,0x74,0x28,0x30,0x29,0x20,0x2a,0x2f,0x0a,0x20,0x20,0x70,0x6f,0x73,0x20,0x3a, 546 0x20,0x76,0x65,0x63,0x33,0x66,0x2c,0x0a,0x20,0x20,0x2f,0x2a,0x20,0x40,0x6f,0x66, 547 0x66,0x73,0x65,0x74,0x28,0x31,0x36,0x29,0x20,0x2a,0x2f,0x0a,0x20,0x20,0x63,0x6f, 548 0x6c,0x6f,0x72,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a, 549 0x61,0x6c,0x69,0x61,0x73,0x20,0x52,0x54,0x41,0x72,0x72,0x20,0x3d,0x20,0x61,0x72, 550 0x72,0x61,0x79,0x3c,0x73,0x62,0x5f,0x76,0x65,0x72,0x74,0x65,0x78,0x3e,0x3b,0x0a, 551 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x73,0x73,0x62,0x6f,0x20,0x7b,0x0a,0x20, 552 0x20,0x2f,0x2a,0x20,0x40,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x30,0x29,0x20,0x2a, 553 0x2f,0x0a,0x20,0x20,0x76,0x74,0x78,0x20,0x3a,0x20,0x52,0x54,0x41,0x72,0x72,0x2c, 554 0x0a,0x7d,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x30,0x29,0x20,0x40,0x62, 555 0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x30,0x29,0x20,0x76,0x61,0x72,0x3c,0x75,0x6e, 556 0x69,0x66,0x6f,0x72,0x6d,0x3e,0x20,0x78,0x5f,0x31,0x39,0x20,0x3a,0x20,0x76,0x73, 557 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70, 558 0x28,0x31,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x33,0x32,0x29, 559 0x20,0x76,0x61,0x72,0x3c,0x73,0x74,0x6f,0x72,0x61,0x67,0x65,0x2c,0x20,0x72,0x65, 560 0x61,0x64,0x3e,0x20,0x78,0x5f,0x32,0x38,0x20,0x3a,0x20,0x73,0x73,0x62,0x6f,0x3b, 561 0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x67, 562 0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x20,0x3a,0x20, 563 0x69,0x33,0x32,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74, 564 0x65,0x3e,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66, 565 0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20, 566 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x76,0x65, 567 0x63,0x34,0x66,0x3b,0x0a,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28, 568 0x29,0x20,0x7b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,0x32,0x20,0x3a, 569 0x20,0x6d,0x61,0x74,0x34,0x78,0x34,0x66,0x20,0x3d,0x20,0x78,0x5f,0x31,0x39,0x2e, 570 0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x33,0x31,0x20, 571 0x3a,0x20,0x69,0x33,0x32,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65, 572 0x78,0x49,0x6e,0x64,0x65,0x78,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f, 573 0x33,0x34,0x20,0x3a,0x20,0x76,0x65,0x63,0x33,0x66,0x20,0x3d,0x20,0x78,0x5f,0x32, 574 0x38,0x2e,0x76,0x74,0x78,0x5b,0x78,0x5f,0x33,0x31,0x5d,0x2e,0x70,0x6f,0x73,0x3b, 575 0x0a,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d, 576 0x20,0x28,0x78,0x5f,0x32,0x32,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x66,0x28,0x78, 577 0x5f,0x33,0x34,0x2e,0x78,0x2c,0x20,0x78,0x5f,0x33,0x34,0x2e,0x79,0x2c,0x20,0x78, 578 0x5f,0x33,0x34,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x29,0x3b,0x0a,0x20, 579 0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x34,0x34,0x20,0x3a,0x20,0x69,0x33,0x32,0x20, 580 0x3d,0x20,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78, 581 0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x34,0x38,0x20,0x3a,0x20,0x76, 582 0x65,0x63,0x34,0x66,0x20,0x3d,0x20,0x78,0x5f,0x32,0x38,0x2e,0x76,0x74,0x78,0x5b, 583 0x78,0x5f,0x34,0x34,0x5d,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x63, 584 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x78,0x5f,0x34,0x38,0x3b,0x0a,0x20,0x20,0x72, 585 0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74, 586 0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x62, 587 0x75,0x69,0x6c,0x74,0x69,0x6e,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29, 588 0x0a,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a, 589 0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74, 590 0x69,0x6f,0x6e,0x28,0x30,0x29,0x0a,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31, 591 0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x76,0x65, 592 0x72,0x74,0x65,0x78,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x28,0x40,0x62,0x75, 593 0x69,0x6c,0x74,0x69,0x6e,0x28,0x76,0x65,0x72,0x74,0x65,0x78,0x5f,0x69,0x6e,0x64, 594 0x65,0x78,0x29,0x20,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64, 595 0x65,0x78,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x75,0x33,0x32,0x29,0x20, 596 0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20, 597 0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d, 598 0x20,0x62,0x69,0x74,0x63,0x61,0x73,0x74,0x3c,0x69,0x33,0x32,0x3e,0x28,0x67,0x6c, 599 0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x5f,0x70,0x61,0x72, 600 0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x3b, 601 0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f, 602 0x75,0x74,0x28,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20, 603 0x63,0x6f,0x6c,0x6f,0x72,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, 604 ]; 605 /* 606 diagnostic(off, derivative_uniformity); 607 608 var<private> frag_color : vec4f; 609 610 var<private> color : vec4f; 611 612 fn main_1() { 613 let x_12 : vec4f = color; 614 frag_color = x_12; 615 return; 616 } 617 618 struct main_out { 619 @location(0) 620 frag_color_1 : vec4f, 621 } 622 623 @fragment 624 fn main(@location(0) color_param : vec4f) -> main_out { 625 color = color_param; 626 main_1(); 627 return main_out(frag_color); 628 } 629 630 */ 631 __gshared char[376] FS_SOURCE_WGSL = [ 632 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 633 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 634 0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69, 635 0x76,0x61,0x74,0x65,0x3e,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, 636 0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70, 637 0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20, 638 0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f, 639 0x31,0x28,0x29,0x20,0x7b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x31,0x32, 640 0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72, 641 0x3b,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, 642 0x20,0x78,0x5f,0x31,0x32,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b, 643 0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x5f, 644 0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, 645 0x6e,0x28,0x30,0x29,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, 646 0x72,0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a, 647 0x40,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69, 648 0x6e,0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x30,0x29,0x20,0x63, 649 0x6f,0x6c,0x6f,0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,0x63, 650 0x34,0x66,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20, 651 0x7b,0x0a,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f, 652 0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x6d,0x61,0x69,0x6e,0x5f, 653 0x31,0x28,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61, 654 0x69,0x6e,0x5f,0x6f,0x75,0x74,0x28,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, 655 0x72,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, 656 ]; 657 sg.ShaderDesc vertexpullShaderDesc(sg.Backend backend) @trusted @nogc nothrow { 658 sg.ShaderDesc desc; 659 desc.label = "vertexpull_shader"; 660 switch (backend) { 661 case sg.Backend.Glcore: 662 desc.vertex_func.source = &VS_SOURCE_GLSL430[0]; 663 desc.vertex_func.entry = "main"; 664 desc.fragment_func.source = &FS_SOURCE_GLSL430[0]; 665 desc.fragment_func.entry = "main"; 666 desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex; 667 desc.uniform_blocks[0].layout = sg.UniformLayout.Std140; 668 desc.uniform_blocks[0].size = 64; 669 desc.uniform_blocks[0].glsl_uniforms[0].type = sg.UniformType.Float4; 670 desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4; 671 desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "vs_params"; 672 desc.storage_buffers[0].stage = sg.ShaderStage.Vertex; 673 desc.storage_buffers[0].readonly = true; 674 desc.storage_buffers[0].glsl_binding_n = 0; 675 break; 676 case sg.Backend.Gles3: 677 desc.vertex_func.source = &VS_SOURCE_GLSL310ES[0]; 678 desc.vertex_func.entry = "main"; 679 desc.fragment_func.source = &FS_SOURCE_GLSL310ES[0]; 680 desc.fragment_func.entry = "main"; 681 desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex; 682 desc.uniform_blocks[0].layout = sg.UniformLayout.Std140; 683 desc.uniform_blocks[0].size = 64; 684 desc.uniform_blocks[0].glsl_uniforms[0].type = sg.UniformType.Float4; 685 desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4; 686 desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "vs_params"; 687 desc.storage_buffers[0].stage = sg.ShaderStage.Vertex; 688 desc.storage_buffers[0].readonly = true; 689 desc.storage_buffers[0].glsl_binding_n = 0; 690 break; 691 case sg.Backend.D3d11: 692 desc.vertex_func.source = &VS_SOURCE_HLSL5[0]; 693 desc.vertex_func.d3d11_target = "vs_5_0"; 694 desc.vertex_func.entry = "main"; 695 desc.fragment_func.source = &FS_SOURCE_HLSL5[0]; 696 desc.fragment_func.d3d11_target = "ps_5_0"; 697 desc.fragment_func.entry = "main"; 698 desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex; 699 desc.uniform_blocks[0].layout = sg.UniformLayout.Std140; 700 desc.uniform_blocks[0].size = 64; 701 desc.uniform_blocks[0].hlsl_register_b_n = 0; 702 desc.storage_buffers[0].stage = sg.ShaderStage.Vertex; 703 desc.storage_buffers[0].readonly = true; 704 desc.storage_buffers[0].hlsl_register_t_n = 16; 705 break; 706 case sg.Backend.Metal_macos: 707 desc.vertex_func.source = &VS_SOURCE_METAL_MACOS[0]; 708 desc.vertex_func.entry = "main0"; 709 desc.fragment_func.source = &FS_SOURCE_METAL_MACOS[0]; 710 desc.fragment_func.entry = "main0"; 711 desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex; 712 desc.uniform_blocks[0].layout = sg.UniformLayout.Std140; 713 desc.uniform_blocks[0].size = 64; 714 desc.uniform_blocks[0].msl_buffer_n = 0; 715 desc.storage_buffers[0].stage = sg.ShaderStage.Vertex; 716 desc.storage_buffers[0].readonly = true; 717 desc.storage_buffers[0].msl_buffer_n = 8; 718 break; 719 case sg.Backend.Wgpu: 720 desc.vertex_func.source = &VS_SOURCE_WGSL[0]; 721 desc.vertex_func.entry = "main"; 722 desc.fragment_func.source = &FS_SOURCE_WGSL[0]; 723 desc.fragment_func.entry = "main"; 724 desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex; 725 desc.uniform_blocks[0].layout = sg.UniformLayout.Std140; 726 desc.uniform_blocks[0].size = 64; 727 desc.uniform_blocks[0].wgsl_group0_binding_n = 0; 728 desc.storage_buffers[0].stage = sg.ShaderStage.Vertex; 729 desc.storage_buffers[0].readonly = true; 730 desc.storage_buffers[0].wgsl_group1_binding_n = 32; 731 break; 732 default: break; 733 } 734 return desc; 735 }