diff --git a/.gitignore b/.gitignore index 256dca7..0f1ab7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +# allow shader compiler +!thirdparty\sokol-shdc.exe + +# generated files +gen/ + # debugging config desktop.rdbg diff --git a/build_desktop_debug.bat b/build_desktop_debug.bat index 3b6f5fd..1c14828 100644 --- a/build_desktop_debug.bat +++ b/build_desktop_debug.bat @@ -3,7 +3,7 @@ @REM https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category?view=msvc-170 call shadergen.bat || goto :error -cl /Ithirdparty /W3 /Zi /WX main.c || goto :error +cl /Igen /Ithirdparty /W3 /Zi /WX main.c || goto :error goto :EOF :error diff --git a/quad-sapp.glsl.h b/quad-sapp.glsl.h deleted file mode 100644 index 16554c1..0000000 --- a/quad-sapp.glsl.h +++ /dev/null @@ -1,540 +0,0 @@ -#pragma once -/* - #version:1# (machine generated, don't edit!) - - Generated by sokol-shdc (https://github.com/floooh/sokol-tools) - - Cmdline: sokol-shdc --input quad.glsl --output quad-sapp.glsl.h --slang glsl330:hlsl5:metal_macos - - Overview: - - Shader program 'program': - Get shader desc: quad_program_shader_desc(sg_query_backend()); - Vertex shader: vs - Attribute slots: - ATTR_quad_vs_position = 0 - ATTR_quad_vs_texcoord0 = 1 - Fragment shader: fs - Uniform block 'fs_params': - C struct: quad_fs_params_t - Bind slot: SLOT_quad_fs_params = 0 - Image 'tex': - Type: SG_IMAGETYPE_2D - Component Type: SG_SAMPLERTYPE_FLOAT - Bind slot: SLOT_quad_tex = 0 - - - Shader descriptor structs: - - sg_shader program = sg_make_shader(quad_program_shader_desc(sg_query_backend())); - - Vertex attribute locations for vertex shader 'vs': - - sg_pipeline pip = sg_make_pipeline(&(sg_pipeline_desc){ - .layout = { - .attrs = { - [ATTR_quad_vs_position] = { ... }, - [ATTR_quad_vs_texcoord0] = { ... }, - }, - }, - ...}); - - Image bind slots, use as index in sg_bindings.vs_images[] or .fs_images[] - - SLOT_quad_tex = 0; - - Bind slot and C-struct for uniform block 'fs_params': - - quad_fs_params_t fs_params = { - .tint = ...; - .upper_left = ...; - .lower_right = ...; - }; - sg_apply_uniforms(SG_SHADERSTAGE_[VS|FS], SLOT_quad_fs_params, &SG_RANGE(fs_params)); - -*/ -#include -#include -#include -#include -#if !defined(SOKOL_SHDC_ALIGN) - #if defined(_MSC_VER) - #define SOKOL_SHDC_ALIGN(a) __declspec(align(a)) - #else - #define SOKOL_SHDC_ALIGN(a) __attribute__((aligned(a))) - #endif -#endif -#define ATTR_quad_vs_position (0) -#define ATTR_quad_vs_texcoord0 (1) -#define SLOT_quad_tex (0) -#define SLOT_quad_fs_params (0) -#pragma pack(push,1) -SOKOL_SHDC_ALIGN(16) typedef struct quad_fs_params_t { - float tint[4]; - float upper_left[2]; - float lower_right[2]; -} quad_fs_params_t; -#pragma pack(pop) -/* - #version 330 - - layout(location = 0) in vec2 position; - out vec2 uv; - layout(location = 1) in vec2 texcoord0; - - void main() - { - gl_Position = vec4(position, 0.0, 1.0); - uv = texcoord0; - } - -*/ -static const char quad_vs_source_glsl330[189] = { - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x6c,0x61, - 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, - 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76, - 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74, - 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f, - 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x74,0x65, - 0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, -}; -/* - #version 330 - - uniform vec4 fs_params[2]; - uniform sampler2D tex; - - in vec2 uv; - layout(location = 0) out vec4 frag_color; - - void main() - { - frag_color = texture(tex, vec2(mix(fs_params[1].x, fs_params[1].z, uv.x), mix(fs_params[1].y, fs_params[1].w, uv.y))) * fs_params[0]; - } - -*/ -static const char quad_fs_source_glsl330[276] = { - 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x73,0x5f,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a, - 0x0a,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79, - 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, - 0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69, - 0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74, - 0x65,0x78,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x6d,0x69,0x78,0x28,0x66,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2e,0x78,0x2c,0x20,0x66,0x73,0x5f, - 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2e,0x7a,0x2c,0x20,0x75,0x76,0x2e, - 0x78,0x29,0x2c,0x20,0x6d,0x69,0x78,0x28,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x31,0x5d,0x2e,0x79,0x2c,0x20,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x5b,0x31,0x5d,0x2e,0x77,0x2c,0x20,0x75,0x76,0x2e,0x79,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x00, -}; -/* - static float4 gl_Position; - static float2 position; - static float2 uv; - static float2 texcoord0; - - struct SPIRV_Cross_Input - { - float2 position : TEXCOORD0; - float2 texcoord0 : TEXCOORD1; - }; - - struct SPIRV_Cross_Output - { - float2 uv : TEXCOORD0; - float4 gl_Position : SV_Position; - }; - - #line 11 "quad.glsl" - void vert_main() - { - #line 11 "quad.glsl" - gl_Position = float4(position, 0.0f, 1.0f); - #line 12 "quad.glsl" - uv = texcoord0; - } - - SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) - { - position = stage_input.position; - texcoord0 = stage_input.texcoord0; - vert_main(); - SPIRV_Cross_Output stage_output; - stage_output.gl_Position = gl_Position; - stage_output.uv = uv; - return stage_output; - } -*/ -static const char quad_vs_source_hlsl5[728] = { - 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c, - 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, - 0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x20,0x75,0x76,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73, - 0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20, - 0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x20, - 0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x31,0x3b,0x0a,0x7d,0x3b,0x0a, - 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72, - 0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x3a,0x20,0x54,0x45,0x58, - 0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a, - 0x20,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x3b, - 0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x31,0x20,0x22,0x71,0x75,0x61,0x64, - 0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x76,0x6f,0x69,0x64,0x20,0x76,0x65,0x72,0x74, - 0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20, - 0x31,0x31,0x20,0x22,0x71,0x75,0x61,0x64,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20, - 0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x2c,0x20,0x30,0x2e,0x30,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x23, - 0x6c,0x69,0x6e,0x65,0x20,0x31,0x32,0x20,0x22,0x71,0x75,0x61,0x64,0x2e,0x67,0x6c, - 0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,0x50,0x49,0x52,0x56, - 0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x6d,0x61, - 0x69,0x6e,0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49, - 0x6e,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74, - 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x70, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78, - 0x63,0x6f,0x6f,0x72,0x64,0x30,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69, - 0x6e,0x70,0x75,0x74,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x72,0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73, - 0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75, - 0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f, - 0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70, - 0x75,0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74, - 0x70,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x00, -}; -/* - cbuffer fs_params : register(b0) - { - float4 _15_tint : packoffset(c0); - float2 _15_upper_left : packoffset(c1); - float2 _15_lower_right : packoffset(c1.z); - }; - - Texture2D tex : register(t0); - SamplerState _tex_sampler : register(s0); - - static float2 uv; - static float4 frag_color; - - struct SPIRV_Cross_Input - { - float2 uv : TEXCOORD0; - }; - - struct SPIRV_Cross_Output - { - float4 frag_color : SV_Target0; - }; - - #line 18 "quad.glsl" - void frag_main() - { - #line 18 "quad.glsl" - #line 19 "quad.glsl" - frag_color = tex.Sample(_tex_sampler, float2(lerp(_15_upper_left.x, _15_lower_right.x, uv.x), lerp(_15_upper_left.y, _15_lower_right.y, uv.y))) * _15_tint; - } - - SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) - { - uv = stage_input.uv; - frag_main(); - SPIRV_Cross_Output stage_output; - stage_output.frag_color = frag_color; - return stage_output; - } -*/ -static const char quad_fs_source_hlsl5[871] = { - 0x63,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, - 0x73,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x62,0x30,0x29, - 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31, - 0x35,0x5f,0x74,0x69,0x6e,0x74,0x20,0x3a,0x20,0x70,0x61,0x63,0x6b,0x6f,0x66,0x66, - 0x73,0x65,0x74,0x28,0x63,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x20,0x5f,0x31,0x35,0x5f,0x75,0x70,0x70,0x65,0x72,0x5f,0x6c,0x65, - 0x66,0x74,0x20,0x3a,0x20,0x70,0x61,0x63,0x6b,0x6f,0x66,0x66,0x73,0x65,0x74,0x28, - 0x63,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, - 0x5f,0x31,0x35,0x5f,0x6c,0x6f,0x77,0x65,0x72,0x5f,0x72,0x69,0x67,0x68,0x74,0x20, - 0x3a,0x20,0x70,0x61,0x63,0x6b,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x63,0x31,0x2e, - 0x7a,0x29,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x32, - 0x44,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x34,0x3e,0x20,0x74,0x65,0x78,0x20,0x3a,0x20, - 0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x74,0x30,0x29,0x3b,0x0a,0x53,0x61, - 0x6d,0x70,0x6c,0x65,0x72,0x53,0x74,0x61,0x74,0x65,0x20,0x5f,0x74,0x65,0x78,0x5f, - 0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74, - 0x65,0x72,0x28,0x73,0x30,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69, - 0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49, - 0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x3a, - 0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, - 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f, - 0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3a,0x20,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65,0x74,0x30,0x3b,0x0a, - 0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x38,0x20,0x22,0x71,0x75, - 0x61,0x64,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x76,0x6f,0x69,0x64,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x23,0x6c,0x69,0x6e, - 0x65,0x20,0x31,0x38,0x20,0x22,0x71,0x75,0x61,0x64,0x2e,0x67,0x6c,0x73,0x6c,0x22, - 0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x39,0x20,0x22,0x71,0x75,0x61,0x64,0x2e, - 0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x2e,0x53,0x61,0x6d,0x70,0x6c, - 0x65,0x28,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x2c,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x6c,0x65,0x72,0x70,0x28,0x5f,0x31,0x35,0x5f, - 0x75,0x70,0x70,0x65,0x72,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x2c,0x20,0x5f,0x31, - 0x35,0x5f,0x6c,0x6f,0x77,0x65,0x72,0x5f,0x72,0x69,0x67,0x68,0x74,0x2e,0x78,0x2c, - 0x20,0x75,0x76,0x2e,0x78,0x29,0x2c,0x20,0x6c,0x65,0x72,0x70,0x28,0x5f,0x31,0x35, - 0x5f,0x75,0x70,0x70,0x65,0x72,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x79,0x2c,0x20,0x5f, - 0x31,0x35,0x5f,0x6c,0x6f,0x77,0x65,0x72,0x5f,0x72,0x69,0x67,0x68,0x74,0x2e,0x79, - 0x2c,0x20,0x75,0x76,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x5f, - 0x74,0x69,0x6e,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,0x50,0x49,0x52,0x56,0x5f,0x43, - 0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70, - 0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x29,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65, - 0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x75,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70, - 0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75, - 0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70, - 0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x00, -}; -/* - #include - #include - - using namespace metal; - - struct main0_out - { - float2 uv [[user(locn0)]]; - float4 gl_Position [[position]]; - }; - - struct main0_in - { - float2 position [[attribute(0)]]; - float2 texcoord0 [[attribute(1)]]; - }; - - #line 11 "quad.glsl" - vertex main0_out main0(main0_in in [[stage_in]]) - { - main0_out out = {}; - #line 11 "quad.glsl" - out.gl_Position = float4(in.position, 0.0, 1.0); - #line 12 "quad.glsl" - out.uv = in.texcoord0; - return out; - } - -*/ -static const char quad_vs_source_metal_macos[500] = { - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, - 0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d, - 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69, - 0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x20, - 0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d, - 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x31,0x20,0x22, - 0x71,0x75,0x61,0x64,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x76,0x65,0x72,0x74,0x65, - 0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e, - 0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b, - 0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20, - 0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x31,0x20,0x22, - 0x71,0x75,0x61,0x64,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f, - 0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74, - 0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x32,0x20,0x22,0x71,0x75,0x61,0x64,0x2e,0x67, - 0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,0x20, - 0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x00, -}; -/* - #include - #include - - using namespace metal; - - struct fs_params - { - float4 tint; - float2 upper_left; - float2 lower_right; - }; - - struct main0_out - { - float4 frag_color [[color(0)]]; - }; - - struct main0_in - { - float2 uv [[user(locn0)]]; - }; - - #line 18 "quad.glsl" - fragment main0_out main0(main0_in in [[stage_in]], constant fs_params& _15 [[buffer(0)]], texture2d tex [[texture(0)]], sampler texSmplr [[sampler(0)]]) - { - main0_out out = {}; - #line 18 "quad.glsl" - #line 19 "quad.glsl" - out.frag_color = tex.sample(texSmplr, float2(mix(_15.upper_left.x, _15.lower_right.x, in.uv.x), mix(_15.upper_left.y, _15.lower_right.y, in.uv.y))) * _15.tint; - return out; - } - -*/ -static const char quad_fs_source_metal_macos[704] = { - 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, - 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, - 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, - 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, - 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x66, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x70,0x70,0x65,0x72,0x5f,0x6c,0x65,0x66, - 0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x6c,0x6f, - 0x77,0x65,0x72,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73, - 0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28, - 0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74, - 0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72, - 0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23, - 0x6c,0x69,0x6e,0x65,0x20,0x31,0x38,0x20,0x22,0x71,0x75,0x61,0x64,0x2e,0x67,0x6c, - 0x73,0x6c,0x22,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69, - 0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65, - 0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20, - 0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x35,0x20,0x5b, - 0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74, - 0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d, - 0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x74,0x65,0x78,0x53,0x6d, - 0x70,0x6c,0x72,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29, - 0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, - 0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c, - 0x69,0x6e,0x65,0x20,0x31,0x38,0x20,0x22,0x71,0x75,0x61,0x64,0x2e,0x67,0x6c,0x73, - 0x6c,0x22,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x39,0x20,0x22,0x71,0x75,0x61, - 0x64,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78, - 0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x35, - 0x2e,0x75,0x70,0x70,0x65,0x72,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x2c,0x20,0x5f, - 0x31,0x35,0x2e,0x6c,0x6f,0x77,0x65,0x72,0x5f,0x72,0x69,0x67,0x68,0x74,0x2e,0x78, - 0x2c,0x20,0x69,0x6e,0x2e,0x75,0x76,0x2e,0x78,0x29,0x2c,0x20,0x6d,0x69,0x78,0x28, - 0x5f,0x31,0x35,0x2e,0x75,0x70,0x70,0x65,0x72,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x79, - 0x2c,0x20,0x5f,0x31,0x35,0x2e,0x6c,0x6f,0x77,0x65,0x72,0x5f,0x72,0x69,0x67,0x68, - 0x74,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x2e,0x75,0x76,0x2e,0x79,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x35,0x2e,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, - -}; -#if !defined(SOKOL_GFX_INCLUDED) - #error "Please include sokol_gfx.h before quad-sapp.glsl.h" -#endif -static inline const sg_shader_desc* quad_program_shader_desc(sg_backend backend) { - if (backend == SG_BACKEND_GLCORE33) { - static sg_shader_desc desc; - static bool valid; - if (!valid) { - valid = true; - desc.attrs[0].name = "position"; - desc.attrs[1].name = "texcoord0"; - desc.vs.source = quad_vs_source_glsl330; - desc.vs.entry = "main"; - desc.fs.source = quad_fs_source_glsl330; - desc.fs.entry = "main"; - desc.fs.uniform_blocks[0].size = 32; - desc.fs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140; - desc.fs.uniform_blocks[0].uniforms[0].name = "fs_params"; - desc.fs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; - desc.fs.uniform_blocks[0].uniforms[0].array_count = 2; - desc.fs.images[0].name = "tex"; - desc.fs.images[0].image_type = SG_IMAGETYPE_2D; - desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; - desc.label = "quad_program_shader"; - } - return &desc; - } - if (backend == SG_BACKEND_D3D11) { - static sg_shader_desc desc; - static bool valid; - if (!valid) { - valid = true; - desc.attrs[0].sem_name = "TEXCOORD"; - desc.attrs[0].sem_index = 0; - desc.attrs[1].sem_name = "TEXCOORD"; - desc.attrs[1].sem_index = 1; - desc.vs.source = quad_vs_source_hlsl5; - desc.vs.d3d11_target = "vs_5_0"; - desc.vs.entry = "main"; - desc.fs.source = quad_fs_source_hlsl5; - desc.fs.d3d11_target = "ps_5_0"; - desc.fs.entry = "main"; - desc.fs.uniform_blocks[0].size = 32; - desc.fs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140; - desc.fs.images[0].name = "tex"; - desc.fs.images[0].image_type = SG_IMAGETYPE_2D; - desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; - desc.label = "quad_program_shader"; - } - return &desc; - } - if (backend == SG_BACKEND_METAL_MACOS) { - static sg_shader_desc desc; - static bool valid; - if (!valid) { - valid = true; - desc.vs.source = quad_vs_source_metal_macos; - desc.vs.entry = "main0"; - desc.fs.source = quad_fs_source_metal_macos; - desc.fs.entry = "main0"; - desc.fs.uniform_blocks[0].size = 32; - desc.fs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140; - desc.fs.images[0].name = "tex"; - desc.fs.images[0].image_type = SG_IMAGETYPE_2D; - desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; - desc.label = "quad_program_shader"; - } - return &desc; - } - return 0; -} diff --git a/shadergen.bat b/shadergen.bat index b147ea8..c44cb3b 100644 --- a/shadergen.bat +++ b/shadergen.bat @@ -1,5 +1,7 @@ @echo off -thirdparty\sokol-shdc.exe --input quad.glsl --output quad-sapp.glsl.h --slang glsl330:hlsl5:metal_macos || goto :error +rmdir /S /q gen +mkdir gen +thirdparty\sokol-shdc.exe --input quad.glsl --output gen\quad-sapp.glsl.h --slang glsl330:hlsl5:metal_macos || goto :error goto :EOF