diff --git a/backends/imgui_impl_wgpu.cpp b/backends/imgui_impl_wgpu.cpp index 2b7edb0baa68..82a75912c361 100644 --- a/backends/imgui_impl_wgpu.cpp +++ b/backends/imgui_impl_wgpu.cpp @@ -56,14 +56,14 @@ #include // One of IMGUI_IMPL_WEBGPU_BACKEND_DAWN or IMGUI_IMPL_WEBGPU_BACKEND_WGPU must be provided. See imgui_impl_wgpu.h for more details. -#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN) == defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) -#error Exactly one of IMGUI_IMPL_WEBGPU_BACKEND_DAWN or IMGUI_IMPL_WEBGPU_BACKEND_WGPU must be defined! +#if !defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN) && !defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) && !defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) +#error Exactly one of IMGUI_IMPL_WEBGPU_BACKEND_DAWN, IMGUI_IMPL_WEBGPU_BACKEND_WGPU or IMGUI_IMPL_WEBGPU_BACKEND_WGVK must be defined! #endif #if defined(__EMSCRIPTEN__) && defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) #error Emscripten <4.0.10 with '-sUSE_WEBGPU=1' is not supported anymore. #endif -#ifdef IMGUI_IMPL_WEBGPU_BACKEND_DAWN +#if defined IMGUI_IMPL_WEBGPU_BACKEND_DAWN || defined IMGUI_IMPL_WEBGPU_BACKEND_WGVK // Dawn renamed WGPUProgrammableStageDescriptor to WGPUComputeState (see: https://github.com/webgpu-native/webgpu-headers/pull/413) // Using type alias until WGPU adopts the same naming convention (#8369) using WGPUProgrammableStageDescriptor = WGPUComputeState; @@ -185,6 +185,281 @@ fn main(in: VertexOutput) -> @location(0) vec4 { } )"; +// wgslc -o vert.spv vert.wgsl +static const unsigned char __shader_vert_spirv[] = { +/*000000*/ 0x03,0x02,0x23,0x07,0x00,0x03,0x01,0x00,0x01,0x00,0x17,0x00,0x5a,0x00,0x00,0x00, +/*000010*/ 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0e,0x00,0x03,0x00, +/*000020*/ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x0c,0x00,0x00,0x00,0x00,0x00, +/*000030*/ 0x4e,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00, +/*000040*/ 0x0c,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x12,0x00,0x00,0x00, +/*000050*/ 0x13,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x06,0x00,0x05,0x00,0x03,0x00,0x00,0x00, +/*000060*/ 0x00,0x00,0x00,0x00,0x69,0x6e,0x6e,0x65,0x72,0x00,0x00,0x00,0x05,0x00,0x0b,0x00, +/*000070*/ 0x03,0x00,0x00,0x00,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x73,0x5f,0x62,0x6c,0x6f, +/*000080*/ 0x63,0x6b,0x5f,0x74,0x69,0x6e,0x74,0x5f,0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74, +/*000090*/ 0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x05,0x00,0x06,0x00,0x08,0x00,0x00,0x00, +/*0000a0*/ 0x6d,0x61,0x69,0x6e,0x5f,0x6c,0x6f,0x63,0x30,0x5f,0x49,0x6e,0x70,0x75,0x74,0x00, +/*0000b0*/ 0x05,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x5f,0x6c,0x6f,0x63, +/*0000c0*/ 0x31,0x5f,0x49,0x6e,0x70,0x75,0x74,0x00,0x05,0x00,0x06,0x00,0x0d,0x00,0x00,0x00, +/*0000d0*/ 0x6d,0x61,0x69,0x6e,0x5f,0x6c,0x6f,0x63,0x32,0x5f,0x49,0x6e,0x70,0x75,0x74,0x00, +/*0000e0*/ 0x05,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x5f,0x70,0x6f,0x73, +/*0000f0*/ 0x69,0x74,0x69,0x6f,0x6e,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x00,0x00,0x00,0x00, +/*000100*/ 0x05,0x00,0x07,0x00,0x12,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x5f,0x6c,0x6f,0x63, +/*000110*/ 0x30,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x00,0x00,0x00,0x00,0x05,0x00,0x07,0x00, +/*000120*/ 0x13,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x5f,0x6c,0x6f,0x63,0x31,0x5f,0x4f,0x75, +/*000130*/ 0x74,0x70,0x75,0x74,0x00,0x00,0x00,0x00,0x05,0x00,0x09,0x00,0x15,0x00,0x00,0x00, +/*000140*/ 0x6d,0x61,0x69,0x6e,0x5f,0x5f,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x73,0x69,0x7a, +/*000150*/ 0x65,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00, +/*000160*/ 0x17,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x6e,0x65,0x72,0x00,0x00, +/*000170*/ 0x06,0x00,0x06,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x6f,0x73,0x69, +/*000180*/ 0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00,0x06,0x00,0x05,0x00,0x18,0x00,0x00,0x00, +/*000190*/ 0x01,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00,0x06,0x00,0x04,0x00, +/*0001a0*/ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x75,0x76,0x00,0x00,0x05,0x00,0x06,0x00, +/*0001b0*/ 0x18,0x00,0x00,0x00,0x56,0x65,0x72,0x74,0x65,0x78,0x4f,0x75,0x74,0x70,0x75,0x74, +/*0001c0*/ 0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*0001d0*/ 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00, +/*0001e0*/ 0x19,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x75,0x76,0x00,0x00,0x06,0x00,0x05,0x00, +/*0001f0*/ 0x19,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, +/*000200*/ 0x05,0x00,0x05,0x00,0x19,0x00,0x00,0x00,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e, +/*000210*/ 0x70,0x75,0x74,0x00,0x05,0x00,0x03,0x00,0x1a,0x00,0x00,0x00,0x69,0x6e,0x00,0x00, +/*000220*/ 0x05,0x00,0x03,0x00,0x1d,0x00,0x00,0x00,0x6f,0x75,0x74,0x00,0x05,0x00,0x07,0x00, +/*000230*/ 0x33,0x00,0x00,0x00,0x73,0x74,0x61,0x72,0x74,0x5f,0x62,0x79,0x74,0x65,0x5f,0x6f, +/*000240*/ 0x66,0x66,0x73,0x65,0x74,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x4e,0x00,0x00,0x00, +/*000250*/ 0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x04,0x00,0x00,0x00, +/*000260*/ 0x06,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x03,0x00,0x00,0x00, +/*000270*/ 0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x03,0x00, +/*000280*/ 0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x01,0x00,0x00,0x00, +/*000290*/ 0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x01,0x00,0x00,0x00, +/*0002a0*/ 0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x03,0x00,0x01,0x00,0x00,0x00, +/*0002b0*/ 0x18,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, +/*0002c0*/ 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, +/*0002d0*/ 0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, +/*0002e0*/ 0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, +/*0002f0*/ 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, +/*000300*/ 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, +/*000310*/ 0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x15,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, +/*000320*/ 0x01,0x00,0x00,0x00,0x15,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x20,0x00,0x00,0x00, +/*000330*/ 0x00,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00, +/*000340*/ 0x04,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00, +/*000350*/ 0x05,0x00,0x00,0x00,0x1c,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00, +/*000360*/ 0x07,0x00,0x00,0x00,0x1e,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00, +/*000370*/ 0x20,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00, +/*000380*/ 0x3b,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, +/*000390*/ 0x16,0x00,0x03,0x00,0x0b,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x04,0x00, +/*0003a0*/ 0x0a,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*0003b0*/ 0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*0003c0*/ 0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*0003d0*/ 0x09,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x17,0x00,0x04,0x00, +/*0003e0*/ 0x0f,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*0003f0*/ 0x0e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000400*/ 0x0e,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*000410*/ 0x11,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000420*/ 0x11,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000430*/ 0x11,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*000440*/ 0x14,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000450*/ 0x14,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*000460*/ 0x16,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000470*/ 0x16,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1e,0x00,0x05,0x00, +/*000480*/ 0x18,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x0a,0x00,0x00,0x00, +/*000490*/ 0x1e,0x00,0x05,0x00,0x19,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x0a,0x00,0x00,0x00, +/*0004a0*/ 0x0f,0x00,0x00,0x00,0x21,0x00,0x04,0x00,0x1b,0x00,0x00,0x00,0x18,0x00,0x00,0x00, +/*0004b0*/ 0x19,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x1e,0x00,0x00,0x00,0x07,0x00,0x00,0x00, +/*0004c0*/ 0x18,0x00,0x00,0x00,0x2e,0x00,0x03,0x00,0x18,0x00,0x00,0x00,0x1f,0x00,0x00,0x00, +/*0004d0*/ 0x20,0x00,0x04,0x00,0x21,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, +/*0004e0*/ 0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*0004f0*/ 0x18,0x00,0x04,0x00,0x24,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x04,0x00,0x00,0x00, +/*000500*/ 0x2b,0x00,0x04,0x00,0x0b,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000510*/ 0x2b,0x00,0x04,0x00,0x0b,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x80,0x3f, +/*000520*/ 0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +/*000530*/ 0x20,0x00,0x04,0x00,0x2f,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0a,0x00,0x00,0x00, +/*000540*/ 0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x02,0x00,0x00,0x00, +/*000550*/ 0x21,0x00,0x04,0x00,0x34,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x06,0x00,0x00,0x00, +/*000560*/ 0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x10,0x00,0x00,0x00, +/*000570*/ 0x20,0x00,0x04,0x00,0x39,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x05,0x00,0x00,0x00, +/*000580*/ 0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x20,0x00,0x00,0x00, +/*000590*/ 0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x30,0x00,0x00,0x00, +/*0005a0*/ 0x13,0x00,0x02,0x00,0x4f,0x00,0x00,0x00,0x21,0x00,0x03,0x00,0x50,0x00,0x00,0x00, +/*0005b0*/ 0x4f,0x00,0x00,0x00,0x36,0x00,0x05,0x00,0x18,0x00,0x00,0x00,0x17,0x00,0x00,0x00, +/*0005c0*/ 0x00,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x37,0x00,0x03,0x00,0x19,0x00,0x00,0x00, +/*0005d0*/ 0x1a,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x1c,0x00,0x00,0x00,0x3b,0x00,0x05,0x00, +/*0005e0*/ 0x1e,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x1f,0x00,0x00,0x00, +/*0005f0*/ 0x41,0x00,0x05,0x00,0x21,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x1d,0x00,0x00,0x00, +/*000600*/ 0x22,0x00,0x00,0x00,0x39,0x00,0x05,0x00,0x24,0x00,0x00,0x00,0x23,0x00,0x00,0x00, +/*000610*/ 0x25,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x0a,0x00,0x00,0x00, +/*000620*/ 0x26,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x06,0x00, +/*000630*/ 0x0f,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x28,0x00,0x00,0x00, +/*000640*/ 0x29,0x00,0x00,0x00,0x91,0x00,0x05,0x00,0x0f,0x00,0x00,0x00,0x2a,0x00,0x00,0x00, +/*000650*/ 0x23,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x3e,0x00,0x04,0x00,0x20,0x00,0x00,0x00, +/*000660*/ 0x2a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x21,0x00,0x00,0x00, +/*000670*/ 0x2b,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x51,0x00,0x05,0x00, +/*000680*/ 0x0f,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x02,0x00,0x00,0x00, +/*000690*/ 0x3e,0x00,0x04,0x00,0x2b,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*0006a0*/ 0x41,0x00,0x05,0x00,0x2f,0x00,0x00,0x00,0x2e,0x00,0x00,0x00,0x1d,0x00,0x00,0x00, +/*0006b0*/ 0x30,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x31,0x00,0x00,0x00, +/*0006c0*/ 0x1a,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x04,0x00,0x2e,0x00,0x00,0x00, +/*0006d0*/ 0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x05,0x00,0x18,0x00,0x00,0x00, +/*0006e0*/ 0x32,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x02,0x00, +/*0006f0*/ 0x32,0x00,0x00,0x00,0x38,0x00,0x01,0x00,0x36,0x00,0x05,0x00,0x24,0x00,0x00,0x00, +/*000700*/ 0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x03,0x00, +/*000710*/ 0x06,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x35,0x00,0x00,0x00, +/*000720*/ 0x86,0x00,0x05,0x00,0x06,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x33,0x00,0x00,0x00, +/*000730*/ 0x37,0x00,0x00,0x00,0x41,0x00,0x06,0x00,0x39,0x00,0x00,0x00,0x38,0x00,0x00,0x00, +/*000740*/ 0x01,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x3d,0x00,0x05,0x00, +/*000750*/ 0x05,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000760*/ 0x7c,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x3b,0x00,0x00,0x00,0x3a,0x00,0x00,0x00, +/*000770*/ 0x80,0x00,0x05,0x00,0x06,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x37,0x00,0x00,0x00, +/*000780*/ 0x33,0x00,0x00,0x00,0x86,0x00,0x05,0x00,0x06,0x00,0x00,0x00,0x3d,0x00,0x00,0x00, +/*000790*/ 0x3c,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x41,0x00,0x06,0x00,0x39,0x00,0x00,0x00, +/*0007a0*/ 0x3e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x3d,0x00,0x00,0x00, +/*0007b0*/ 0x3d,0x00,0x05,0x00,0x05,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x3e,0x00,0x00,0x00, +/*0007c0*/ 0x00,0x00,0x00,0x00,0x7c,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x40,0x00,0x00,0x00, +/*0007d0*/ 0x3f,0x00,0x00,0x00,0x80,0x00,0x05,0x00,0x06,0x00,0x00,0x00,0x41,0x00,0x00,0x00, +/*0007e0*/ 0x42,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x86,0x00,0x05,0x00,0x06,0x00,0x00,0x00, +/*0007f0*/ 0x43,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x41,0x00,0x06,0x00, +/*000800*/ 0x39,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x22,0x00,0x00,0x00, +/*000810*/ 0x43,0x00,0x00,0x00,0x3d,0x00,0x05,0x00,0x05,0x00,0x00,0x00,0x45,0x00,0x00,0x00, +/*000820*/ 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x04,0x00,0x0f,0x00,0x00,0x00, +/*000830*/ 0x46,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x80,0x00,0x05,0x00,0x06,0x00,0x00,0x00, +/*000840*/ 0x47,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x86,0x00,0x05,0x00, +/*000850*/ 0x06,0x00,0x00,0x00,0x49,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x37,0x00,0x00,0x00, +/*000860*/ 0x41,0x00,0x06,0x00,0x39,0x00,0x00,0x00,0x4a,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +/*000870*/ 0x22,0x00,0x00,0x00,0x49,0x00,0x00,0x00,0x3d,0x00,0x05,0x00,0x05,0x00,0x00,0x00, +/*000880*/ 0x4b,0x00,0x00,0x00,0x4a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x04,0x00, +/*000890*/ 0x0f,0x00,0x00,0x00,0x4c,0x00,0x00,0x00,0x4b,0x00,0x00,0x00,0x50,0x00,0x07,0x00, +/*0008a0*/ 0x24,0x00,0x00,0x00,0x4d,0x00,0x00,0x00,0x3b,0x00,0x00,0x00,0x40,0x00,0x00,0x00, +/*0008b0*/ 0x46,0x00,0x00,0x00,0x4c,0x00,0x00,0x00,0xfe,0x00,0x02,0x00,0x4d,0x00,0x00,0x00, +/*0008c0*/ 0x38,0x00,0x01,0x00,0x36,0x00,0x05,0x00,0x4f,0x00,0x00,0x00,0x4e,0x00,0x00,0x00, +/*0008d0*/ 0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x51,0x00,0x00,0x00, +/*0008e0*/ 0x3d,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x52,0x00,0x00,0x00,0x08,0x00,0x00,0x00, +/*0008f0*/ 0x00,0x00,0x00,0x00,0x3d,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x53,0x00,0x00,0x00, +/*000900*/ 0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x05,0x00,0x0f,0x00,0x00,0x00, +/*000910*/ 0x54,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x06,0x00, +/*000920*/ 0x19,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x52,0x00,0x00,0x00,0x53,0x00,0x00,0x00, +/*000930*/ 0x54,0x00,0x00,0x00,0x39,0x00,0x05,0x00,0x18,0x00,0x00,0x00,0x56,0x00,0x00,0x00, +/*000940*/ 0x17,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x0f,0x00,0x00,0x00, +/*000950*/ 0x57,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x04,0x00, +/*000960*/ 0x10,0x00,0x00,0x00,0x57,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x00,0x05,0x00, +/*000970*/ 0x0f,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +/*000980*/ 0x3e,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000990*/ 0x51,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x59,0x00,0x00,0x00,0x56,0x00,0x00,0x00, +/*0009a0*/ 0x02,0x00,0x00,0x00,0x3e,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x59,0x00,0x00,0x00, +/*0009b0*/ 0x00,0x00,0x00,0x00,0x3e,0x00,0x04,0x00,0x15,0x00,0x00,0x00,0x29,0x00,0x00,0x00, +/*0009c0*/ 0x00,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00 +}; + +// wgslc -o frag.spv frag.wgsl +static const unsigned char __shader_frag_spirv[] = { +/*000000*/ 0x03,0x02,0x23,0x07,0x00,0x03,0x01,0x00,0x01,0x00,0x17,0x00,0x3c,0x00,0x00,0x00, +/*000010*/ 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, +/*000020*/ 0x30,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, +/*000030*/ 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +/*000040*/ 0x0f,0x00,0x09,0x00,0x04,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, +/*000050*/ 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x13,0x00,0x00,0x00, +/*000060*/ 0x16,0x00,0x00,0x00,0x10,0x00,0x03,0x00,0x33,0x00,0x00,0x00,0x07,0x00,0x00,0x00, +/*000070*/ 0x06,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x69,0x6e,0x6e,0x65, +/*000080*/ 0x72,0x00,0x00,0x00,0x05,0x00,0x0b,0x00,0x03,0x00,0x00,0x00,0x75,0x6e,0x69,0x66, +/*000090*/ 0x6f,0x72,0x6d,0x73,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x74,0x69,0x6e,0x74,0x5f, +/*0000a0*/ 0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00, +/*0000b0*/ 0x05,0x00,0x03,0x00,0x08,0x00,0x00,0x00,0x73,0x00,0x00,0x00,0x05,0x00,0x03,0x00, +/*0000c0*/ 0x0b,0x00,0x00,0x00,0x74,0x00,0x00,0x00,0x05,0x00,0x07,0x00,0x0f,0x00,0x00,0x00, +/*0000d0*/ 0x6d,0x61,0x69,0x6e,0x5f,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x49,0x6e, +/*0000e0*/ 0x70,0x75,0x74,0x00,0x05,0x00,0x06,0x00,0x12,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, +/*0000f0*/ 0x5f,0x6c,0x6f,0x63,0x30,0x5f,0x49,0x6e,0x70,0x75,0x74,0x00,0x05,0x00,0x06,0x00, +/*000100*/ 0x13,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x5f,0x6c,0x6f,0x63,0x31,0x5f,0x49,0x6e, +/*000110*/ 0x70,0x75,0x74,0x00,0x05,0x00,0x07,0x00,0x16,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, +/*000120*/ 0x5f,0x6c,0x6f,0x63,0x30,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x00,0x00,0x00,0x00, +/*000130*/ 0x05,0x00,0x05,0x00,0x18,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x5f,0x69,0x6e,0x6e, +/*000140*/ 0x65,0x72,0x00,0x00,0x06,0x00,0x06,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000150*/ 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00,0x06,0x00,0x05,0x00, +/*000160*/ 0x19,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, +/*000170*/ 0x06,0x00,0x04,0x00,0x19,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x75,0x76,0x00,0x00, +/*000180*/ 0x05,0x00,0x06,0x00,0x19,0x00,0x00,0x00,0x56,0x65,0x72,0x74,0x65,0x78,0x4f,0x75, +/*000190*/ 0x74,0x70,0x75,0x74,0x00,0x00,0x00,0x00,0x05,0x00,0x03,0x00,0x1a,0x00,0x00,0x00, +/*0001a0*/ 0x69,0x6e,0x00,0x00,0x05,0x00,0x04,0x00,0x24,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f, +/*0001b0*/ 0x72,0x00,0x00,0x00,0x05,0x00,0x06,0x00,0x2f,0x00,0x00,0x00,0x63,0x6f,0x72,0x72, +/*0001c0*/ 0x65,0x63,0x74,0x65,0x64,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x05,0x00,0x04,0x00, +/*0001d0*/ 0x33,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00, +/*0001e0*/ 0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x48,0x00,0x05,0x00, +/*0001f0*/ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000200*/ 0x47,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00, +/*000210*/ 0x01,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00, +/*000220*/ 0x01,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x03,0x00, +/*000230*/ 0x01,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x08,0x00,0x00,0x00, +/*000240*/ 0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x08,0x00,0x00,0x00, +/*000250*/ 0x21,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0b,0x00,0x00,0x00, +/*000260*/ 0x22,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0b,0x00,0x00,0x00, +/*000270*/ 0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0f,0x00,0x00,0x00, +/*000280*/ 0x0b,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x12,0x00,0x00,0x00, +/*000290*/ 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x13,0x00,0x00,0x00, +/*0002a0*/ 0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x16,0x00,0x00,0x00, +/*0002b0*/ 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x04,0x00,0x06,0x00,0x00,0x00, +/*0002c0*/ 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x05,0x00,0x00,0x00, +/*0002d0*/ 0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x06,0x00,0x00,0x00, +/*0002e0*/ 0x07,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x1c,0x00,0x04,0x00,0x04,0x00,0x00,0x00, +/*0002f0*/ 0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x1e,0x00,0x03,0x00,0x03,0x00,0x00,0x00, +/*000300*/ 0x04,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00, +/*000310*/ 0x03,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +/*000320*/ 0x02,0x00,0x00,0x00,0x1a,0x00,0x02,0x00,0x0a,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*000330*/ 0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000340*/ 0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00,0x03,0x00, +/*000350*/ 0x0e,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x19,0x00,0x09,0x00,0x0d,0x00,0x00,0x00, +/*000360*/ 0x0e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000370*/ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*000380*/ 0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000390*/ 0x0c,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x04,0x00, +/*0003a0*/ 0x11,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*0003b0*/ 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*0003c0*/ 0x10,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*0003d0*/ 0x10,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x17,0x00,0x04,0x00, +/*0003e0*/ 0x15,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*0003f0*/ 0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000400*/ 0x14,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*000410*/ 0x17,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, +/*000420*/ 0x17,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1e,0x00,0x05,0x00, +/*000430*/ 0x19,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x15,0x00,0x00,0x00, +/*000440*/ 0x21,0x00,0x04,0x00,0x1b,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x19,0x00,0x00,0x00, +/*000450*/ 0x1b,0x00,0x03,0x00,0x22,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x17,0x00,0x04,0x00, +/*000460*/ 0x26,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x04,0x00, +/*000470*/ 0x28,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x2b,0x00,0x04,0x00, +/*000480*/ 0x06,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x04,0x00, +/*000490*/ 0x06,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x13,0x00,0x02,0x00, +/*0004a0*/ 0x34,0x00,0x00,0x00,0x21,0x00,0x03,0x00,0x35,0x00,0x00,0x00,0x34,0x00,0x00,0x00, +/*0004b0*/ 0x36,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*0004c0*/ 0x1b,0x00,0x00,0x00,0x37,0x00,0x03,0x00,0x19,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, +/*0004d0*/ 0xf8,0x00,0x02,0x00,0x1c,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x11,0x00,0x00,0x00, +/*0004e0*/ 0x1d,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3d,0x00,0x05,0x00, +/*0004f0*/ 0x0d,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000500*/ 0x3d,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x08,0x00,0x00,0x00, +/*000510*/ 0x00,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x15,0x00,0x00,0x00,0x20,0x00,0x00,0x00, +/*000520*/ 0x1a,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x56,0x00,0x05,0x00,0x22,0x00,0x00,0x00, +/*000530*/ 0x21,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x57,0x00,0x06,0x00, +/*000540*/ 0x11,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x20,0x00,0x00,0x00, +/*000550*/ 0x00,0x00,0x00,0x00,0x85,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x24,0x00,0x00,0x00, +/*000560*/ 0x1d,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x4f,0x00,0x08,0x00,0x26,0x00,0x00,0x00, +/*000570*/ 0x25,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000580*/ 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x41,0x00,0x06,0x00,0x28,0x00,0x00,0x00, +/*000590*/ 0x27,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x2a,0x00,0x00,0x00, +/*0005a0*/ 0x3d,0x00,0x05,0x00,0x05,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x27,0x00,0x00,0x00, +/*0005b0*/ 0x00,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x06,0x00,0x00,0x00,0x2c,0x00,0x00,0x00, +/*0005c0*/ 0x2b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x04,0x00,0x0e,0x00,0x00,0x00, +/*0005d0*/ 0x2d,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x50,0x00,0x06,0x00,0x26,0x00,0x00,0x00, +/*0005e0*/ 0x2e,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x2d,0x00,0x00,0x00, +/*0005f0*/ 0x0c,0x00,0x07,0x00,0x26,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x30,0x00,0x00,0x00, +/*000600*/ 0x1a,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x2e,0x00,0x00,0x00,0x51,0x00,0x05,0x00, +/*000610*/ 0x0e,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x03,0x00,0x00,0x00, +/*000620*/ 0x50,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x2f,0x00,0x00,0x00, +/*000630*/ 0x31,0x00,0x00,0x00,0xfe,0x00,0x02,0x00,0x32,0x00,0x00,0x00,0x38,0x00,0x01,0x00, +/*000640*/ 0x36,0x00,0x05,0x00,0x34,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000650*/ 0x35,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x36,0x00,0x00,0x00,0x3d,0x00,0x05,0x00, +/*000660*/ 0x11,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/*000670*/ 0x3d,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x12,0x00,0x00,0x00, +/*000680*/ 0x00,0x00,0x00,0x00,0x3d,0x00,0x05,0x00,0x15,0x00,0x00,0x00,0x39,0x00,0x00,0x00, +/*000690*/ 0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x06,0x00,0x19,0x00,0x00,0x00, +/*0006a0*/ 0x3a,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x39,0x00,0x00,0x00, +/*0006b0*/ 0x39,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x00,0x00,0x18,0x00,0x00,0x00, +/*0006c0*/ 0x3a,0x00,0x00,0x00,0x3e,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x3b,0x00,0x00,0x00, +/*0006d0*/ 0x00,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00 +}; + static void SafeRelease(ImDrawIdx*& res) { if (res) @@ -273,6 +548,25 @@ static WGPUProgrammableStageDescriptor ImGui_ImplWGPU_CreateShaderModule(const c return stage_desc; } +static WGPUProgrammableStageDescriptor ImGui_ImplWGPU_CreateShaderModule(const void* spirv_binary, size_t spirv_length) +{ + ImGui_ImplWGPU_Data* bd = ImGui_ImplWGPU_GetBackendData(); + + WGPUShaderSourceSPIRV spirv_desc = {}; + spirv_desc.chain.sType = WGPUSType_ShaderSourceSPIRV; + spirv_desc.code = (const uint32_t *)spirv_binary; + spirv_desc.codeSize = ((uint32_t)(spirv_length / 4)); + + WGPUShaderModuleDescriptor desc = {}; + desc.nextInChain = (WGPUChainedStruct*)&spirv_desc; + + WGPUProgrammableStageDescriptor stage_desc = {}; + stage_desc.module = wgpuDeviceCreateShaderModule(bd->wgpuDevice, &desc); + + stage_desc.entryPoint = { "main", WGPU_STRLEN }; + return stage_desc; +} + static WGPUBindGroup ImGui_ImplWGPU_CreateImageBindGroup(WGPUBindGroupLayout layout, WGPUTextureView texture) { ImGui_ImplWGPU_Data* bd = ImGui_ImplWGPU_GetBackendData(); @@ -666,13 +960,14 @@ bool ImGui_ImplWGPU_CreateDeviceObjects() // Create the vertex shader WGPUProgrammableStageDescriptor vertex_shader_desc = ImGui_ImplWGPU_CreateShaderModule(__shader_vert_wgsl); + if(!vertex_shader_desc.module) vertex_shader_desc = ImGui_ImplWGPU_CreateShaderModule(__shader_vert_spirv, sizeof(__shader_vert_spirv)); graphics_pipeline_desc.vertex.module = vertex_shader_desc.module; graphics_pipeline_desc.vertex.entryPoint = vertex_shader_desc.entryPoint; // Vertex input configuration WGPUVertexAttribute attribute_desc[] = { -#ifdef IMGUI_IMPL_WEBGPU_BACKEND_DAWN +#if defined IMGUI_IMPL_WEBGPU_BACKEND_DAWN || defined IMGUI_IMPL_WEBGPU_BACKEND_WGVK { nullptr, WGPUVertexFormat_Float32x2, (uint64_t)offsetof(ImDrawVert, pos), 0 }, { nullptr, WGPUVertexFormat_Float32x2, (uint64_t)offsetof(ImDrawVert, uv), 1 }, { nullptr, WGPUVertexFormat_Unorm8x4, (uint64_t)offsetof(ImDrawVert, col), 2 }, @@ -694,6 +989,7 @@ bool ImGui_ImplWGPU_CreateDeviceObjects() // Create the pixel shader WGPUProgrammableStageDescriptor pixel_shader_desc = ImGui_ImplWGPU_CreateShaderModule(__shader_frag_wgsl); + if(!pixel_shader_desc.module) pixel_shader_desc = ImGui_ImplWGPU_CreateShaderModule(__shader_frag_spirv, sizeof(__shader_frag_spirv)); // Create the blending setup WGPUBlendState blend_state = {}; @@ -806,6 +1102,8 @@ bool ImGui_ImplWGPU_Init(ImGui_ImplWGPU_InitInfo* init_info) #endif #elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) io.BackendRendererName = "imgui_impl_wgpu (WGPU, Native)"; +#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) + io.BackendRendererName = "imgui_impl_wgpu (WGVK, Native)"; #endif io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset; // We can honor the ImDrawCmd::VtxOffset field, allowing for large meshes. io.BackendFlags |= ImGuiBackendFlags_RendererHasTextures; // We can honor ImGuiPlatformIO::Textures[] requests during render. @@ -877,7 +1175,7 @@ void ImGui_ImplWGPU_NewFrame() bool ImGui_ImplWGPU_IsSurfaceStatusError(WGPUSurfaceGetCurrentTextureStatus status) { -#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN) +#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) return (status == WGPUSurfaceGetCurrentTextureStatus_Error); #else return (status == WGPUSurfaceGetCurrentTextureStatus_OutOfMemory || status == WGPUSurfaceGetCurrentTextureStatus_DeviceLost); @@ -894,7 +1192,7 @@ bool ImGui_ImplWGPU_IsSurfaceStatusSubOptimal(WGPUSurfaceGetCurrentTextureStatus } // Helpers to obtain a string -#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN) +#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) const char* ImGui_ImplWGPU_GetErrorTypeName(WGPUErrorType type) { switch (type) diff --git a/backends/imgui_impl_wgpu.h b/backends/imgui_impl_wgpu.h index 346538a4b8db..c06c25f8a5bd 100644 --- a/backends/imgui_impl_wgpu.h +++ b/backends/imgui_impl_wgpu.h @@ -3,7 +3,7 @@ // (Please note that WebGPU is a recent API, may not be supported by all browser, and its ecosystem is generally a mess) // When targeting native platforms: -// - One of IMGUI_IMPL_WEBGPU_BACKEND_DAWN or IMGUI_IMPL_WEBGPU_BACKEND_WGPU *must* be provided. +// - One of IMGUI_IMPL_WEBGPU_BACKEND_DAWN, IMGUI_IMPL_WEBGPU_BACKEND_WGPU or IMGUI_IMPL_WEBGPU_BACKEND_WGVK *must* be provided. // When targeting Emscripten: // - We now defaults to IMGUI_IMPL_WEBGPU_BACKEND_DAWN and requires Emscripten 4.0.10+, which correspond to using Emscripten '--use-port=emdawnwebgpu'. // - Emscripten < 4.0.10 is not supported anymore (old '-sUSE_WEBGPU=1' option). @@ -12,6 +12,7 @@ // This requirement may be removed once WebGPU stabilizes and backends converge on a unified interface. //#define IMGUI_IMPL_WEBGPU_BACKEND_DAWN //#define IMGUI_IMPL_WEBGPU_BACKEND_WGPU +//#define IMGUI_IMPL_WEBGPU_BACKEND_WGVK // Implemented features: // [X] Renderer: User texture binding. Use 'WGPUTextureView' as ImTextureID. Read the FAQ about ImTextureID/ImTextureRef! diff --git a/examples/example_glfw_wgpu/main.cpp b/examples/example_glfw_wgpu/main.cpp index 54dfc6908bd2..baf996109bc7 100644 --- a/examples/example_glfw_wgpu/main.cpp +++ b/examples/example_glfw_wgpu/main.cpp @@ -340,7 +340,7 @@ static WGPUDevice RequestDevice(wgpu::Instance& instance, wgpu::Adapter& adapter IM_ASSERT(acquired_device != nullptr && waitStatusDevice == wgpu::WaitStatus::Success && "Error on Device request"); return acquired_device.MoveToCHandle(); } -#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) +#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata1, void* userdata2) { if (status == WGPURequestAdapterStatus_Success) @@ -439,17 +439,19 @@ bool InitWGPU(GLFWwindow* window) preferred_fmt = surface_capabilities.formats[0]; // WGPU backend: Adapter and Device acquisition, Surface creation -#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) +#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) WGPUInstanceDescriptor instanceDesc = {}; WGPUInstanceFeatureName timedWaitAny = WGPUInstanceFeatureName_TimedWaitAny; instanceDesc.requiredFeatureCount = 1; instanceDesc.requiredFeatures = &timedWaitAny; wgpu_instance = wgpuCreateInstance(&instanceDesc); +#if defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) wgpuSetLogCallback( [](WGPULogLevel level, WGPUStringView msg, void* userdata) { fprintf(stderr, "%s: %.*s\n", ImGui_ImplWGPU_GetLogLevelName(level), (int)msg.length, msg.data); }, nullptr ); wgpuSetLogLevel(WGPULogLevel_Warn); +#endif WGPUAdapter adapter = RequestAdapter(wgpu_instance); ImGui_ImplWGPU_DebugPrintAdapterInfo(adapter); diff --git a/examples/example_sdl2_wgpu/main.cpp b/examples/example_sdl2_wgpu/main.cpp index 8d7c5a1070b8..c2630f3adba6 100644 --- a/examples/example_sdl2_wgpu/main.cpp +++ b/examples/example_sdl2_wgpu/main.cpp @@ -324,7 +324,7 @@ static WGPUDevice RequestDevice(wgpu::Instance& instance, wgpu::Adapter& adapter IM_ASSERT(acquired_device != nullptr && waitStatusDevice == wgpu::WaitStatus::Success && "Error on Device request"); return acquired_device.MoveToCHandle(); } -#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) +#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata1, void* userdata2) { if (status == WGPURequestAdapterStatus_Success) @@ -424,17 +424,19 @@ static bool InitWGPU(SDL_Window* window) preferred_fmt = surface_capabilities.formats[0]; // WGPU backend: Adapter and Device acquisition, Surface creation -#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) +#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) WGPUInstanceDescriptor instanceDesc = {}; WGPUInstanceFeatureName timedWaitAny = WGPUInstanceFeatureName_TimedWaitAny; instanceDesc.requiredFeatureCount = 1; instanceDesc.requiredFeatures = &timedWaitAny; wgpu_instance = wgpuCreateInstance(&instanceDesc); +#if defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) wgpuSetLogCallback( [](WGPULogLevel level, WGPUStringView msg, void* userdata) { fprintf(stderr, "%s: %.*s\n", ImGui_ImplWGPU_GetLogLevelName(level), (int)msg.length, msg.data); }, nullptr ); wgpuSetLogLevel(WGPULogLevel_Warn); +#endif WGPUAdapter adapter = RequestAdapter(wgpu_instance); ImGui_ImplWGPU_DebugPrintAdapterInfo(adapter); diff --git a/examples/example_sdl3_wgpu/main.cpp b/examples/example_sdl3_wgpu/main.cpp index 523d6215615d..99a2cccaf17c 100644 --- a/examples/example_sdl3_wgpu/main.cpp +++ b/examples/example_sdl3_wgpu/main.cpp @@ -335,7 +335,7 @@ static WGPUDevice RequestDevice(wgpu::Instance& instance, wgpu::Adapter& adapter IM_ASSERT(acquired_device != nullptr && waitStatusDevice == wgpu::WaitStatus::Success && "Error on Device request"); return acquired_device.MoveToCHandle(); } -#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) +#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) static void handle_request_adapter(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, void* userdata1, void* userdata2) { if (status == WGPURequestAdapterStatus_Success) @@ -435,17 +435,19 @@ static bool InitWGPU(SDL_Window* window) preferred_fmt = surface_capabilities.formats[0]; // WGPU backend: Adapter and Device acquisition, Surface creation -#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) +#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK) WGPUInstanceDescriptor instanceDesc = {}; WGPUInstanceFeatureName timedWaitAny = WGPUInstanceFeatureName_TimedWaitAny; instanceDesc.requiredFeatureCount = 1; instanceDesc.requiredFeatures = &timedWaitAny; wgpu_instance = wgpuCreateInstance(&instanceDesc); +#if defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) wgpuSetLogCallback( [](WGPULogLevel level, WGPUStringView msg, void* userdata) { fprintf(stderr, "%s: %.*s\n", ImGui_ImplWGPU_GetLogLevelName(level), (int)msg.length, msg.data); }, nullptr ); wgpuSetLogLevel(WGPULogLevel_Warn); +#endif WGPUAdapter adapter = RequestAdapter(wgpu_instance); ImGui_ImplWGPU_DebugPrintAdapterInfo(adapter);