diff options
Diffstat (limited to '3rdparty/bgfx/examples')
2189 files changed, 43081 insertions, 16804 deletions
diff --git a/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp b/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp index 57d594155f6..68815ba347d 100644 --- a/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp +++ b/3rdparty/bgfx/examples/00-helloworld/helloworld.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bx/uint32_t.h> @@ -15,8 +15,8 @@ namespace class ExampleHelloWorld : public entry::AppI { public: - ExampleHelloWorld(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleHelloWorld(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -32,6 +32,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -129,4 +132,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleHelloWorld, "00-helloworld", "Initialization and debug text."); +ENTRY_IMPLEMENT_MAIN( + ExampleHelloWorld + , "00-helloworld" + , "Initialization and debug text." + , "https://bkaradzic.github.io/bgfx/examples.html#helloworld" + ); diff --git a/3rdparty/bgfx/examples/00-helloworld/screenshot.png b/3rdparty/bgfx/examples/00-helloworld/screenshot.png Binary files differindex 8fe33e6d526..bd665a5dea5 100644 --- a/3rdparty/bgfx/examples/00-helloworld/screenshot.png +++ b/3rdparty/bgfx/examples/00-helloworld/screenshot.png diff --git a/3rdparty/bgfx/examples/01-cubes/cubes.cpp b/3rdparty/bgfx/examples/01-cubes/cubes.cpp index faa098ecb1a..a178f7379fd 100644 --- a/3rdparty/bgfx/examples/01-cubes/cubes.cpp +++ b/3rdparty/bgfx/examples/01-cubes/cubes.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -19,17 +19,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; static PosColorVertex s_cubeVertices[] = { @@ -125,8 +125,8 @@ BX_STATIC_ASSERT(BX_COUNTOF(s_ptState) == BX_COUNTOF(s_ptNames) ); class ExampleCubes : public entry::AppI { public: - ExampleCubes(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleCubes(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) , m_pt(0) , m_r(true) , m_g(true) @@ -147,6 +147,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -170,7 +173,7 @@ public: m_vbh = bgfx::createVertexBuffer( // Static data can be passed with bgfx::makeRef bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); // Create static index buffer for triangle list rendering. @@ -265,7 +268,7 @@ public: ImGui::Checkbox("Write A", &m_a); ImGui::Text("Primitive topology:"); - ImGui::Combo("", (int*)&m_pt, s_ptNames, BX_COUNTOF(s_ptNames) ); + ImGui::Combo("##topology", (int*)&m_pt, s_ptNames, BX_COUNTOF(s_ptNames) ); ImGui::End(); @@ -362,4 +365,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleCubes, "01-cubes", "Rendering simple static mesh."); +ENTRY_IMPLEMENT_MAIN( + ExampleCubes + , "01-cubes" + , "Rendering simple static mesh." + , "https://bkaradzic.github.io/bgfx/examples.html#cubes" + ); diff --git a/3rdparty/bgfx/examples/01-cubes/fs_cubes.sc b/3rdparty/bgfx/examples/01-cubes/fs_cubes.sc index 99ec64685ad..8ea959c83db 100644 --- a/3rdparty/bgfx/examples/01-cubes/fs_cubes.sc +++ b/3rdparty/bgfx/examples/01-cubes/fs_cubes.sc @@ -1,8 +1,8 @@ $input v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/01-cubes/makefile b/3rdparty/bgfx/examples/01-cubes/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/01-cubes/makefile +++ b/3rdparty/bgfx/examples/01-cubes/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/01-cubes/screenshot.png b/3rdparty/bgfx/examples/01-cubes/screenshot.png Binary files differindex 0e80d2cb02b..1b6c7c9fab3 100644 --- a/3rdparty/bgfx/examples/01-cubes/screenshot.png +++ b/3rdparty/bgfx/examples/01-cubes/screenshot.png diff --git a/3rdparty/bgfx/examples/01-cubes/vs_cubes.sc b/3rdparty/bgfx/examples/01-cubes/vs_cubes.sc index 906372cb0f8..d80005d4652 100644 --- a/3rdparty/bgfx/examples/01-cubes/vs_cubes.sc +++ b/3rdparty/bgfx/examples/01-cubes/vs_cubes.sc @@ -2,8 +2,8 @@ $input a_position, a_color0 $output v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.bin.h b/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.bin.h index 3415bc27b9c..cb08cb1be4e 100644 --- a/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.bin.h +++ b/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.bin.h @@ -1,218 +1,244 @@ -static const uint8_t fs_metaballs_glsl[398] = +static const uint8_t fs_metaballs_glsl[376] = { - 0x46, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x76, 0x61, // FSH..,.?......va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 - 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi - 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ - 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // normal;.void mai - 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, // n ().{. highp f - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // loat tmpvar_1;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x20, // tmpvar_1 = dot - 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x5f, 0x6e, 0x6f, 0x72, // (normalize(v_nor - 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, // mal), vec3(0.0, - 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, // 0.0, -1.0));. m - 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // ediump vec4 tmpv - 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_2;. tmpvar_2 - 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // .w = 1.0;. tmpv - 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ar_2.xyz = pow ( - 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x76, 0x5f, 0x63, 0x6f, // ((. pow (v_co - 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, // lor0.xyz, vec3(2 - 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x0a, 0x20, // .2, 2.2, 2.2)). - 0x20, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x20, 0x2b, 0x20, // * tmpvar_1) + - 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2c, 0x20, 0x33, // pow (tmpvar_1, 3 - 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, // 0.0)), vec3(0.45 - 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, // 45454, 0.4545454 - 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, // , 0.4545454));. - 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // gl_FragColor = - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_2;.}... + 0x46, 0x53, 0x48, 0x0b, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x01, // FSH..,.?......e. + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color0;.varying + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, // vec3 v_normal;. + 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // void main ().{. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // float tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6f, // . tmpvar_1 = do + 0x74, 0x20, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x5f, 0x6e, // t (normalize(v_n + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, // ormal), vec3(0.0 + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, // , 0.0, -1.0));. + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // vec4 tmpvar_2;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, // tmpvar_2.w = 1 + 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, // .0;. tmpvar_2.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, // yz = pow (((. + 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, // pow (v_color0.x + 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, // yz, vec3(2.2, 2. + 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x74, 0x6d, // 2, 2.2)). * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, // pvar_1) + pow (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2c, 0x20, 0x33, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, // mpvar_1, 30.0)), + 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, // vec3(0.4545454, + 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, // 0.4545454, 0.45 + 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // 45454));. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar + 0x5f, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _2;.}... }; -static const uint8_t fs_metaballs_spv[986] = +static const uint8_t fs_metaballs_essl[402] = { - 0x46, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0xc8, 0x03, 0x00, 0x00, 0x03, 0x02, // FSH..,.?........ - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x10, 0x00, // ..M...Q......... - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x76, 0x5f, // in........M...v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x51, 0x00, // color0........Q. + 0x46, 0x53, 0x48, 0x0b, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x01, // FSH..,.?........ + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ..varying highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, // 3 v_normal;.void + 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, // main ().{. hig + 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // hp float tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // 1;. tmpvar_1 = + 0x64, 0x6f, 0x74, 0x20, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, // dot (normalize(v + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, // _normal), vec3(0 + 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, // .0, 0.0, -1.0)); + 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // . mediump vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_2;. tmpv + 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, // ar_2.w = 1.0;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, // tmpvar_2.xyz = p + 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ow (((. pow ( + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, // v_color0.xyz, ve + 0x63, 0x33, 0x28, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, // c3(2.2, 2.2, 2.2 + 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // )). * tmpvar_1 + 0x29, 0x20, 0x2b, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ) + pow (tmpvar_ + 0x31, 0x2c, 0x20, 0x33, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, // 1, 30.0)), vec3( + 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, // 0.4545454, 0.454 + 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, // 5454, 0.4545454) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // );. gl_FragColo + 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, // r = tmpvar_2;.}. + 0x0a, 0x00, // .. +}; +static const uint8_t fs_metaballs_spv[1050] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, // FSH..,.?........ + 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xae, 0x00, // ....#........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................ + 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4 + 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50.............. + 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x55, 0x00, // in....N...Q...U. + 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, // ..b............. + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... + 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, // ..N...gl_FragCoo + 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x51, 0x00, 0x00, 0x00, 0x76, 0x5f, // rd........Q...v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x55, 0x00, // color0........U. 0x00, 0x00, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_normal...... - 0x06, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ......bgfx_FragD - 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, // ata0..G...M..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...Q..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G......... + 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ..b...bgfx_FragD + 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x0b, 0x00, // ata0..G...N..... + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...Q..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...U..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...b..... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, // ................ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, // .. ............. 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, // ......+.......(. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, // ......+.......,. - 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2d, 0x00, // ......,.......-. - 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..(...(...,...+. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x41, 0x2b, 0x00, // ......5......A+. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2b, 0x00, // ......9......@+. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2b, 0x00, // ......B.../..>+. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x20, 0x00, // ......F......? . - 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..L...........;. - 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..L...M....... . - 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..P...........;. - 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..P...Q....... . - 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..[...........;. - 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // ..[...........,. - 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, // ..........9...9. - 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0xa0, 0x00, // ..9...,......... - 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x36, 0x00, // ..B...B...B...6. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x29, 0x00, // ......+.......). + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, // ......+.......-. + 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2e, 0x00, // ......,......... + 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..)...)...-...+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x41, 0x2b, 0x00, // ......6......A+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0x2b, 0x00, // ......:......@+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2b, 0x00, // ......C.../..>+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x20, 0x00, // ......G......? . + 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..M...........;. + 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..M...N.......;. + 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..M...Q....... . + 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..T...........;. + 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..T...U....... . + 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..a...........;. + 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // ..a...b.......,. + 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3a, 0x00, // ..........:...:. + 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0xad, 0x00, // ..:...,......... + 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x36, 0x00, // ..C...C...C...6. 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... - 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..N...M...=..... - 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x08, 0x00, // ..R...Q......... - 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x52, 0x00, // ..z.......E...R. - 0x00, 0x00, 0x94, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7a, 0x00, // ..........|...z. - 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, // ..-...........~. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x35, 0x00, // ..........|...5. - 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x4e, 0x00, // ..O...........N. - 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..N............. - 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x8e, 0x00, // ................ - 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x7c, 0x00, // ..............|. - 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x7e, 0x00, // ..P...........~. - 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, // ..~...~......... - 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................ - 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, // ................ - 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ..........Q..... - 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x89, 0x00, // ..Q............. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x8d, 0x00, // ......P......... - 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x46, 0x00, // ..............F. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>............. + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..R...Q...=..... + 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x08, 0x00, // ..V...U......... + 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x56, 0x00, // ..........E...V. + 0x00, 0x00, 0x94, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x84, 0x00, // ................ + 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x36, 0x00, // ..............6. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x52, 0x00, // ..O...........R. + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..R............. + 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x8e, 0x00, // ................ + 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x86, 0x00, // ................ + 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x88, 0x00, // ..P............. + 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x08, 0x00, // ................ + 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................ + 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, // ................ + 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ..........Q..... + 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x93, 0x00, // ..Q............. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x97, 0x00, // ......P......... + 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x47, 0x00, // ..............G. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>...b......... 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ..8....... }; -static const uint8_t fs_metaballs_dx9[423] = +static const uint8_t fs_metaballs_dx9[427] = { - 0x46, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x00, 0x03, // FSH..,.?........ - 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, // ......CTAB....#. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......ps_3_0.Mic - 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler - 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0x00, // 10.1..Q......... - 0xf0, 0x41, 0xcd, 0xcc, 0x0c, 0x40, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, 0x80, 0x3f, 0x1f, 0x00, // .A...@/..>...?.. - 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, // ................ - 0x01, 0x80, 0x01, 0x00, 0x07, 0x90, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ - 0xe4, 0x90, 0x01, 0x00, 0xe4, 0x90, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ - 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ - 0xaa, 0x90, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, // .. ............. - 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x90, 0x0f, 0x00, // ................ - 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x90, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, // ........U....... - 0x04, 0x80, 0x00, 0x00, 0xaa, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0e, 0x80, 0x02, 0x00, // ................ - 0x90, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, // ....U........... - 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x0e, 0x00, // U............... - 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x00, 0x00, 0xff, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x0f, 0x00, // ................ - 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, // ................ - 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U........... - 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x00, 0x00, // ................ - 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, // ................ - 0x00, 0x02, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, // ........U....... - 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, // ................ - 0xff, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... + 0x46, 0x53, 0x48, 0x0b, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, // FSH..,.?........ + 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ..........CTAB.. + 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..#............. + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 + 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H + 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi + 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, // ler 10.1..Q..... + 0x0f, 0xa0, 0x00, 0x00, 0xf0, 0x41, 0xcd, 0xcc, 0x0c, 0x40, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, // .....A...@/..>.. + 0x80, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0x90, 0x1f, 0x00, // .?.............. + 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x01, 0x00, 0x07, 0x90, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x01, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x01, 0x00, 0xe4, 0x90, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0x00, 0x80, 0x01, 0x00, 0xaa, 0x90, 0x20, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, // ...... ......... + 0x00, 0x81, 0x00, 0x00, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0x00, 0x90, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x90, 0x0f, 0x00, // ............U... + 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x0e, 0x80, 0x02, 0x00, 0x90, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, // ........U....... + 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x80, 0x00, 0x00, // ....U........... + 0xaa, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x00, 0x00, 0xff, 0x80, 0x04, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, // ................ + 0x00, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, // ................ + 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0f, 0x00, 0x00, 0x02, 0x01, 0x00, // ........U....... + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x01, 0x80, 0x00, 0x00, // ................ + 0x00, 0x80, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x08, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0e, 0x00, // ............U... + 0x00, 0x02, 0x00, 0x08, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, // ................ + 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // ........... }; -static const uint8_t fs_metaballs_dx11[662] = +static const uint8_t fs_metaballs_dx11[666] = { - 0x46, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x84, 0x02, 0x00, 0x00, 0x44, 0x58, // FSH..,.?......DX - 0x42, 0x43, 0x71, 0x00, 0x85, 0x0b, 0x80, 0xfd, 0x1e, 0xdf, 0x09, 0x21, 0xdf, 0xe6, 0x3a, 0xef, // BCq........!..:. - 0x53, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // S.............,. - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, // ..........ISGNl. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........P..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, // ..........b..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, // ................ - 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, // ..SV_POSITION.CO - 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, // LOR.TEXCOORD..OS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, // ......SV_TARGET. - 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xa8, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x6a, 0x00, // ..SHDR....@...j. - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, // ..b...r.......b. - 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..r.......e.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x2f, 0x00, // ......h......./. - 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, // ..r.......F..... + 0x46, 0x53, 0x48, 0x0b, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x02, // FSH..,.?........ + 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x71, 0x00, 0x85, 0x0b, 0x80, 0xfd, 0x1e, 0xdf, 0x09, 0x21, // ..DXBCq........! + 0xdf, 0xe6, 0x3a, 0xef, 0x53, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x00, 0x03, 0x00, // ..:.S........... + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS + 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x00, 0x00, 0x62, 0x00, // ..............b. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO + 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD + 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR + 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xa8, 0x01, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. + 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, // ..j...b...r..... + 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...r.......e. + 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, // ... ......h..... + 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, // ../...r.......F. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8...r..... + 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, // ..F........@.... + 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, // .@...@...@...... + 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r.......F..... + 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, // ..............F. + 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, // ......F.......D. + 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, // ..........:..... + 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, // ..8...........:. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2f, 0x00, // ......*......./. + 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x80, 0x41, 0x00, // ..........:...A. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, // ......8......... + 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // ...........@.... + 0xf0, 0x41, 0x19, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, // .A.............. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2...r..... + 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x80, 0x41, 0x00, // ..F...........A. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, // ............../. + 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r.......F..... 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..8...r.......F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x0c, 0x40, 0xcd, 0xcc, // .......@.....@.. - 0x0c, 0x40, 0xcd, 0xcc, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x00, // .@...@........r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, // ......F......... - 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, // ..........F..... - 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x82, 0x00, // ..F.......D..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // ......:.......8. - 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, // ..........:..... - 0x00, 0x00, 0x2a, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x06, 0x12, 0x00, // ..*......./..... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // ......:...A..... - 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, // ..8............. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x41, 0x19, 0x00, // .......@.....A.. - 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..2...r.......F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........A..... - 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x72, 0x00, // ........../...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // ......F.......8. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r.......F..... - 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, // ...@../..>/..>/. - 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, // .>........r .... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x82, 0x20, // ..F.......6.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x00, // .......@.....?>. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x2f, 0xba, 0xe8, 0x3e, 0x2f, 0xba, // .......@../..>/. + 0xe8, 0x3e, 0x2f, 0xba, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, 0x72, 0x20, // .>/..>........r + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, // ......F.......6. + 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // ... .......@.... + 0x80, 0x3f, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // .?>....... }; -static const uint8_t fs_metaballs_mtl[712] = +static const uint8_t fs_metaballs_mtl[612] = { - 0x46, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0xb9, 0x02, 0x00, 0x00, 0x75, 0x73, // FSH..,.?......us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x6e, // r0;. float3 v_n - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // ormal;.};.struct - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // tput {. float4 - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, // gl_FragColor;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x7d, // haderUniform {.} - 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // ;.fragment xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_1 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x20, // tmpvar_1 = dot - 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // (normalize(_mtl_ - 0x69, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, // i.v_normal), flo - 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, // at3(0.0, 0.0, -1 - 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, // .0));. float4 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // mpvar_2 = 0;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_2.w = 1.0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_2.xyz - 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6f, // = pow (((. po - 0x77, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // w (_mtl_i.v_colo - 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x32, // r0.xyz, float3(2 - 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x29, 0x29, 0x0a, 0x20, // .2, 2.2, 2.2)). - 0x20, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x20, 0x2b, 0x20, // * tmpvar_1) + - 0x70, 0x6f, 0x77, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2c, 0x20, 0x33, // pow (tmpvar_1, 3 - 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, // 0.0)), float3(0. - 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, // 4545454, 0.45454 - 0x35, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x29, 0x29, 0x3b, // 54, 0.4545454)); - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // . _mtl_o.gl_Fra - 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // gColor = tmpvar_ - 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // 2;. return _mtl - 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x03, 0x2c, 0xf5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x02, // FSH..,.?......N. + 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, // ..#include <meta + 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, // l_stdlib>.#inclu + 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, // de <simd/simd.h> + 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac + 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // e metal;..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, // .{. float4 bg + 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, // fx_FragData0 [[c + 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // olor(0)]];.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // truct xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n_in.{. float + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, // 4 v_color0 [[use + 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // r(locn0)]];. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, // float3 v_normal + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // .};..fragment xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, // atMtlMain_out xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // atMtlMain(xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, // lMain_in in [[st + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // age_in]]).{. + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, // xlatMtlMain_out + 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // out = {};. fl + 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x6e, // oat _131 = dot(n + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, // ormalize(in.v_no + 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, // rmal), float3(0. + 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, // 0, 0.0, -1.0));. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, // out.bgfx_Fra + 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, // gData0 = float4( + 0x70, 0x6f, 0x77, 0x28, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // pow((pow(in.v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // lor0.xyz, float3 + 0x28, 0x32, 0x2e, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x37, 0x36, 0x38, 0x33, 0x37, // (2.2000000476837 + 0x31, 0x35, 0x38, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x33, 0x31, 0x29, 0x20, 0x2b, 0x20, // 158)) * _131) + + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x5f, 0x31, 0x33, 0x31, 0x2c, // float3(pow(_131, + 0x20, 0x33, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, // 30.0)), float3( + 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x36, 0x38, 0x30, 0x39, 0x31, 0x39, 0x36, // 0.45454546809196 + 0x34, 0x37, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 472)), 1.0);. + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // return out;.}.. + 0x00, 0x00, 0x00, 0x00, // .... }; extern const uint8_t* fs_metaballs_pssl; extern const uint32_t fs_metaballs_pssl_size; diff --git a/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.sc b/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.sc index b5ce0cd0c6e..9173da91fcf 100644 --- a/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.sc +++ b/3rdparty/bgfx/examples/02-metaballs/fs_metaballs.sc @@ -1,8 +1,8 @@ $input v_normal, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/02-metaballs/makefile b/3rdparty/bgfx/examples/02-metaballs/makefile index 76ce78d8e4d..efdae05bf56 100644 --- a/3rdparty/bgfx/examples/02-metaballs/makefile +++ b/3rdparty/bgfx/examples/02-metaballs/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # include ../../scripts/shader-embeded.mk diff --git a/3rdparty/bgfx/examples/02-metaballs/metaballs.cpp b/3rdparty/bgfx/examples/02-metaballs/metaballs.cpp index f5256d8286d..293ed276ecc 100644 --- a/3rdparty/bgfx/examples/02-metaballs/metaballs.cpp +++ b/3rdparty/bgfx/examples/02-metaballs/metaballs.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -32,7 +32,7 @@ struct PosNormalColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Normal, 3, bgfx::AttribType::Float) @@ -40,10 +40,10 @@ struct PosNormalColorVertex .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosNormalColorVertex::ms_decl; +bgfx::VertexLayout PosNormalColorVertex::ms_layout; struct Grid { @@ -59,8 +59,9 @@ struct Grid float m_normal[3]; }; -// Triangulation tables taken from: -// http://paulbourke.net/geometry/polygonise/ +// Reference(s): +// - Polygonising a scalar field +// https://web.archive.org/web/20181127124338/http://paulbourke.net/geometry/polygonise/ static const uint16_t s_edges[256] = { @@ -370,10 +371,10 @@ static const float s_cube[8][3] = { 0.0f, 0.0f, 0.0f }, // 7 }; -float vertLerp(float* __restrict _result, float _iso, uint32_t _idx0, float _v0, uint32_t _idx1, float _v1) +float vertLerp(float* _result, float _iso, uint32_t _idx0, float _v0, uint32_t _idx1, float _v1) { - const float* __restrict edge0 = s_cube[_idx0]; - const float* __restrict edge1 = s_cube[_idx1]; + const float* edge0 = s_cube[_idx0]; + const float* edge1 = s_cube[_idx1]; if (bx::abs(_iso-_v1) < 0.00001f) { @@ -400,7 +401,15 @@ float vertLerp(float* __restrict _result, float _iso, uint32_t _idx0, float _v0, return lerp; } -uint32_t triangulate(uint8_t* _result, uint32_t _stride, const float* __restrict _rgb, const float* __restrict _xyz, const Grid* _val[8], float _iso) +uint32_t triangulate( + uint8_t* _result + , uint32_t _stride + , const float* _rgb + , const float* _xyz + , const Grid* _val[8] + , float _iso + , float _scale + ) { uint8_t cubeindex = 0; cubeindex |= (_val[0]->m_val < _iso) ? 0x01 : 0; @@ -437,9 +446,9 @@ uint32_t triangulate(uint8_t* _result, uint32_t _stride, const float* __restrict } } - float dr = _rgb[3] - _rgb[0]; - float dg = _rgb[4] - _rgb[1]; - float db = _rgb[5] - _rgb[2]; + const float dr = _rgb[3] - _rgb[0]; + const float dg = _rgb[4] - _rgb[1]; + const float db = _rgb[5] - _rgb[2]; uint32_t num = 0; const int8_t* indices = s_indices[cubeindex]; @@ -448,13 +457,13 @@ uint32_t triangulate(uint8_t* _result, uint32_t _stride, const float* __restrict const float* vertex = verts[uint8_t(indices[ii])]; float* xyz = (float*)_result; - xyz[0] = _xyz[0] + vertex[0]; - xyz[1] = _xyz[1] + vertex[1]; - xyz[2] = _xyz[2] + vertex[2]; + xyz[0] = _xyz[0] + vertex[0]*_scale; + xyz[1] = _xyz[1] + vertex[1]*_scale; + xyz[2] = _xyz[2] + vertex[2]*_scale; - xyz[3] = vertex[3]; - xyz[4] = vertex[4]; - xyz[5] = vertex[5]; + xyz[3] = vertex[3]*_scale; + xyz[4] = vertex[4]*_scale; + xyz[5] = vertex[5]*_scale; uint32_t rr = uint8_t( (_rgb[0] + vertex[0]*dr)*255.0f); uint32_t gg = uint8_t( (_rgb[1] + vertex[1]*dg)*255.0f); @@ -474,13 +483,14 @@ uint32_t triangulate(uint8_t* _result, uint32_t _stride, const float* __restrict return num; } -#define DIMS 32 +constexpr uint32_t kMaxDims = 32; +constexpr float kMaxDimsF = float(kMaxDims); class ExampleMetaballs : public entry::AppI { public: - ExampleMetaballs(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleMetaballs(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -496,6 +506,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -523,7 +536,7 @@ public: // Create program from shaders. m_program = bgfx::createProgram(vsh, fsh, true /* destroy shaders when program is destroyed */); - m_grid = new Grid[DIMS*DIMS*DIMS]; + m_grid = new Grid[kMaxDims*kMaxDims*kMaxDims]; m_timeOffset = bx::getHPCounter(); imguiCreate(); @@ -546,9 +559,8 @@ public: bool update() override { - const uint32_t ypitch = DIMS; - const uint32_t zpitch = DIMS*DIMS; - const float invdim = 1.0f/float(DIMS-1); + const uint32_t ypitch = kMaxDims; + const uint32_t zpitch = kMaxDims*kMaxDims; if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) { @@ -564,6 +576,29 @@ public: showExampleDialog(this); + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 7.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + static float iso = 0.75f; + ImGui::SliderFloat("ISO", &iso, 0.1f, 4.0f); + + static uint32_t numDims = kMaxDims; + ImGui::SliderInt("Size", (int*)&numDims, 8, kMaxDims); + ImGui::End(); + + const float numDimsF = float(numDims); + const float scale = kMaxDimsF/numDimsF; + const float invDim = 1.0f/(numDimsF-1.0f); + // Set view 0 default viewport. bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); @@ -604,27 +639,27 @@ public: // Allocate 32K vertices in transient vertex buffer. uint32_t maxVertices = (32<<10); bgfx::TransientVertexBuffer tvb; - bgfx::allocTransientVertexBuffer(&tvb, maxVertices, PosNormalColorVertex::ms_decl); + bgfx::allocTransientVertexBuffer(&tvb, maxVertices, PosNormalColorVertex::ms_layout); const uint32_t numSpheres = 16; float sphere[numSpheres][4]; for (uint32_t ii = 0; ii < numSpheres; ++ii) { - sphere[ii][0] = bx::sin(time*(ii*0.21f)+ii*0.37f) * (DIMS * 0.5f - 8.0f); - sphere[ii][1] = bx::sin(time*(ii*0.37f)+ii*0.67f) * (DIMS * 0.5f - 8.0f); - sphere[ii][2] = bx::cos(time*(ii*0.11f)+ii*0.13f) * (DIMS * 0.5f - 8.0f); - sphere[ii][3] = 1.0f/(2.0f + (bx::sin(time*(ii*0.13f) )*0.5f+0.5f)*2.0f); + sphere[ii][0] = bx::sin(time*(ii*0.21f)+ii*0.37f) * (kMaxDimsF * 0.5f - 8.0f); + sphere[ii][1] = bx::sin(time*(ii*0.37f)+ii*0.67f) * (kMaxDimsF * 0.5f - 8.0f); + sphere[ii][2] = bx::cos(time*(ii*0.11f)+ii*0.13f) * (kMaxDimsF * 0.5f - 8.0f); + sphere[ii][3] = 1.0f/(3.0f + (bx::sin(time*(ii*0.13f) )*0.5f+0.5f)*0.9f ); } profUpdate = bx::getHPCounter(); - for (uint32_t zz = 0; zz < DIMS; ++zz) + for (uint32_t zz = 0; zz < numDims; ++zz) { - for (uint32_t yy = 0; yy < DIMS; ++yy) + for (uint32_t yy = 0; yy < numDims; ++yy) { - uint32_t offset = (zz*DIMS+yy)*DIMS; + uint32_t offset = (zz*kMaxDims+yy)*kMaxDims; - for (uint32_t xx = 0; xx < DIMS; ++xx) + for (uint32_t xx = 0; xx < numDims; ++xx) { uint32_t xoffset = offset + xx; @@ -633,12 +668,12 @@ public: for (uint32_t ii = 0; ii < numSpheres; ++ii) { const float* pos = sphere[ii]; - float dx = pos[0] - (-DIMS*0.5f + float(xx) ); - float dy = pos[1] - (-DIMS*0.5f + float(yy) ); - float dz = pos[2] - (-DIMS*0.5f + float(zz) ); - float invr = pos[3]; - float dot = dx*dx + dy*dy + dz*dz; - dot *= invr*invr; + float dx = pos[0] - (-kMaxDimsF*0.5f + float(xx)*scale); + float dy = pos[1] - (-kMaxDimsF*0.5f + float(yy)*scale); + float dz = pos[2] - (-kMaxDimsF*0.5f + float(zz)*scale); + float invR = pos[3]; + float dot = dx*dx + dy*dy + dz*dz; + dot *= bx::square(invR); dist *= dot; dist += prod; @@ -654,25 +689,25 @@ public: profNormal = bx::getHPCounter(); - for (uint32_t zz = 1; zz < DIMS-1; ++zz) + for (uint32_t zz = 1; zz < numDims-1; ++zz) { - for (uint32_t yy = 1; yy < DIMS-1; ++yy) + for (uint32_t yy = 1; yy < numDims-1; ++yy) { - uint32_t offset = (zz*DIMS+yy)*DIMS; + uint32_t offset = (zz*kMaxDims+yy)*kMaxDims; - for (uint32_t xx = 1; xx < DIMS-1; ++xx) + for (uint32_t xx = 1; xx < numDims-1; ++xx) { uint32_t xoffset = offset + xx; Grid* grid = m_grid; - float normal[3] = + const bx::Vec3 normal = { grid[xoffset-1 ].m_val - grid[xoffset+1 ].m_val, grid[xoffset-ypitch].m_val - grid[xoffset+ypitch].m_val, grid[xoffset-zpitch].m_val - grid[xoffset+zpitch].m_val, }; - bx::vec3Norm(grid[xoffset].m_normal, normal); + bx::store(grid[xoffset].m_normal, bx::normalize(normal) ); } } } @@ -683,31 +718,31 @@ public: PosNormalColorVertex* vertex = (PosNormalColorVertex*)tvb.data; - for (uint32_t zz = 0; zz < DIMS-1 && numVertices+12 < maxVertices; ++zz) + for (uint32_t zz = 0; zz < numDims-1 && numVertices+12 < maxVertices; ++zz) { float rgb[6]; - rgb[2] = zz*invdim; - rgb[5] = (zz+1)*invdim; + rgb[2] = zz*invDim; + rgb[5] = (zz+1)*invDim; - for (uint32_t yy = 0; yy < DIMS-1 && numVertices+12 < maxVertices; ++yy) + for (uint32_t yy = 0; yy < numDims-1 && numVertices+12 < maxVertices; ++yy) { - uint32_t offset = (zz*DIMS+yy)*DIMS; + uint32_t offset = (zz*kMaxDims+yy)*kMaxDims; - rgb[1] = yy*invdim; - rgb[4] = (yy+1)*invdim; + rgb[1] = yy*invDim; + rgb[4] = (yy+1)*invDim; - for (uint32_t xx = 0; xx < DIMS-1 && numVertices+12 < maxVertices; ++xx) + for (uint32_t xx = 0; xx < numDims-1 && numVertices+12 < maxVertices; ++xx) { uint32_t xoffset = offset + xx; - rgb[0] = xx*invdim; - rgb[3] = (xx+1)*invdim; + rgb[0] = xx*invDim; + rgb[3] = (xx+1)*invDim; float pos[3] = { - -DIMS*0.5f + float(xx), - -DIMS*0.5f + float(yy), - -DIMS*0.5f + float(zz) + -kMaxDimsF*0.5f + float(xx)*scale, + -kMaxDimsF*0.5f + float(yy)*scale, + -kMaxDimsF*0.5f + float(zz)*scale, }; const Grid* grid = m_grid; @@ -722,7 +757,15 @@ public: &grid[xoffset ], }; - uint32_t num = triangulate( (uint8_t*)vertex, PosNormalColorVertex::ms_decl.getStride(), rgb, pos, val, 0.5f); + uint32_t num = triangulate( + (uint8_t*)vertex + , PosNormalColorVertex::ms_layout.getStride() + , rgb + , pos + , val + , iso + , scale + ); vertex += num; numVertices += num; } @@ -748,7 +791,7 @@ public: // Display stats. ImGui::SetNextWindowPos( - ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + ImVec2(m_width - m_width / 5.0f - 10.0f, m_height / 7.0f + 30.0f) , ImGuiCond_FirstUseEver ); ImGui::SetNextWindowSize( @@ -794,4 +837,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleMetaballs, "02-metaball", "Rendering with transient buffers and embedding shaders."); +ENTRY_IMPLEMENT_MAIN( + ExampleMetaballs + , "02-metaball" + , "Rendering with transient buffers and embedding shaders." + , "https://bkaradzic.github.io/bgfx/examples.html#metaballs" + ); diff --git a/3rdparty/bgfx/examples/02-metaballs/screenshot.png b/3rdparty/bgfx/examples/02-metaballs/screenshot.png Binary files differindex 6bb03b3adf8..f0f23340ca4 100644 --- a/3rdparty/bgfx/examples/02-metaballs/screenshot.png +++ b/3rdparty/bgfx/examples/02-metaballs/screenshot.png diff --git a/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.bin.h b/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.bin.h index eb8e38a1745..661f6de1509 100644 --- a/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.bin.h +++ b/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.bin.h @@ -1,285 +1,322 @@ -static const uint8_t vs_metaballs_glsl[537] = +static const uint8_t vs_metaballs_glsl[501] = { - 0x56, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH..,.?...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // el. .. ..u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0xe6, 0x01, // ViewProj........ - 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, // ..attribute high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // p vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // .attribute highp + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, // VSH......,.?...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. .. ..... + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, 0x61, 0x74, // ..............at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, // tribute vec4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // olor0;.attribute 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, // vec3 a_normal;. - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // attribute highp - 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // vec3 a_position; - 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // .varying highp v - 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // rying highp vec3 - 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // v_normal;.unifo - 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // rm mat4 u_model[ - 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, // 32];.uniform hig - 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // hp mat4 u_modelV - 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // iewProj;.void ma - 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // in ().{. highp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, // tmpvar_1.w = 1. - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // 0;. tmpvar_1.xy - 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // z = a_position;. - 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position = - 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // (u_modelViewProj - 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_1);. - 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva - 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // r_2;. tmpvar_2. - 0x77, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 0.0;. tmpva - 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, // r_2.xyz = a_norm - 0x61, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, // al;. v_normal = - 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, // (u_model[0] * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // mpvar_2).xyz;. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // v_color0 = a_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0;.}... + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, // attribute vec3 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // _position;.varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ng vec4 v_color0 + 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ;.varying vec3 v + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // _normal;.uniform + 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, // mat4 u_model[32 + 0x5d, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // ];.uniform mat4 + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; + 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_1.w = + 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // 1.0;. tmpvar_1. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // xyz = a_position + 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // ;. gl_Position + 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // = (u_modelViewPr + 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, // oj * tmpvar_1);. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, // vec4 tmpvar_2; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_2.w = + 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // 0.0;. tmpvar_2. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, // xyz = a_normal;. + 0x20, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // v_normal = (u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // model[0] * tmpva + 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, // r_2).xyz;. v_co + 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // lor0 = a_color0; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; -static const uint8_t vs_metaballs_spv[1632] = +static const uint8_t vs_metaballs_essl[549] = { - 0x56, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH..,.?...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x08, 0x04, 0x00, // elViewProj...... - 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x24, 0x06, // .u_model......$. - 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xa8, 0x00, // ....#........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................ - 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4 - 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50.............. - 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x00, // in....F...J...M. - 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x03, 0x00, // ..X...[..._..... - 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x27, 0x00, // ..main........'. - 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x05, 0x00, 0x27, 0x00, // ..$Global.....'. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x06, 0x00, // ......u_model... - 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ..'.......u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x29, 0x00, // lViewProj.....). - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x61, 0x5f, // ..........F...a_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, // color0........J. - 0x00, 0x00, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..a_normal...... - 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ..M...a_position - 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x58, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, // ......X...@entry - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, // PointOutput.gl_P - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x5b, 0x00, // osition.......[. - 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // ..@entryPointOut - 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, // put.v_color0.... - 0x09, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, // .._...@entryPoin - 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, // tOutput.v_normal - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, // ..G...&.......@. - 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...'......... - 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...'.......#. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...'..... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, // ..........H...'. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, // ..........H...'. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x48, 0x00, // ......#.......H. - 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, // ..'............. - 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, // ..G...'.......G. - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..)...".......G. - 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..F...........G. - 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, // ..J...........G. - 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, // ..M...........G. - 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..X...........G. - 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..[...........G. - 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, // .._............. - 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ......!......... - 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, // .......... ..... - 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ - 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, // ................ - 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ...... .......+. - 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..............+. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, // .............?+. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..............+. - 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, // ................ - 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, // ..#............. - 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..$... .......+. - 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, // ..$...%... ..... - 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1e, 0x00, // ..&...#...%..... - 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, // ..'...&...#... . - 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..(.......'...;. - 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, // ..(...)....... . - 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, // ..*.......#... . - 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..E...........;. - 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..E...F....... . - 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..I...........;. - 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..I...J.......;. - 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..I...M....... . - 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..W...........;. - 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..W...X.......;. - 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, // ..W...[....... . - 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..^...........;. - 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ..^..._.......6. - 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........=..... - 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, // ..G...F...=..... - 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, // ..K...J...=..... - 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ..N...M...Q..... - 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..s...N.......Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, // ......t...N..... - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x4e, 0x00, // ..Q.......u...N. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x76, 0x00, // ......P.......v. - 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x16, 0x00, // ..s...t...u..... - 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x29, 0x00, // ..A...*...w...). - 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x78, 0x00, // ......=...#...x. - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, // ..w...........y. - 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ..v...x...Q..... - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..|...K.......Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, // ......}...K..... - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x4b, 0x00, // ..Q.......~...K. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7f, 0x00, // ......P......... - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x17, 0x00, // ..|...}...~..... - 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x29, 0x00, // ..A...*.......). - 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, // ..........=...#. - 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..............O. - 0x08, 0x00, 0x09, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x82, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x01, 0x00, // ..........y..... - 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, // ................ - 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x89, 0x00, // ..R............. - 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x58, 0x00, // ..y.......>...X. - 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x47, 0x00, // ......>...[...G. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>..._......... - 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x80, 0x00, // ..8............. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, // VSH......,.?...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. .. ..... + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x61, 0x74, // ..............at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // tribute highp ve + 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, // c4 a_color0;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x33, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // 3 a_normal;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // ibute highp vec3 + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, // a_position;.var + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // ying highp vec4 + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // v_color0;.varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, // g highp vec3 v_n + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, // ormal;.uniform m + 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, // at4 u_model[32]; + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, // .uniform highp m + 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // at4 u_modelViewP + 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, // roj;.void main ( + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ).{. highp vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m + 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // mpvar_1);. high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, // p vec4 tmpvar_2; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_2.w = + 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // 0.0;. tmpvar_2. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, // xyz = a_normal;. + 0x20, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // v_normal = (u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // model[0] * tmpva + 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, // r_2).xyz;. v_co + 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // lor0 = a_color0; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; -static const uint8_t vs_metaballs_dx9[451] = +static const uint8_t vs_metaballs_spv[1608] = { - 0x56, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH..,.?...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x04, 0x00, 0x03, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // el. .....u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x90, 0x01, // ViewProj........ - 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB.. - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, // ......|...D..... - 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, // ......L......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l..... - 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, // ..u_model....... - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // .. .......u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, // lViewProj....... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........vs_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ler 10.1........ - 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ - 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ................ - 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x02, 0x00, // ................ - 0x07, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x02, 0x00, // ................ - 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x02, 0x00, // U............... - 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, // ................ - 0xe4, 0xa0, 0x02, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x07, 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ........U....... - 0x07, 0x80, 0x04, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, // ................ - 0x00, 0x04, 0x02, 0x00, 0x07, 0xe0, 0x06, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, // ................ - 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, // ................ - 0x00, 0x00, 0x00, // ... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x0f, 0x75, // VSH......,.?...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // .........u_model + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x02, // ................ + 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... + 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. + 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x52, 0x00, // ..@...D...G...R. + 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ..U...Y......... + 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, 0x55, 0x6e, // in........'...Un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, // iformBlock...... + 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ..'.......u_mode + 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, // l.....'.......u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, // modelViewProj... + 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x40, 0x00, // ..)...........@. + 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..a_color0...... + 0x05, 0x00, 0x44, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, // ..D...a_normal.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // ......G...a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x52, 0x00, 0x00, 0x00, 0x40, 0x65, // tion......R...@e + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, // ntryPointOutput. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, // gl_Position..... + 0x09, 0x00, 0x55, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, // ..U...@entryPoin + 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // tOutput.v_color0 + 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x59, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, // ......Y...@entry + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, // PointOutput.v_no + 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, // rmal..G...&..... + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, // ..@...H...'..... + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...'..... + 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, // ..#.......H...'. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, // ..............H. + 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, // ..'...........H. + 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, // ..'.......#..... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, // ..H...'......... + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G...'..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...)..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...)...!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...@......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G...D......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, // ..G...G......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...R......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...U......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G...Y......... + 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!..... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, // .......... ..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, // ..+............. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+............. + 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, // .?+............. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+............. + 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, // ......#......... + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ......$... ..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, // ..+...$...%... . + 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, // ......&...#...%. + 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x23, 0x00, // ......'...&...#. + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, // .. ...(.......'. + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, // ..;...(...)..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, // .. ...*.......#. + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, // .. ...?......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...?...@..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ...C......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...C...D..... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...C...G..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, // .. ...Q......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...Q...R..... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...Q...U..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ...X......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...X...Y..... + 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ..6............. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......A...@...=. + 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......E...D...=. + 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, // ......H...G...Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, // ......n...H..... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x48, 0x00, // ..Q.......o...H. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, // ......Q.......p. + 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, // ..H.......P..... + 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, // ..q...n...o...p. + 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x72, 0x00, // ......A...*...r. + 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, // ..).......=...#. + 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, // ..s...r......... + 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x51, 0x00, // ..t...q...s...Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, // ......w...E..... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, // ..Q.......x...E. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, // ......Q.......y. + 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, // ..E.......P..... + 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, 0x00, // ..z...w...x...y. + 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x7b, 0x00, // ......A...*...{. + 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..)...........=. + 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x90, 0x00, // ..#...|...{..... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x7c, 0x00, // ......}...z...|. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x09, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, // ..O.......~...}. + 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..}............. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..>...R...t...>. + 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x59, 0x00, // ..U...A...>...Y. + 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, // ..~.......8..... + 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x40, 0x08, // ......@. }; -static const uint8_t vs_metaballs_dx11[728] = +static const uint8_t vs_metaballs_dx9[463] = { - 0x56, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH..,.?...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // el. .....u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x08, 0x04, 0x00, 0x9c, 0x02, // ViewProj........ - 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xc6, 0x4d, 0x04, 0x38, 0x93, 0x20, 0x89, 0x1c, 0xbe, 0x68, // ..DXBC.M.8. ...h - 0xbc, 0xd4, 0xee, 0x2f, 0x8a, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x03, 0x00, // .../............ - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, // ..,...........IS - 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNh...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......V......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x5d, 0x00, // ..............]. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x4e, 0x4f, 0x52, 0x4d, // ......COLOR.NORM - 0x41, 0x4c, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0x4f, 0x53, // AL.POSITION...OS - 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, // ..............b. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD - 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x84, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x61, 0x00, // ..SHDR....@...a. - 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, // ..Y...F. ....... - 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, // .._..........._. - 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, // ..r......._...r. - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ......g.... .... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, // ......e.... .... - 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, // ..e...r ......h. - 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8......... - 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..V.......F. ... - 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2......... - 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x10, // ..F. ........... - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. - 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..........F. ... - 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..............F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ........... .... - 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..F.......F. ... - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, // ......6.... .... - 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, // ..F.......8...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, // ......V.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, // .........2...r. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......F. ....... - 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x82, // ..2...r ......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, // ............... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, // ..F.......>..... - 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x40, 0x08, // ......@. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, // VSH......,.?...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ + 0xfe, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, // ....,.CTAB...... + 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ + 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, // ..|...D......... + 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, // ..L............. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......l.......u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, // model......... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // ......u_modelVie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, // wProj........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......vs_3_0.Mic + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL + 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler + 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, // 10.1............ + 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ + 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x02, 0x00, 0x07, 0xe0, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x55, 0x90, 0x04, 0x00, // ............U... + 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, // ................ + 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x02, 0x00, // ................ + 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, // ................ + 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x05, 0x00, // ................ + 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x04, 0x00, // ....U........... + 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, // ................ + 0x07, 0xe0, 0x06, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, // ................ + 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............... }; -static const uint8_t vs_metaballs_mtl[899] = +static const uint8_t vs_metaballs_dx11[740] = { - 0x56, 0x53, 0x48, 0x05, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH..,.?...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // el. .. ..u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x50, 0x03, // ViewProj......P. - 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac - 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ut {. float4 a_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color0 [[attribu - 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // te(0)]];. float - 0x33, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, // 3 a_normal [[att - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, // ribute(1)]];. f - 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // loat3 a_position - 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, // [[attribute(2)] - 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // ];.};.struct xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // {. float4 gl_P - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi - 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, // on]];. float4 v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _color0;. float - 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // 3 v_normal;.};.s - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha - 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, // derUniform {. f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // loat4x4 u_model[ - 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // 32];. float4x4 - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; - 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.vertex xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, // tmpvar_1.w = 1 - 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // .0;. tmpvar_1.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, // yz = _mtl_i.a_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // sition;. _mtl_o - 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, // .gl_Position = ( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // _mtl_u.u_modelVi - 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ - 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, // 1);. float4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // var_2 = 0;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_2.w = 0.0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_2.xyz = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, // _mtl_i.a_normal; - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, // . _mtl_o.v_norm - 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, // al = (_mtl_u.u_m - 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // odel[0] * tmpvar - 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // _2).xyz;. _mtl_ - 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, // o.v_color0 = _mt - 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // l_i.a_color0;. - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, // return _mtl_o;.} - 0x0a, 0x0a, 0x00, // ... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x07, 0x75, // VSH......,.?...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x04, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x44, 0x58, // ..............DX + 0x42, 0x43, 0xc6, 0x4d, 0x04, 0x38, 0x93, 0x20, 0x89, 0x1c, 0xbe, 0x68, 0xbc, 0xd4, 0xee, 0x2f, // BC.M.8. ...h.../ + 0x8a, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // ..............,. + 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, // ..........ISGNh. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........P..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, // ................ + 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..V............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........]..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, // ................ + 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x00, 0x50, // ..COLOR.NORMAL.P + 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, // OSITION...OSGNl. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........P..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ + 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, // ..........b..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, // ................ + 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, // ..SV_POSITION.CO + 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, // LOR.TEXCOORD..SH + 0x44, 0x52, 0x84, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x00, 0x59, 0x00, // DR....@...a...Y. + 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x5f, 0x00, // ..F. ........._. + 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, // .........._...r. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, // ......_...r..... + 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..g.... ........ + 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, // ..e.... ......e. + 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, // ..r ......h..... + 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, // ..8...........V. + 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, // ......F. ....... + 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ..2...........F. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x02, 0x00, // ............... + 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, // ..F.......2..... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, // ......F. ....... + 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, // ....... ......F. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, // ......F. ....... + 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, // ..6.... ......F. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8...r..... + 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..V.......F. ... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2...r..... + 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, // ..F. ........... + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. + 0x00, 0x0a, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..r ......F. ... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, // ..............F. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x02, 0x00, // ......>......... + 0x01, 0x00, 0x40, 0x08, // ..@. +}; +static const uint8_t vs_metaballs_mtl[913] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2c, 0xf5, 0x3f, 0x02, 0x00, 0x0f, 0x75, // VSH......,.?...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // .........u_model + 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0x00, 0x00, 0x23, 0x69, // ..........I...#i + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, // nclude <metal_st + 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, // dlib>.#include < + 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, // simd/simd.h>..us + 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me + 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, // tal;..struct _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // obal.{. float + 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, // 4x4 u_model[32]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // . float4x4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, // modelViewProj;.} + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // ;..struct xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // lMain_out.{. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // float4 _entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ntOutput_v_color + 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, // 0 [[user(locn0)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x65, // ];. float3 _e + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, // ntryPointOutput_ + 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, // v_normal [[user( + 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // locn1)]];. fl + 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // oat4 gl_Position + 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, // [[position]];.} + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // ;..struct xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // lMain_in.{. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, // loat4 a_color0 [ + 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(0)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x6e, 0x6f, // . float3 a_no + 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // rmal [[attribute + 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // (1)]];. float + 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, // 3 a_position [[a + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, // ttribute(2)]];.} + 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // ;..vertex xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // lMain_out xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // lMain(xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, // n_in in [[stage_ + 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, // in]], constant _ + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, // Global& _mtl_u [ + 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, // [buffer(0)]]).{. + 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // out out = {};. + 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // out.gl_Positio + 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // n = _mtl_u.u_mod + 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, // elViewProj * flo + 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // at4(in.a_positio + 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, // n, 1.0);. out + 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // ._entryPointOutp + 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, // ut_v_color0 = in + 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // .a_color0;. o + 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // ut._entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, // tput_v_normal = + 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // (_mtl_u.u_model[ + 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, // 0] * float4(in.a + 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, // _normal, 0.0)).x + 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, // yz;. return o + 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x03, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x80, // ut;.}........... + 0x00, // . }; extern const uint8_t* vs_metaballs_pssl; extern const uint32_t vs_metaballs_pssl_size; diff --git a/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.sc b/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.sc index a018b69d915..1470977f1d9 100644 --- a/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.sc +++ b/3rdparty/bgfx/examples/02-metaballs/vs_metaballs.sc @@ -2,8 +2,8 @@ $input a_position, a_normal, a_color0 $output v_normal, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/03-raymarch/fs_raymarching.sc b/3rdparty/bgfx/examples/03-raymarch/fs_raymarching.sc index 4266eac2aac..39a0972feb8 100644 --- a/3rdparty/bgfx/examples/03-raymarch/fs_raymarching.sc +++ b/3rdparty/bgfx/examples/03-raymarch/fs_raymarching.sc @@ -1,8 +1,8 @@ $input v_color0, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ // References: diff --git a/3rdparty/bgfx/examples/03-raymarch/makefile b/3rdparty/bgfx/examples/03-raymarch/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/03-raymarch/makefile +++ b/3rdparty/bgfx/examples/03-raymarch/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/03-raymarch/raymarch.cpp b/3rdparty/bgfx/examples/03-raymarch/raymarch.cpp index a07e018485e..7478eec47f3 100644 --- a/3rdparty/bgfx/examples/03-raymarch/raymarch.cpp +++ b/3rdparty/bgfx/examples/03-raymarch/raymarch.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -21,7 +21,7 @@ struct PosColorTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) @@ -29,17 +29,17 @@ struct PosColorTexCoord0Vertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosColorTexCoord0Vertex::ms_layout; void renderScreenSpaceQuad(uint8_t _view, bgfx::ProgramHandle _program, float _x, float _y, float _width, float _height) { bgfx::TransientVertexBuffer tvb; bgfx::TransientIndexBuffer tib; - if (bgfx::allocTransientBuffers(&tvb, PosColorTexCoord0Vertex::ms_decl, 4, &tib, 6) ) + if (bgfx::allocTransientBuffers(&tvb, PosColorTexCoord0Vertex::ms_layout, 4, &tib, 6) ) { PosColorTexCoord0Vertex* vertex = (PosColorTexCoord0Vertex*)tvb.data; @@ -102,8 +102,8 @@ void renderScreenSpaceQuad(uint8_t _view, bgfx::ProgramHandle _program, float _x class ExampleRaymarch : public entry::AppI { public: - ExampleRaymarch(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleRaymarch(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -119,6 +119,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -224,11 +227,9 @@ public: float mtxInv[16]; bx::mtxInverse(mtxInv, mtx); - float lightDirModel[4] = { -0.4f, -0.5f, -1.0f, 0.0f }; - float lightDirModelN[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; - bx::vec3Norm(lightDirModelN, lightDirModel); float lightDirTime[4]; - bx::vec4MulMtx(lightDirTime, lightDirModelN, mtxInv); + const bx::Vec3 lightDirModelN = bx::normalize(bx::Vec3{-0.4f, -0.5f, -1.0f}); + bx::store(lightDirTime, bx::mul(lightDirModelN, mtxInv) ); lightDirTime[3] = time; bgfx::setUniform(u_lightDirTime, lightDirTime); @@ -266,4 +267,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleRaymarch, "03-raymarch", "Updating shader uniforms."); +ENTRY_IMPLEMENT_MAIN( + ExampleRaymarch + , "03-raymarch" + , "Updating shader uniforms." + , "https://bkaradzic.github.io/bgfx/examples.html#raymarch" + ); diff --git a/3rdparty/bgfx/examples/03-raymarch/vs_raymarching.sc b/3rdparty/bgfx/examples/03-raymarch/vs_raymarching.sc index 264d8b9cae2..ab32d2a2f49 100644 --- a/3rdparty/bgfx/examples/03-raymarch/vs_raymarching.sc +++ b/3rdparty/bgfx/examples/03-raymarch/vs_raymarching.sc @@ -2,8 +2,8 @@ $input a_position, a_color0, a_texcoord0 $output v_color0, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/04-mesh/fs_mesh.sc b/3rdparty/bgfx/examples/04-mesh/fs_mesh.sc index a2d95b99847..93991561e14 100644 --- a/3rdparty/bgfx/examples/04-mesh/fs_mesh.sc +++ b/3rdparty/bgfx/examples/04-mesh/fs_mesh.sc @@ -1,8 +1,8 @@ $input v_pos, v_view, v_normal, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/04-mesh/makefile b/3rdparty/bgfx/examples/04-mesh/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/04-mesh/makefile +++ b/3rdparty/bgfx/examples/04-mesh/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/04-mesh/mesh.cpp b/3rdparty/bgfx/examples/04-mesh/mesh.cpp index 06896ef0208..3457a9f2f49 100644 --- a/3rdparty/bgfx/examples/04-mesh/mesh.cpp +++ b/3rdparty/bgfx/examples/04-mesh/mesh.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -13,8 +13,8 @@ namespace class ExampleMesh : public entry::AppI { public: - ExampleMesh(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleMesh(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -30,6 +30,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -152,4 +155,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleMesh, "04-mesh", "Loading meshes."); +ENTRY_IMPLEMENT_MAIN( + ExampleMesh + , "04-mesh" + , "Loading meshes." + , "https://bkaradzic.github.io/bgfx/examples.html#mesh" + ); diff --git a/3rdparty/bgfx/examples/04-mesh/vs_mesh.sc b/3rdparty/bgfx/examples/04-mesh/vs_mesh.sc index 95095d94fd1..8ca8dbf559c 100644 --- a/3rdparty/bgfx/examples/04-mesh/vs_mesh.sc +++ b/3rdparty/bgfx/examples/04-mesh/vs_mesh.sc @@ -2,8 +2,8 @@ $input a_position, a_normal $output v_pos, v_view, v_normal, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/05-instancing/fs_instancing.sc b/3rdparty/bgfx/examples/05-instancing/fs_instancing.sc index 99ec64685ad..8ea959c83db 100644 --- a/3rdparty/bgfx/examples/05-instancing/fs_instancing.sc +++ b/3rdparty/bgfx/examples/05-instancing/fs_instancing.sc @@ -1,8 +1,8 @@ $input v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/05-instancing/instancing.cpp b/3rdparty/bgfx/examples/05-instancing/instancing.cpp index d471efb87fd..eac31fc25c0 100644 --- a/3rdparty/bgfx/examples/05-instancing/instancing.cpp +++ b/3rdparty/bgfx/examples/05-instancing/instancing.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -19,17 +19,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; static PosColorVertex s_cubeVertices[8] = { @@ -62,8 +62,8 @@ static const uint16_t s_cubeIndices[36] = class ExampleInstancing : public entry::AppI { public: - ExampleInstancing(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleInstancing(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -75,10 +75,16 @@ public: m_height = _height; m_debug = BGFX_DEBUG_TEXT; m_reset = BGFX_RESET_VSYNC; + m_useInstancing = true; + m_lastFrameMissing = 0; + m_sideSize = 11; bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -101,7 +107,7 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); // Create static index buffer. @@ -111,6 +117,7 @@ public: // Create program from shaders. m_program = loadProgram("vs_instancing", "fs_instancing"); + m_program_non_instanced = loadProgram("vs_cubes", "fs_cubes"); m_timeOffset = bx::getHPCounter(); @@ -125,6 +132,7 @@ public: bgfx::destroy(m_ibh); bgfx::destroy(m_vbh); bgfx::destroy(m_program); + bgfx::destroy(m_program_non_instanced); // Shutdown bgfx. bgfx::shutdown(); @@ -148,6 +156,47 @@ public: showExampleDialog(this); + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 2.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + // Get renderer capabilities info. + const bgfx::Caps* caps = bgfx::getCaps(); + + // Check if instancing is supported. + const bool instancingSupported = 0 != (BGFX_CAPS_INSTANCING & caps->supported); + m_useInstancing &= instancingSupported; + + ImGui::Text("%d draw calls", bgfx::getStats()->numDraw); + + ImGui::PushEnabled(instancingSupported); + ImGui::Checkbox("Use Instancing", &m_useInstancing); + ImGui::PopEnabled(); + + ImGui::Text("Grid Side Size:"); + ImGui::SliderInt("##size", (int*)&m_sideSize, 1, 512); + + if (m_lastFrameMissing > 0) + { + ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Couldn't draw %d cubes last frame", m_lastFrameMissing); + } + + if (bgfx::getStats()->numDraw >= bgfx::getCaps()->limits.maxDrawCalls) + { + ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Draw call limit reached!"); + } + + ImGui::End(); + imguiEndFrame(); // Set view 0 default viewport. @@ -159,80 +208,111 @@ public: float time = (float)( (bx::getHPCounter() - m_timeOffset)/double(bx::getHPFrequency() ) ); - // Get renderer capabilities info. - const bgfx::Caps* caps = bgfx::getCaps(); - - // Check if instancing is supported. - if (0 == (BGFX_CAPS_INSTANCING & caps->supported) ) + if (!instancingSupported) { // When instancing is not supported by GPU, implement alternative // code path that doesn't use instancing. bool blink = uint32_t(time*3.0f)&1; bgfx::dbgTextPrintf(0, 0, blink ? 0x4f : 0x04, " Instancing is not supported by GPU. "); + + m_useInstancing = false; } - else + + const bx::Vec3 at = { 0.0f, 0.0f, 0.0f }; + const bx::Vec3 eye = { 0.0f, 0.0f, -35.0f }; + + // Set view and projection matrix for view 0. { - const bx::Vec3 at = { 0.0f, 0.0f, 0.0f }; - const bx::Vec3 eye = { 0.0f, 0.0f, -35.0f }; + float view[16]; + bx::mtxLookAt(view, eye, at); - // Set view and projection matrix for view 0. - { - float view[16]; - bx::mtxLookAt(view, eye, at); + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, bgfx::getCaps()->homogeneousDepth); + bgfx::setViewTransform(0, view, proj); - float proj[16]; - bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, bgfx::getCaps()->homogeneousDepth); - bgfx::setViewTransform(0, view, proj); + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + } - // Set view 0 default viewport. - bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - } + m_lastFrameMissing = 0; + if (m_useInstancing) + { // 80 bytes stride = 64 bytes for 4x4 matrix + 16 bytes for RGBA color. const uint16_t instanceStride = 80; - // 11x11 cubes - const uint32_t numInstances = 121; + // to total number of instances to draw + uint32_t totalCubes = m_sideSize * m_sideSize; + + // figure out how big of a buffer is available + uint32_t drawnCubes = bgfx::getAvailInstanceDataBuffer(totalCubes, instanceStride); + + // save how many we couldn't draw due to buffer room so we can display it + m_lastFrameMissing = totalCubes - drawnCubes; + + bgfx::InstanceDataBuffer idb; + bgfx::allocInstanceDataBuffer(&idb, drawnCubes, instanceStride); - if (numInstances == bgfx::getAvailInstanceDataBuffer(numInstances, instanceStride) ) + uint8_t* data = idb.data; + + for (uint32_t ii = 0; ii < drawnCubes; ++ii) { - bgfx::InstanceDataBuffer idb; - bgfx::allocInstanceDataBuffer(&idb, numInstances, instanceStride); + uint32_t yy = ii / m_sideSize; + uint32_t xx = ii % m_sideSize; + + float* mtx = (float*)data; + bx::mtxRotateXY(mtx, time + xx * 0.21f, time + yy * 0.37f); + mtx[12] = -15.0f + float(xx) * 3.0f; + mtx[13] = -15.0f + float(yy) * 3.0f; + mtx[14] = 0.0f; + + float* color = (float*)&data[64]; + color[0] = bx::sin(time + float(xx) / 11.0f) * 0.5f + 0.5f; + color[1] = bx::cos(time + float(yy) / 11.0f) * 0.5f + 0.5f; + color[2] = bx::sin(time * 3.0f) * 0.5f + 0.5f; + color[3] = 1.0f; + + data += instanceStride; + } + + // Set vertex and index buffer. + bgfx::setVertexBuffer(0, m_vbh); + bgfx::setIndexBuffer(m_ibh); - uint8_t* data = idb.data; + // Set instance data buffer. + bgfx::setInstanceDataBuffer(&idb); - // Write instance data for 11x11 cubes. - for (uint32_t yy = 0; yy < 11; ++yy) + // Set render states. + bgfx::setState(BGFX_STATE_DEFAULT); + + // Submit primitive for rendering to view 0. + bgfx::submit(0, m_program); + } + else + { + // non-instanced path + for (uint32_t yy = 0; yy < m_sideSize; ++yy) + { + for (uint32_t xx = 0; xx < m_sideSize; ++xx) { - for (uint32_t xx = 0; xx < 11; ++xx) - { - float* mtx = (float*)data; - bx::mtxRotateXY(mtx, time + xx*0.21f, time + yy*0.37f); - mtx[12] = -15.0f + float(xx)*3.0f; - mtx[13] = -15.0f + float(yy)*3.0f; - mtx[14] = 0.0f; - - float* color = (float*)&data[64]; - color[0] = bx::sin(time+float(xx)/11.0f)*0.5f+0.5f; - color[1] = bx::cos(time+float(yy)/11.0f)*0.5f+0.5f; - color[2] = bx::sin(time*3.0f)*0.5f+0.5f; - color[3] = 1.0f; - - data += instanceStride; - } - } + float mtx[16]; + bx::mtxRotateXY(mtx, time + xx * 0.21f, time + yy * 0.37f); + mtx[12] = -15.0f + float(xx) * 3.0f; + mtx[13] = -15.0f + float(yy) * 3.0f; + mtx[14] = 0.0f; - // Set vertex and index buffer. - bgfx::setVertexBuffer(0, m_vbh); - bgfx::setIndexBuffer(m_ibh); + // Set model matrix for rendering. + bgfx::setTransform(mtx); - // Set instance data buffer. - bgfx::setInstanceDataBuffer(&idb); + // Set vertex and index buffer. + bgfx::setVertexBuffer(0, m_vbh); + bgfx::setIndexBuffer(m_ibh); - // Set render states. - bgfx::setState(BGFX_STATE_DEFAULT); + // Set render states. + bgfx::setState(BGFX_STATE_DEFAULT); - // Submit primitive for rendering to view 0. - bgfx::submit(0, m_program); + // Submit primitive for rendering to view 0. + bgfx::submit(0, m_program_non_instanced); + } } } @@ -252,13 +332,23 @@ public: uint32_t m_height; uint32_t m_debug; uint32_t m_reset; + bool m_useInstancing; + uint32_t m_lastFrameMissing; + uint32_t m_sideSize; + bgfx::VertexBufferHandle m_vbh; bgfx::IndexBufferHandle m_ibh; bgfx::ProgramHandle m_program; + bgfx::ProgramHandle m_program_non_instanced; int64_t m_timeOffset; }; } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleInstancing, "05-instancing", "Geometry instancing."); +ENTRY_IMPLEMENT_MAIN( + ExampleInstancing + , "05-instancing" + , "Geometry instancing." + , "https://bkaradzic.github.io/bgfx/examples.html#instancing" + ); diff --git a/3rdparty/bgfx/examples/05-instancing/makefile b/3rdparty/bgfx/examples/05-instancing/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/05-instancing/makefile +++ b/3rdparty/bgfx/examples/05-instancing/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/05-instancing/vs_instancing.sc b/3rdparty/bgfx/examples/05-instancing/vs_instancing.sc index b48a802b1b4..5d952e65c98 100644 --- a/3rdparty/bgfx/examples/05-instancing/vs_instancing.sc +++ b/3rdparty/bgfx/examples/05-instancing/vs_instancing.sc @@ -2,21 +2,17 @@ $input a_position, a_color0, i_data0, i_data1, i_data2, i_data3, i_data4 $output v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" void main() { - mat4 model; - model[0] = i_data0; - model[1] = i_data1; - model[2] = i_data2; - model[3] = i_data3; + mat4 model = mtxFromCols(i_data0, i_data1, i_data2, i_data3); - vec4 worldPos = instMul(model, vec4(a_position, 1.0) ); + vec4 worldPos = mul(model, vec4(a_position, 1.0) ); gl_Position = mul(u_viewProj, worldPos); v_color0 = a_color0*i_data4; } diff --git a/3rdparty/bgfx/examples/06-bump/bump.cpp b/3rdparty/bgfx/examples/06-bump/bump.cpp index 2f299161926..2725e65d971 100644 --- a/3rdparty/bgfx/examples/06-bump/bump.cpp +++ b/3rdparty/bgfx/examples/06-bump/bump.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -22,7 +22,7 @@ struct PosNormalTangentTexcoordVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true) @@ -31,10 +31,10 @@ struct PosNormalTangentTexcoordVertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosNormalTangentTexcoordVertex::ms_decl; +bgfx::VertexLayout PosNormalTangentTexcoordVertex::ms_layout; static PosNormalTangentTexcoordVertex s_cubeVertices[24] = { @@ -85,8 +85,8 @@ static const uint16_t s_cubeIndices[36] = class ExampleBump : public entry::AppI { public: - ExampleBump(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleBump(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -102,6 +102,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -127,7 +130,7 @@ public: calcTangents(s_cubeVertices , BX_COUNTOF(s_cubeVertices) - , PosNormalTangentTexcoordVertex::ms_decl + , PosNormalTangentTexcoordVertex::ms_layout , s_cubeIndices , BX_COUNTOF(s_cubeIndices) ); @@ -135,15 +138,15 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosNormalTangentTexcoordVertex::ms_decl + , PosNormalTangentTexcoordVertex::ms_layout ); // Create static index buffer. m_ibh = bgfx::createIndexBuffer(bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ) ); // Create texture sampler uniforms. - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); - s_texNormal = bgfx::createUniform("s_texNormal", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + s_texNormal = bgfx::createUniform("s_texNormal", bgfx::UniformType::Sampler); m_numLights = 4; u_lightPosRadius = bgfx::createUniform("u_lightPosRadius", bgfx::UniformType::Vec4, m_numLights); @@ -370,4 +373,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleBump, "06-bump", "Loading textures."); +ENTRY_IMPLEMENT_MAIN( + ExampleBump + , "06-bump" + , "Loading textures." + , "https://bkaradzic.github.io/bgfx/examples.html#bump" + ); diff --git a/3rdparty/bgfx/examples/06-bump/fs_bump.sc b/3rdparty/bgfx/examples/06-bump/fs_bump.sc index 65154548ba2..7d56dbd0fb9 100644 --- a/3rdparty/bgfx/examples/06-bump/fs_bump.sc +++ b/3rdparty/bgfx/examples/06-bump/fs_bump.sc @@ -1,8 +1,8 @@ -$input v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 // in... +$input v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0// in... /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" @@ -15,7 +15,8 @@ uniform vec4 u_lightRgbInnerR[4]; vec2 blinn(vec3 _lightDir, vec3 _normal, vec3 _viewDir) { float ndotl = dot(_normal, _lightDir); - vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal); + //vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal); + vec3 reflected = 2.0*ndotl*_normal - _lightDir; float rdotv = dot(reflected, _viewDir); return vec2(ndotl, rdotv); } @@ -45,7 +46,7 @@ vec3 calcLight(int _idx, mat3 _tbn, vec3 _wpos, vec3 _normal, vec3 _view) { vec3 lp = u_lightPosRadius[_idx].xyz - _wpos; float attn = 1.0 - smoothstep(u_lightRgbInnerR[_idx].w, 1.0, length(lp) / u_lightPosRadius[_idx].w); - vec3 lightDir = mul(_tbn, normalize(lp) ); + vec3 lightDir = mul( normalize(lp), _tbn ); vec2 bln = blinn(lightDir, _normal, _view); vec4 lc = lit(bln.x, bln.y, 1.0); vec3 rgb = u_lightRgbInnerR[_idx].xyz * saturate(lc.y) * attn; @@ -54,16 +55,12 @@ vec3 calcLight(int _idx, mat3 _tbn, vec3 _wpos, vec3 _normal, vec3 _view) void main() { - mat3 tbn = mat3( - normalize(v_tangent), - normalize(v_bitangent), - normalize(v_normal) - ); + mat3 tbn = mtxFromCols(v_tangent, v_bitangent, v_normal); vec3 normal; normal.xy = texture2D(s_texNormal, v_texcoord0).xy * 2.0 - 1.0; normal.z = sqrt(1.0 - dot(normal.xy, normal.xy) ); - vec3 view = -normalize(v_view); + vec3 view = normalize(v_view); vec3 lightColor; lightColor = calcLight(0, tbn, v_wpos, normal, view); diff --git a/3rdparty/bgfx/examples/06-bump/makefile b/3rdparty/bgfx/examples/06-bump/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/06-bump/makefile +++ b/3rdparty/bgfx/examples/06-bump/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/06-bump/vs_bump.sc b/3rdparty/bgfx/examples/06-bump/vs_bump.sc index d41f87fc2fa..325c987102c 100644 --- a/3rdparty/bgfx/examples/06-bump/vs_bump.sc +++ b/3rdparty/bgfx/examples/06-bump/vs_bump.sc @@ -2,8 +2,8 @@ $input a_position, a_normal, a_tangent, a_texcoord0 $output v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" @@ -11,27 +11,25 @@ $output v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 void main() { vec3 wpos = mul(u_model[0], vec4(a_position, 1.0) ).xyz; + v_wpos = wpos; + gl_Position = mul(u_viewProj, vec4(wpos, 1.0) ); vec4 normal = a_normal * 2.0 - 1.0; - vec3 wnormal = mul(u_model[0], vec4(normal.xyz, 0.0) ).xyz; - vec4 tangent = a_tangent * 2.0 - 1.0; - vec3 wtangent = mul(u_model[0], vec4(tangent.xyz, 0.0) ).xyz; - vec3 viewNormal = normalize(mul(u_view, vec4(wnormal, 0.0) ).xyz); - vec3 viewTangent = normalize(mul(u_view, vec4(wtangent, 0.0) ).xyz); - vec3 viewBitangent = cross(viewNormal, viewTangent) * tangent.w; - mat3 tbn = mat3(viewTangent, viewBitangent, viewNormal); - - v_wpos = wpos; + vec3 wnormal = mul(u_model[0], vec4(normal.xyz, 0.0) ).xyz; + vec3 wtangent = mul(u_model[0], vec4(tangent.xyz, 0.0) ).xyz; - vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; - v_view = mul(view, tbn); + v_normal = normalize(wnormal); + v_tangent = normalize(wtangent); + v_bitangent = cross(v_normal, v_tangent) * tangent.w; - v_normal = viewNormal; - v_tangent = viewTangent; - v_bitangent = viewBitangent; + mat3 tbn = mtxFromCols(v_tangent, v_bitangent, v_normal); + // eye position in world space + vec3 weyepos = mul(vec4(0.0, 0.0, 0.0, 1.0), u_view).xyz; + // tangent space view dir + v_view = mul(weyepos - wpos, tbn); v_texcoord0 = a_texcoord0; } diff --git a/3rdparty/bgfx/examples/06-bump/vs_bump_instanced.sc b/3rdparty/bgfx/examples/06-bump/vs_bump_instanced.sc index 24c509732b7..7e45b313ab0 100644 --- a/3rdparty/bgfx/examples/06-bump/vs_bump_instanced.sc +++ b/3rdparty/bgfx/examples/06-bump/vs_bump_instanced.sc @@ -2,8 +2,8 @@ $input a_position, a_normal, a_tangent, a_texcoord0, i_data0, i_data1, i_data2, $output v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" @@ -25,19 +25,16 @@ void main() vec4 tangent = a_tangent * 2.0 - 1.0; vec3 wtangent = instMul(model, vec4(tangent.xyz, 0.0) ).xyz; - vec3 viewNormal = normalize(mul(u_view, vec4(wnormal, 0.0) ).xyz); - vec3 viewTangent = normalize(mul(u_view, vec4(wtangent, 0.0) ).xyz); - vec3 viewBitangent = cross(viewNormal, viewTangent) * tangent.w; - mat3 tbn = mat3(viewTangent, viewBitangent, viewNormal); + v_normal = wnormal; + v_tangent = wtangent; + v_bitangent = cross(v_normal, v_tangent) * tangent.w; - v_wpos = wpos; + mat3 tbn = mat3(v_tangent, v_bitangent, v_normal); - vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; - v_view = instMul(view, tbn); + v_wpos = wpos; - v_normal = viewNormal; - v_tangent = viewTangent; - v_bitangent = viewBitangent; + vec3 weyepos = mul(vec4(0.0, 0.0, 0.0, 1.0), u_view).xyz; + v_view = instMul(weyepos - wpos, tbn); v_texcoord0 = a_texcoord0; } diff --git a/3rdparty/bgfx/examples/07-callback/callback.cpp b/3rdparty/bgfx/examples/07-callback/callback.cpp index 987c51761ac..04b098a56c5 100644 --- a/3rdparty/bgfx/examples/07-callback/callback.cpp +++ b/3rdparty/bgfx/examples/07-callback/callback.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -29,17 +29,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; static PosColorVertex s_cubeVertices[8] = { @@ -279,8 +279,9 @@ public: if (kNaturalAlignment >= _align) { + intptr_t _ptrOld = intptr_t(_ptr); void* ptr = ::realloc(_ptr, _size); - bx::debugPrintf("%s(%d): REALLOC %p (old %p) of %d byte(s)\n", _file, _line, ptr, _ptr, _size); + bx::debugPrintf("%s(%d): REALLOC %p (old %p) of %d byte(s)\n", _file, _line, ptr, _ptrOld, _size); if (NULL == _ptr) { @@ -307,8 +308,8 @@ private: class ExampleCallback : public entry::AppI { public: - ExampleCallback(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleCallback(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -328,6 +329,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -352,7 +356,7 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); // Create static index buffer. @@ -498,4 +502,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleCallback, "07-callback", "Implementing application specific callbacks for taking screen shots, caching OpenGL binary shaders, and video capture."); +ENTRY_IMPLEMENT_MAIN( + ExampleCallback + , "07-callback" + , "Implementing application specific callbacks for taking screen shots, caching OpenGL binary shaders, and video capture." + , "https://bkaradzic.github.io/bgfx/examples.html#callback" + ); diff --git a/3rdparty/bgfx/examples/07-callback/fs_callback.sc b/3rdparty/bgfx/examples/07-callback/fs_callback.sc index f9808c77f3b..3e8f850e34a 100644 --- a/3rdparty/bgfx/examples/07-callback/fs_callback.sc +++ b/3rdparty/bgfx/examples/07-callback/fs_callback.sc @@ -1,8 +1,8 @@ $input v_world, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/07-callback/makefile b/3rdparty/bgfx/examples/07-callback/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/07-callback/makefile +++ b/3rdparty/bgfx/examples/07-callback/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/07-callback/vs_callback.sc b/3rdparty/bgfx/examples/07-callback/vs_callback.sc index 28ef12e9083..aba775fd4eb 100644 --- a/3rdparty/bgfx/examples/07-callback/vs_callback.sc +++ b/3rdparty/bgfx/examples/07-callback/vs_callback.sc @@ -2,8 +2,8 @@ $input a_position, a_color0 $output v_world, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/08-update/cs_update.sc b/3rdparty/bgfx/examples/08-update/cs_update.sc index 4b1d5fcc725..54566d8344b 100644 --- a/3rdparty/bgfx/examples/08-update/cs_update.sc +++ b/3rdparty/bgfx/examples/08-update/cs_update.sc @@ -1,6 +1,6 @@ /* * Copyright 2014 Stanlo Slasinski. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "bgfx_compute.sh" @@ -25,6 +25,6 @@ void main() { vec3 color = colors[face]*0.75 + sin(u_time.x*4.0)*0.25; ivec3 dest = ivec3(gl_GlobalInvocationID.xy, face); - imageStore(s_texColor, dest, vec4(color,1) ); + imageStore(s_texColor, dest, vec4(color, 1.0) ); } } diff --git a/3rdparty/bgfx/examples/08-update/fs_update.sc b/3rdparty/bgfx/examples/08-update/fs_update.sc index 7c64dfb8def..41e24ed1fe2 100644 --- a/3rdparty/bgfx/examples/08-update/fs_update.sc +++ b/3rdparty/bgfx/examples/08-update/fs_update.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/08-update/fs_update_3d.sc b/3rdparty/bgfx/examples/08-update/fs_update_3d.sc index d07e2abeeef..8986846d5f1 100644 --- a/3rdparty/bgfx/examples/08-update/fs_update_3d.sc +++ b/3rdparty/bgfx/examples/08-update/fs_update_3d.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/08-update/fs_update_cmp.sc b/3rdparty/bgfx/examples/08-update/fs_update_cmp.sc index d5e13254172..076d8965e6f 100644 --- a/3rdparty/bgfx/examples/08-update/fs_update_cmp.sc +++ b/3rdparty/bgfx/examples/08-update/fs_update_cmp.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/08-update/makefile b/3rdparty/bgfx/examples/08-update/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/08-update/makefile +++ b/3rdparty/bgfx/examples/08-update/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/08-update/update.cpp b/3rdparty/bgfx/examples/08-update/update.cpp index 0eb0c53cabe..e7e54f56f78 100644 --- a/3rdparty/bgfx/examples/08-update/update.cpp +++ b/3rdparty/bgfx/examples/08-update/update.cpp @@ -1,12 +1,14 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" #include "bgfx_utils.h" #include "packrect.h" #include "imgui/imgui.h" +#include "entry/entry.h" +#include <bimg/decode.h> #include <bx/rng.h> @@ -26,17 +28,17 @@ struct PosTexcoordVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 3, bgfx::AttribType::Float) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosTexcoordVertex::ms_decl; +bgfx::VertexLayout PosTexcoordVertex::ms_layout; static PosTexcoordVertex s_cubeVertices[] = { @@ -99,6 +101,16 @@ static const uint16_t s_cubeIndices[] = }; BX_STATIC_ASSERT(BX_COUNTOF(s_cubeIndices) == 36); +bx::Vec3 s_faceColors[] = +{ + { 0.75f, 0.0f, 0.0f }, + { 0.75f, 0.75f, 0.0f }, + { 0.75f, 0.0f, 0.75f }, + { 0.0f, 0.75f, 0.0f }, + { 0.0f, 0.75f, 0.75f }, + { 0.0f, 0.0f, 0.75f }, +}; + static void updateTextureCubeRectBgra8( bgfx::TextureHandle _handle , uint8_t _side @@ -129,14 +141,94 @@ static void updateTextureCubeRectBgra8( bgfx::updateTextureCube(_handle, 0, _side, 0, _x, _y, _width, _height, mem); } +bgfx::TextureHandle loadTextureWithUpdate(const char* _filePath, uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE) +{ + bgfx::TextureHandle handle = BGFX_INVALID_HANDLE; + + uint32_t size; + void* data = load(_filePath, &size); + if (NULL != data) + { + bimg::ImageContainer* imageContainer = bimg::imageParse(entry::getAllocator(), data, size); + + if (NULL != imageContainer) + { + BX_ASSERT(!imageContainer->m_cubeMap, "Cubemap Texture loading not supported"); + BX_ASSERT(1 >= imageContainer->m_depth, "3D Texture loading not supported"); + BX_ASSERT(1 == imageContainer->m_numLayers, "Texture Layer loading not supported"); + + if (!imageContainer->m_cubeMap + && 1 >= imageContainer->m_depth + && 1 == imageContainer->m_numLayers + && bgfx::isTextureValid(0, false, imageContainer->m_numLayers, bgfx::TextureFormat::Enum(imageContainer->m_format), _flags) + ) + { + handle = bgfx::createTexture2D( + uint16_t(imageContainer->m_width) + , uint16_t(imageContainer->m_height) + , 1 < imageContainer->m_numMips + , imageContainer->m_numLayers + , bgfx::TextureFormat::Enum(imageContainer->m_format) + , _flags + , NULL + ); + + const bimg::ImageBlockInfo& blockInfo = getBlockInfo(imageContainer->m_format); + const uint32_t blockWidth = blockInfo.blockWidth; + const uint32_t blockHeight = blockInfo.blockHeight; + + uint32_t width = imageContainer->m_width; + uint32_t height = imageContainer->m_height; + + for (uint8_t lod = 0, num = imageContainer->m_numMips; lod < num; ++lod) + { + width = bx::max(blockWidth, width); + height = bx::max(blockHeight, height); + + bimg::ImageMip mip; + + if (bimg::imageGetRawData(*imageContainer, 0, lod, imageContainer->m_data, imageContainer->m_size, mip)) + { + const uint8_t* mipData = mip.m_data; + uint32_t mipDataSize = mip.m_size; + + bgfx::updateTexture2D( + handle + , 0 + , lod + , 0 + , 0 + , uint16_t(width) + , uint16_t(height) + , bgfx::copy(mipData, mipDataSize) + ); + } + + width >>= 1; + height >>= 1; + } + + unload(data); + } + + if (bgfx::isValid(handle)) + { + bgfx::setName(handle, _filePath); + } + } + } + + return handle; +} + static const uint16_t kTextureSide = 512; static const uint32_t kTexture2dSize = 256; class ExampleUpdate : public entry::AppI { public: - ExampleUpdate(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleUpdate(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) , m_cube(kTextureSide) { } @@ -153,6 +245,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -169,6 +264,8 @@ public: , 0 ); + m_showDescriptions = true; + // Create vertex stream declaration. PosTexcoordVertex::init(); @@ -184,7 +281,21 @@ public: m_textures[ 9] = loadTexture("textures/texture_compression_atc.dds"); m_textures[10] = loadTexture("textures/texture_compression_atci.dds"); m_textures[11] = loadTexture("textures/texture_compression_atce.dds"); - BX_STATIC_ASSERT(12 == BX_COUNTOF(m_textures)); + + m_textures[12] = loadTextureWithUpdate("textures/texture_compression_bc1.ktx", BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP); + m_textures[13] = loadTextureWithUpdate("textures/texture_compression_bc2.ktx", BGFX_SAMPLER_U_CLAMP); + m_textures[14] = loadTextureWithUpdate("textures/texture_compression_bc3.ktx", BGFX_SAMPLER_V_CLAMP); + m_textures[15] = loadTextureWithUpdate("textures/texture_compression_etc1.ktx", BGFX_SAMPLER_U_BORDER | BGFX_SAMPLER_V_BORDER | BGFX_SAMPLER_BORDER_COLOR(1)); + m_textures[16] = loadTextureWithUpdate("textures/texture_compression_etc2.ktx"); + m_textures[17] = loadTextureWithUpdate("textures/texture_compression_ptc12.pvr"); + m_textures[18] = loadTextureWithUpdate("textures/texture_compression_ptc14.pvr"); + m_textures[19] = loadTextureWithUpdate("textures/texture_compression_ptc22.pvr"); + m_textures[20] = loadTextureWithUpdate("textures/texture_compression_ptc24.pvr"); + m_textures[21] = loadTextureWithUpdate("textures/texture_compression_atc.dds"); + m_textures[22] = loadTextureWithUpdate("textures/texture_compression_atci.dds"); + m_textures[23] = loadTextureWithUpdate("textures/texture_compression_atce.dds"); + + BX_STATIC_ASSERT(24 == BX_COUNTOF(m_textures)); const bgfx::Caps* caps = bgfx::getCaps(); m_texture3DSupported = !!(caps->supported & BGFX_CAPS_TEXTURE_3D); @@ -229,29 +340,31 @@ public: } // Create static vertex buffer. - m_vbh = bgfx::createVertexBuffer(bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ), PosTexcoordVertex::ms_decl); + m_vbh = bgfx::createVertexBuffer(bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ), PosTexcoordVertex::ms_layout); // Create static index buffer. m_ibh = bgfx::createIndexBuffer(bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ) ); // Create programs. - m_program = loadProgram("vs_update", "fs_update"); - m_programCmp = loadProgram("vs_update", "fs_update_cmp"); + m_program = loadProgram("vs_update", "fs_update"); + m_programCmp = loadProgram("vs_update", "fs_update_cmp"); m_program3d.idx = bgfx::kInvalidHandle; + if (m_texture3DSupported) { m_program3d = loadProgram("vs_update", "fs_update_3d"); } m_programCompute.idx = bgfx::kInvalidHandle; + if (m_computeSupported) { m_programCompute = bgfx::createProgram( loadShader( "cs_update" ), true ); } // Create texture sampler uniforms. - s_texCube = bgfx::createUniform("s_texCube", bgfx::UniformType::Int1); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); + s_texCube = bgfx::createUniform("s_texCube", bgfx::UniformType::Sampler); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); // Create time uniform. u_time = bgfx::createUniform("u_time", bgfx::UniformType::Vec4); @@ -291,6 +404,17 @@ public: ); } + { + m_textureCube[3] = bgfx::createTextureCube(kTextureSide, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT); + + for (uint32_t ii = 0; ii < BX_COUNTOF(m_textureCubeFaceFb); ++ii) + { + bgfx::Attachment at; + at.init(m_textureCube[3], bgfx::Access::Write, uint16_t(ii)); + m_textureCubeFaceFb[ii] = bgfx::createFrameBuffer(1, &at); + } + } + m_texture2d = bgfx::createTexture2D( kTexture2dSize , kTexture2dSize @@ -302,6 +426,16 @@ public: m_texture2dData = (uint8_t*)malloc(kTexture2dSize*kTexture2dSize*4); + if (m_blitSupported) + { + m_blitTestA = bgfx::createTexture2D(16, 16, false, 1, bgfx::TextureFormat::Enum::RGBA8, BGFX_TEXTURE_BLIT_DST); + m_blitTestB = bgfx::createTexture2D(16, 16, false, 1, bgfx::TextureFormat::Enum::RGBA8, BGFX_TEXTURE_BLIT_DST); + m_blitTestC = bgfx::createTexture2D(16, 16, false, 1, bgfx::TextureFormat::Enum::RGBA8, BGFX_TEXTURE_BLIT_DST); + bgfx::setName(m_blitTestA, "Blit A"); + bgfx::setName(m_blitTestB, "Blit B"); + bgfx::setName(m_blitTestC, "Blit C"); + } + m_rr = m_rng.gen()%255; m_gg = m_rng.gen()%255; m_bb = m_rng.gen()%255; @@ -327,6 +461,13 @@ public: // Cleanup. free(m_texture2dData); + if (m_blitSupported) + { + bgfx::destroy(m_blitTestA); + bgfx::destroy(m_blitTestB); + bgfx::destroy(m_blitTestC); + } + for (uint32_t ii = 0; ii < BX_COUNTOF(m_textures); ++ii) { bgfx::destroy(m_textures[ii]); @@ -339,7 +480,7 @@ public: bgfx::destroy(m_texture2d); - for (uint32_t ii = 0; ii<BX_COUNTOF(m_textureCube); ++ii) + for (uint32_t ii = 0; ii < BX_COUNTOF(m_textureCube); ++ii) { if (bgfx::isValid(m_textureCube[ii])) { @@ -347,17 +488,29 @@ public: } } + for (uint32_t ii = 0; ii < BX_COUNTOF(m_textureCubeFaceFb); ++ii) + { + if (bgfx::isValid(m_textureCubeFaceFb[ii])) + { + bgfx::destroy(m_textureCubeFaceFb[ii]); + } + } + bgfx::destroy(m_ibh); bgfx::destroy(m_vbh); + if (bgfx::isValid(m_program3d) ) { bgfx::destroy(m_program3d); } + bgfx::destroy(m_programCmp); + if (bgfx::isValid(m_programCompute) ) { bgfx::destroy(m_programCompute); } + bgfx::destroy(m_program); bgfx::destroy(u_time); bgfx::destroy(s_texColor); @@ -369,6 +522,25 @@ public: return 0; } + void ImGuiDescription(float _x, float _y, float _z, const float* _worldToScreen, const char* _text) + { + if (m_showDescriptions) + { + float worldPos[4] = { _x, _y, _z, 1.0f }; + float screenPos[4]; + + bx::vec4MulMtx(screenPos, worldPos, _worldToScreen); + + ImGui::SetNextWindowPos(ImVec2(screenPos[0] / screenPos[3], screenPos[1] / screenPos[3]), 0, ImVec2(0.5f, 0.5f)); + ImGuiWindowFlags flags = ImGuiWindowFlags_NoInputs | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_AlwaysAutoResize; + ImGui::SetNextWindowBgAlpha(0.5f); + + ImGui::Begin(_text, NULL, flags); + ImGui::Text("%s", _text); + ImGui::End(); + } + } + bool update() override { if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) @@ -385,7 +557,21 @@ public: showExampleDialog(this); - imguiEndFrame(); + ImGui::SetNextWindowPos (ImVec2( 10.0f, 270.0f), ImGuiCond_FirstUseEver); + ImGui::SetNextWindowSize(ImVec2(150.0f, 70.0f), ImGuiCond_FirstUseEver); + + ImGui::Begin( + "Show descriptions" + , NULL + , ImGuiWindowFlags_NoResize + ); + + if (ImGui::Button(m_showDescriptions ? "On" : "Off")) + { + m_showDescriptions = !m_showDescriptions; + } + + ImGui::End(); float borderColor[4] = { @@ -425,7 +611,21 @@ public: updateTextureCubeRectBgra8(m_textureCube[0], face.m_side, rect.m_x, rect.m_y, rect.m_width, rect.m_height, m_rr, m_gg, m_bb); if (m_blitSupported) { - bgfx::blit(0, m_textureCube[1], 0, rect.m_x, rect.m_y, face.m_side, m_textureCube[0], 0, rect.m_x, rect.m_y, face.m_side, rect.m_width, rect.m_height); + bgfx::blit( + 0 + , m_textureCube[1] + , 0 + , rect.m_x + , rect.m_y + , face.m_side + , m_textureCube[0] + , 0 + , rect.m_x + , rect.m_y + , face.m_side + , rect.m_width + , rect.m_height + ); } m_rr = m_rng.gen()%255; @@ -444,7 +644,21 @@ public: updateTextureCubeRectBgra8(m_textureCube[0], face.m_side, rect.m_x, rect.m_y, rect.m_width, rect.m_height, 0, 0, 0); if (m_blitSupported) { - bgfx::blit(0, m_textureCube[1], 0, rect.m_x, rect.m_y, face.m_side, m_textureCube[0], 0, rect.m_x, rect.m_y, face.m_side, rect.m_width, rect.m_height); + bgfx::blit( + 0 + , m_textureCube[1] + , 0 + , rect.m_x + , rect.m_y + , face.m_side + , m_textureCube[0] + , 0 + , rect.m_x + , rect.m_y + , face.m_side + , rect.m_width + , rect.m_height + ); } m_cube.clear(face); @@ -496,6 +710,15 @@ public: // Set view and projection matrix for view 0. bgfx::setViewTransform(0, view, proj); + float projToScreen[16]; + bx::mtxSRT(projToScreen, float(m_width) * 0.5f, -float(m_height) * 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, float(m_width) * 0.5f, float(m_height) * 0.5f, 0.0f); + + float viewProj[16]; + bx::mtxMul(viewProj, view, proj); + + float worldToScreen[16]; + bx::mtxMul(worldToScreen, viewProj, projToScreen); + // Update texturecube using compute shader if (bgfx::isValid(m_programCompute) ) { @@ -503,12 +726,39 @@ public: bgfx::dispatch(0, m_programCompute, kTextureSide/16, kTextureSide/16); } + for (uint32_t ii = 0; ii < BX_COUNTOF(m_textureCubeFaceFb); ++ii) + { + bgfx::ViewId viewId = bgfx::ViewId(ii+2); + bgfx::setViewFrameBuffer(viewId, m_textureCubeFaceFb[ii]); + + bx::Vec3 color = bx::add(s_faceColors[ii], bx::sin(time*4.0f)*0.25f); + uint32_t colorRGB8 = 0 + | uint32_t(bx::toUnorm(color.x, 255.0f) ) << 24 + | uint32_t(bx::toUnorm(color.y, 255.0f) ) << 16 + | uint32_t(bx::toUnorm(color.z, 255.0f) ) << 8 + ; + + bgfx::setViewClear(viewId, BGFX_CLEAR_COLOR, colorRGB8); + bgfx::setViewRect(viewId, 0,0,512,512); + + bgfx::touch(viewId); + } + + static const char* descTextureCube[BX_COUNTOF(m_textureCube)] = + { + "updateTextureCube", + "blit", + "compute", + "frameBuffer", + }; + BX_STATIC_ASSERT(BX_COUNTOF(descTextureCube) == BX_COUNTOF(m_textureCube)); + for (uint32_t ii = 0; ii < BX_COUNTOF(m_textureCube); ++ii) { if (bgfx::isValid(m_textureCube[ii])) { float mtx[16]; - bx::mtxSRT(mtx, 0.7f, 0.7f, 0.7f, time, time*0.37f, 0.0f, -2.0f +ii*2.0f, 0.0f, 0.0f); + bx::mtxSRT(mtx, 0.65f, 0.65f, 0.65f, time, time*0.37f, 0.0f, -2.5f +ii*1.8f, 0.0f, 0.0f); // Set model matrix for rendering. bgfx::setTransform(mtx); @@ -525,19 +775,25 @@ public: // Submit primitive for rendering to view 0. bgfx::submit(0, m_program); + + ImGuiDescription(mtx[12], mtx[13], mtx[14], worldToScreen, descTextureCube[ii]); } } // Set view and projection matrix for view 1. + const uint32_t numColumns = BX_COUNTOF(m_textures) / 2; + const float aspectRatio = float(m_height)/float(m_width); const float margin = 0.7f; - const float sizeX = 0.5f * BX_COUNTOF(m_textures) * 2.1f + margin; + const float sizeX = 0.5f * numColumns * 2.3f + margin; const float sizeY = sizeX * aspectRatio; const bgfx::Caps* caps = bgfx::getCaps(); bx::mtxOrtho(proj, -sizeX, sizeX, sizeY, -sizeY, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); bgfx::setViewTransform(1, NULL, proj); + bx::mtxMul(worldToScreen, proj, projToScreen); + float mtx[16]; bx::mtxTranslate(mtx, -sizeX + margin + 1.0f, 1.9f, 0.0f); @@ -557,11 +813,42 @@ public: // Submit primitive for rendering to view 1. bgfx::submit(1, m_programCmp); + ImGuiDescription(mtx[12], mtx[13], mtx[14], worldToScreen, "updateTexture2D"); + const float xpos = -sizeX + margin + 1.0f; + static const char* descTextures[] = + { + "create\nbc1", + "create\nbc2", + "create\nbc3", + "create\netc1", + "create\netc2", + "create\nptc12", + "create\nptc14", + "create\nptc22", + "create\nptc24", + "create\natc", + "create\natci", + "create\natce", + "update\nbc1", + "update\nbc2", + "update\nbc3", + "update\netc1", + "update\netc2", + "update\nptc12", + "update\nptc14", + "update\nptc22", + "update\nptc24", + "update\natc", + "update\natci", + "update\natce", + }; + BX_STATIC_ASSERT(BX_COUNTOF(descTextures) == BX_COUNTOF(m_textures)); + for (uint32_t ii = 0; ii < BX_COUNTOF(m_textures); ++ii) { - bx::mtxTranslate(mtx, xpos + ii*2.1f, sizeY - margin - 1.0f, 0.0f); + bx::mtxTranslate(mtx, xpos + (ii%numColumns) * 2.3f, sizeY - margin - 2.8f + (ii/numColumns) * 2.3f, 0.0f); // Set model matrix for rendering. bgfx::setTransform(mtx); @@ -578,11 +865,21 @@ public: // Submit primitive for rendering to view 1. bgfx::submit(1, m_programCmp); + + ImGuiDescription(mtx[12], mtx[13], mtx[14], worldToScreen, descTextures[ii]); } + static const char* descTextures3d[] = + { + "Tex3D R8", + "Tex3D R16F", + "Tex3D R32F", + }; + BX_STATIC_ASSERT(BX_COUNTOF(descTextures3d) == BX_COUNTOF(m_textures3d)); + for (uint32_t ii = 0; ii < m_numTextures3d; ++ii) { - bx::mtxTranslate(mtx, xpos + (ii+(BX_COUNTOF(m_textures) - m_numTextures3d)*0.5f)*2.1f, -sizeY + margin + 1.0f, 0.0f); + bx::mtxTranslate(mtx, xpos + (ii+(numColumns - m_numTextures3d)*0.5f)*2.3f, -sizeY + margin + 1.0f, 0.0f); // Set model matrix for rendering. bgfx::setTransform(mtx); @@ -599,9 +896,20 @@ public: // Submit primitive for rendering to view 1. bgfx::submit(1, m_program3d); + + ImGuiDescription(mtx[12], mtx[13], mtx[14], worldToScreen, descTextures3d[ii]); } - for (uint32_t ii = 0; ii < 4; ++ii) + static const char* descSampler[] = + { + "U_CLAMP\nV_CLAMP", + "U_CLAMP\nV_WRAP", + "U_WRAP\nV_CLAMP", + "U_BORDER\nV_BORDER", + "U_WRAP\nV_WRAP", + }; + + for (uint32_t ii = 0; ii < 5; ++ii) { bx::mtxTranslate(mtx, sizeX - margin - 1.0f, -sizeY + margin + 1.0f + ii*2.1f, 0.0f); @@ -620,8 +928,27 @@ public: // Submit primitive for rendering to view 1. bgfx::submit(1, m_programCmp); + + ImGuiDescription(mtx[12], mtx[13], mtx[14], worldToScreen, descSampler[ii]); } + if (m_blitSupported) + { + bgfx::blit(1, m_blitTestA, 0, 0, m_blitTestB, 0, 0); + bgfx::blit(1, m_blitTestC, 0, 0, m_blitTestA, 0, 0); + + bgfx::blit(1, m_blitTestA, 0, 0, m_blitTestB, 0, 0); + bgfx::blit(1, m_blitTestB, 0, 0, m_blitTestC, 0, 0); + + bgfx::blit(1, m_blitTestA, 0, 0, m_blitTestB, 0, 0); + bgfx::blit(1, m_blitTestB, 0, 0, m_blitTestA, 0, 0); + + bgfx::blit(1, m_blitTestB, 0, 0, m_blitTestA, 0, 0); + bgfx::blit(1, m_blitTestC, 0, 0, m_blitTestB, 0, 0); + } + + imguiEndFrame(); + // Advance to next frame. Rendering thread will be kicked to // process submitted rendering primitives. bgfx::frame(); @@ -644,6 +971,7 @@ public: bool m_texture3DSupported; bool m_blitSupported; bool m_computeSupported; + bool m_showDescriptions; std::list<PackCube> m_quads; RectPackCubeT<256> m_cube; @@ -658,10 +986,14 @@ public: uint8_t m_gg; uint8_t m_bb; - bgfx::TextureHandle m_textures[12]; + bgfx::TextureHandle m_textures[24]; bgfx::TextureHandle m_textures3d[3]; bgfx::TextureHandle m_texture2d; - bgfx::TextureHandle m_textureCube[3]; + bgfx::TextureHandle m_textureCube[4]; + bgfx::TextureHandle m_blitTestA; + bgfx::TextureHandle m_blitTestB; + bgfx::TextureHandle m_blitTestC; + bgfx::FrameBufferHandle m_textureCubeFaceFb[6]; bgfx::IndexBufferHandle m_ibh; bgfx::VertexBufferHandle m_vbh; bgfx::ProgramHandle m_program3d; @@ -676,4 +1008,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleUpdate, "08-update", "Updating textures."); +ENTRY_IMPLEMENT_MAIN( + ExampleUpdate + , "08-update" + , "Updating textures." + , "https://bkaradzic.github.io/bgfx/examples.html#update" + ); diff --git a/3rdparty/bgfx/examples/08-update/vs_update.sc b/3rdparty/bgfx/examples/08-update/vs_update.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/08-update/vs_update.sc +++ b/3rdparty/bgfx/examples/08-update/vs_update.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/common.sh b/3rdparty/bgfx/examples/09-hdr/common.sh index c2fb179dbf3..056d9d60830 100644 --- a/3rdparty/bgfx/examples/09-hdr/common.sh +++ b/3rdparty/bgfx/examples/09-hdr/common.sh @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/fs_hdr_blur.sc b/3rdparty/bgfx/examples/09-hdr/fs_hdr_blur.sc index e4ceb061faa..d6130d77da7 100644 --- a/3rdparty/bgfx/examples/09-hdr/fs_hdr_blur.sc +++ b/3rdparty/bgfx/examples/09-hdr/fs_hdr_blur.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/fs_hdr_bright.sc b/3rdparty/bgfx/examples/09-hdr/fs_hdr_bright.sc index 3c969b30c1c..321fac73aef 100644 --- a/3rdparty/bgfx/examples/09-hdr/fs_hdr_bright.sc +++ b/3rdparty/bgfx/examples/09-hdr/fs_hdr_bright.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" @@ -29,10 +29,10 @@ void main() float middleGray = u_tonemap.x; float whiteSqr = u_tonemap.y; - float treshold = u_tonemap.z; + float threshold = u_tonemap.z; float offset = u_tonemap.w; - rgb = max(vec3_splat(0.0), rgb - treshold) * middleGray / (lum + 0.0001); + rgb = max(vec3_splat(0.0), rgb - threshold) * middleGray / (lum + 0.0001); rgb = reinhard2(rgb, whiteSqr); gl_FragColor = toGamma(vec4(rgb, 1.0) ); diff --git a/3rdparty/bgfx/examples/09-hdr/fs_hdr_lum.sc b/3rdparty/bgfx/examples/09-hdr/fs_hdr_lum.sc index 488a04b0104..392ab748316 100644 --- a/3rdparty/bgfx/examples/09-hdr/fs_hdr_lum.sc +++ b/3rdparty/bgfx/examples/09-hdr/fs_hdr_lum.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/fs_hdr_lumavg.sc b/3rdparty/bgfx/examples/09-hdr/fs_hdr_lumavg.sc index eb35f1f3caa..4c682a98c4b 100644 --- a/3rdparty/bgfx/examples/09-hdr/fs_hdr_lumavg.sc +++ b/3rdparty/bgfx/examples/09-hdr/fs_hdr_lumavg.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/fs_hdr_mesh.sc b/3rdparty/bgfx/examples/09-hdr/fs_hdr_mesh.sc index 1e64fd1ff9d..760a0928d15 100644 --- a/3rdparty/bgfx/examples/09-hdr/fs_hdr_mesh.sc +++ b/3rdparty/bgfx/examples/09-hdr/fs_hdr_mesh.sc @@ -1,8 +1,8 @@ $input v_pos, v_view, v_normal /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/fs_hdr_skybox.sc b/3rdparty/bgfx/examples/09-hdr/fs_hdr_skybox.sc index 63e6d58e5d1..c2880f57c74 100644 --- a/3rdparty/bgfx/examples/09-hdr/fs_hdr_skybox.sc +++ b/3rdparty/bgfx/examples/09-hdr/fs_hdr_skybox.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/fs_hdr_tonemap.sc b/3rdparty/bgfx/examples/09-hdr/fs_hdr_tonemap.sc index e17ebfedfa6..44f3df9b429 100644 --- a/3rdparty/bgfx/examples/09-hdr/fs_hdr_tonemap.sc +++ b/3rdparty/bgfx/examples/09-hdr/fs_hdr_tonemap.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" @@ -20,7 +20,7 @@ void main() float middleGray = u_tonemap.x; float whiteSqr = u_tonemap.y; - float treshold = u_tonemap.z; + float threshold = u_tonemap.z; float offset = u_tonemap.w; float lp = Yxy.x * middleGray / (lum + 0.0001); diff --git a/3rdparty/bgfx/examples/09-hdr/hdr.cpp b/3rdparty/bgfx/examples/09-hdr/hdr.cpp index fb3a266dacb..e76fbd61259 100644 --- a/3rdparty/bgfx/examples/09-hdr/hdr.cpp +++ b/3rdparty/bgfx/examples/09-hdr/hdr.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -24,7 +24,7 @@ struct PosColorTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) @@ -32,17 +32,17 @@ struct PosColorTexCoord0Vertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosColorTexCoord0Vertex::ms_layout; void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBottomLeft = false, float _width = 1.0f, float _height = 1.0f) { - if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_decl) ) + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_layout); PosColorTexCoord0Vertex* vertex = (PosColorTexCoord0Vertex*)vb.data; const float zz = 0.0f; @@ -140,8 +140,8 @@ void setOffsets4x4Lum(bgfx::UniformHandle _handle, uint32_t _width, uint32_t _he class ExampleHDR : public entry::AppI { public: - ExampleHDR(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleHDR(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -157,6 +157,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -183,10 +186,10 @@ public: m_meshProgram = loadProgram("vs_hdr_mesh", "fs_hdr_mesh"); m_tonemapProgram = loadProgram("vs_hdr_tonemap", "fs_hdr_tonemap"); - s_texCube = bgfx::createUniform("s_texCube", bgfx::UniformType::Int1); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); - s_texLum = bgfx::createUniform("s_texLum", bgfx::UniformType::Int1); - s_texBlur = bgfx::createUniform("s_texBlur", bgfx::UniformType::Int1); + s_texCube = bgfx::createUniform("s_texCube", bgfx::UniformType::Sampler); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + s_texLum = bgfx::createUniform("s_texLum", bgfx::UniformType::Sampler); + s_texBlur = bgfx::createUniform("s_texBlur", bgfx::UniformType::Sampler); u_mtx = bgfx::createUniform("u_mtx", bgfx::UniformType::Mat4); u_tonemap = bgfx::createUniform("u_tonemap", bgfx::UniformType::Vec4); u_offset = bgfx::createUniform("u_offset", bgfx::UniformType::Vec4, 16); @@ -207,7 +210,7 @@ public: m_lumBgra8 = 0; if ( (BGFX_CAPS_TEXTURE_BLIT|BGFX_CAPS_TEXTURE_READ_BACK) == (bgfx::getCaps()->supported & (BGFX_CAPS_TEXTURE_BLIT|BGFX_CAPS_TEXTURE_READ_BACK) ) ) { - m_rb = bgfx::createTexture2D(1, 1, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_READ_BACK); + m_rb = bgfx::createTexture2D(1, 1, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_BLIT_DST|BGFX_TEXTURE_READ_BACK); } else { @@ -629,4 +632,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleHDR, "09-hdr", "Using multiple views with frame buffers, and view order remapping."); +ENTRY_IMPLEMENT_MAIN( + ExampleHDR + , "09-hdr" + , "Using multiple views with frame buffers, and view order remapping." + , "https://bkaradzic.github.io/bgfx/examples.html#hdr" + ); diff --git a/3rdparty/bgfx/examples/09-hdr/makefile b/3rdparty/bgfx/examples/09-hdr/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/09-hdr/makefile +++ b/3rdparty/bgfx/examples/09-hdr/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/09-hdr/vs_hdr_blur.sc b/3rdparty/bgfx/examples/09-hdr/vs_hdr_blur.sc index 51b17c14b5b..e4dad0170c4 100644 --- a/3rdparty/bgfx/examples/09-hdr/vs_hdr_blur.sc +++ b/3rdparty/bgfx/examples/09-hdr/vs_hdr_blur.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/vs_hdr_bright.sc b/3rdparty/bgfx/examples/09-hdr/vs_hdr_bright.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/09-hdr/vs_hdr_bright.sc +++ b/3rdparty/bgfx/examples/09-hdr/vs_hdr_bright.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/vs_hdr_lum.sc b/3rdparty/bgfx/examples/09-hdr/vs_hdr_lum.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/09-hdr/vs_hdr_lum.sc +++ b/3rdparty/bgfx/examples/09-hdr/vs_hdr_lum.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/vs_hdr_lumavg.sc b/3rdparty/bgfx/examples/09-hdr/vs_hdr_lumavg.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/09-hdr/vs_hdr_lumavg.sc +++ b/3rdparty/bgfx/examples/09-hdr/vs_hdr_lumavg.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/vs_hdr_mesh.sc b/3rdparty/bgfx/examples/09-hdr/vs_hdr_mesh.sc index 01648dc32b5..a10d55992c7 100644 --- a/3rdparty/bgfx/examples/09-hdr/vs_hdr_mesh.sc +++ b/3rdparty/bgfx/examples/09-hdr/vs_hdr_mesh.sc @@ -2,8 +2,8 @@ $input a_position, a_normal $output v_pos, v_view, v_normal /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/vs_hdr_skybox.sc b/3rdparty/bgfx/examples/09-hdr/vs_hdr_skybox.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/09-hdr/vs_hdr_skybox.sc +++ b/3rdparty/bgfx/examples/09-hdr/vs_hdr_skybox.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/09-hdr/vs_hdr_tonemap.sc b/3rdparty/bgfx/examples/09-hdr/vs_hdr_tonemap.sc index 13604778439..e7fea0c3e8c 100644 --- a/3rdparty/bgfx/examples/09-hdr/vs_hdr_tonemap.sc +++ b/3rdparty/bgfx/examples/09-hdr/vs_hdr_tonemap.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/10-font/font.cpp b/3rdparty/bgfx/examples/10-font/font.cpp index 26dbfc76e6e..7d0921ddc41 100644 --- a/3rdparty/bgfx/examples/10-font/font.cpp +++ b/3rdparty/bgfx/examples/10-font/font.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -54,8 +54,8 @@ static const char* s_fontFilePath[] = class ExampleFont : public entry::AppI { public: - ExampleFont(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleFont(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -71,6 +71,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -87,6 +90,10 @@ public: , 0 ); + // Initialize Imgui + // This initializes the same allocator used by stb_truetype, so must do that before creating the font manager + imguiCreate(); + // Init the text rendering system. m_fontManager = new FontManager(512); m_textBufferManager = new TextBufferManager(m_fontManager); @@ -186,8 +193,6 @@ public: // Create a transient buffer for real-time data. m_transientText = m_textBufferManager->createTextBuffer(FONT_TYPE_ALPHA, BufferType::Transient); - - imguiCreate(); } virtual int shutdown() override @@ -264,7 +269,10 @@ public: float view[16]; bx::mtxLookAt(view, eye, at); - const float centering = 0.5f; + float centering = 0.0f; + if (bgfx::getRendererType() == bgfx::RendererType::Direct3D9) { + centering = -0.5f; + } // Setup a top-left ortho matrix for screen space drawing. const bgfx::Caps* caps = bgfx::getCaps(); @@ -329,4 +337,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleFont, "10-font", "Use the font system to display text and styled text."); +ENTRY_IMPLEMENT_MAIN( + ExampleFont + , "10-font" + , "Use the font system to display text and styled text." + , "https://bkaradzic.github.io/bgfx/examples.html#font" + ); diff --git a/3rdparty/bgfx/examples/11-fontsdf/fontsdf.cpp b/3rdparty/bgfx/examples/11-fontsdf/fontsdf.cpp index 43634abba9b..4308a498116 100644 --- a/3rdparty/bgfx/examples/11-fontsdf/fontsdf.cpp +++ b/3rdparty/bgfx/examples/11-fontsdf/fontsdf.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -37,8 +37,8 @@ TrueTypeHandle loadTtf(FontManager* _fm, const char* _filePath) class ExampleFontSDF : public entry::AppI { public: - ExampleFontSDF(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleFontSDF(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -54,6 +54,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -70,24 +73,37 @@ public: , 0 ); - // Imgui. + // Initialize Imgui + // This initializes the same allocator used by stb_truetype, so must do that before creating the font manager imguiCreate(); - m_bigText = (char*)load("text/sherlock_holmes_a_scandal_in_bohemia_arthur_conan_doyle.txt"); + uint32_t size; + m_txtFile = load("text/sherlock_holmes_a_scandal_in_bohemia_arthur_conan_doyle.txt", &size); + m_bigText = bx::StringView( (const char*)m_txtFile, size); - // Init the text rendering system. - m_fontManager = new FontManager(512); - m_textBufferManager = new TextBufferManager(m_fontManager); + // Set up some defaults. + m_outlineColor = ImVec4(1.0f, 0.0f, 0.0f, 1.0f); + m_outlineWidth = 1.0f; + m_dropShadowColor = ImVec4(0.0f, 0.0f, 0.0f, 0.35f); + m_dropShadowOffsetX = 1.0f; + m_dropShadowOffsetY = 1.0f; + m_dropShadowSoftener = 2.0f; - m_font = loadTtf(m_fontManager, "font/special_elite.ttf"); + m_textScroll = 0.0f; + m_textRotation = 0.0f; + m_textScale = 1.0f; + m_textSize = 14.0f; - // Create a distance field font. - m_fontSdf = m_fontManager->createFontByPixelSize(m_font, 0, 48, FONT_TYPE_DISTANCE); + // Init the text rendering system. + m_fontManager = NULL; + m_textBufferManager = NULL; + m_font = BGFX_INVALID_HANDLE; + m_fontSdf = BGFX_INVALID_HANDLE; + m_fontScaled = BGFX_INVALID_HANDLE; + m_scrollableBuffer = BGFX_INVALID_HANDLE; - // Create a scaled down version of the same font (without adding anything to the atlas). - m_fontScaled = m_fontManager->createScaledFontToPixelSize(m_fontSdf, 14); + initializeFont(FONT_TYPE_DISTANCE); - m_metrics = TextLineMetrics(m_fontManager->getFontInfo(m_fontScaled) ); m_lineCount = m_metrics.getLineCount(m_bigText); m_visibleLineCount = 20.0f; @@ -96,22 +112,18 @@ public: m_textEnd = 0; m_metrics.getSubText(m_bigText, 0, (uint32_t)m_visibleLineCount, m_textBegin, m_textEnd); - m_scrollableBuffer = m_textBufferManager->createTextBuffer(FONT_TYPE_DISTANCE, BufferType::Transient); - m_textBufferManager->setTextColor(m_scrollableBuffer, 0xFFFFFFFF); + initializeTextBuffer(FONT_TYPE_DISTANCE); - m_textBufferManager->appendText(m_scrollableBuffer, m_fontScaled, m_textBegin, m_textEnd); + applyTextBufferAttributes(); - m_textScroll = 0.0f; - m_textRotation = 0.0f; - m_textScale = 1.0f; - m_textSize = 14.0f; + m_textBufferManager->appendText(m_scrollableBuffer, m_fontScaled, m_textBegin, m_textEnd); } virtual int shutdown() override { imguiDestroy(); - BX_FREE(entry::getAllocator(), m_bigText); + unload(m_txtFile); m_fontManager->destroyTtf(m_font); // Destroy the fonts. @@ -159,7 +171,25 @@ public: ); bool recomputeVisibleText = false; - recomputeVisibleText |= ImGui::SliderFloat("# of lines", &m_visibleLineCount, 1.0f, 177.0f); + + static int fontTypeIndex = 0; + if (ImGui::Combo("SDF Font Type", &fontTypeIndex, "Standard\0Outline\0Outline_Image\0DropShadow\0DropShadow_Image\0Outline_DropShadow_Image\0\0")) + { + uint32_t fontTypeList[] = + { + FONT_TYPE_DISTANCE, + FONT_TYPE_DISTANCE_OUTLINE, + FONT_TYPE_DISTANCE_OUTLINE_IMAGE, + FONT_TYPE_DISTANCE_DROP_SHADOW, + FONT_TYPE_DISTANCE_DROP_SHADOW_IMAGE, + FONT_TYPE_DISTANCE_OUTLINE_DROP_SHADOW_IMAGE + }; + uint32_t fontType = fontTypeList[fontTypeIndex]; + + initializeFont(fontType); + initializeTextBuffer(fontType); + recomputeVisibleText = true; + } if (ImGui::SliderFloat("Font size", &m_textSize, 6.0f, 64.0f) ) { @@ -169,6 +199,32 @@ public: recomputeVisibleText = true; } + if (ImGui::ColorEdit3("Outline Color", (float*)&m_outlineColor)) + { + recomputeVisibleText = true; + } + if (ImGui::SliderFloat("Outline Width", &m_outlineWidth, 0.5f, 5.0f)) + { + recomputeVisibleText = true; + } + if (ImGui::ColorEdit4("Drop Shadow Color", (float*)&m_dropShadowColor)) + { + recomputeVisibleText = true; + } + if (ImGui::SliderFloat("Drop Shadow Offset X", &m_dropShadowOffsetX, -5.0f, 5.0f)) + { + recomputeVisibleText = true; + } + if (ImGui::SliderFloat("Drop Shadow Offset Y", &m_dropShadowOffsetY, -5.0f, 5.0f)) + { + recomputeVisibleText = true; + } + if (ImGui::SliderFloat("Drop Shadow Softener", &m_dropShadowSoftener, 0.0f, 5.0f)) + { + recomputeVisibleText = true; + } + + recomputeVisibleText |= ImGui::SliderFloat("# of lines", &m_visibleLineCount, 1.0f, 177.0f); recomputeVisibleText |= ImGui::SliderFloat("Scroll", &m_textScroll, 0.0f, (m_lineCount-m_visibleLineCount)); ImGui::SliderFloat("Rotate", &m_textRotation, 0.0f, bx::kPi*2.0f); recomputeVisibleText |= ImGui::SliderFloat("Scale", &m_textScale, 0.1f, 10.0f); @@ -176,6 +232,9 @@ public: if (recomputeVisibleText) { m_textBufferManager->clearTextBuffer(m_scrollableBuffer); + + applyTextBufferAttributes(); + m_metrics.getSubText(m_bigText,(uint32_t)m_textScroll, (uint32_t)(m_textScroll+m_visibleLineCount), m_textBegin, m_textEnd); m_textBufferManager->appendText(m_scrollableBuffer, m_fontScaled, m_textBegin, m_textEnd); } @@ -197,7 +256,10 @@ public: float view[16]; bx::mtxLookAt(view, eye, at); - const float centering = 0.5f; + float centering = 0.0f; + if (bgfx::getRendererType() == bgfx::RendererType::Direct3D9) { + centering = -0.5f; + } // Setup a top-left ortho matrix for screen space drawing. const bgfx::Caps* caps = bgfx::getCaps(); @@ -247,13 +309,75 @@ public: return false; } + void initializeFont(uint32_t fontType) + { + if (m_font.idx != bgfx::kInvalidHandle) + { + m_fontManager->destroyTtf(m_font); + } + + if (m_scrollableBuffer.idx != bgfx::kInvalidHandle) + { + m_textBufferManager->destroyTextBuffer(m_scrollableBuffer); + } + + if (m_fontScaled.idx != bgfx::kInvalidHandle) + { + m_fontManager->destroyFont(m_fontScaled); + } + if (m_fontSdf.idx != bgfx::kInvalidHandle) + { + m_fontManager->destroyFont(m_fontSdf); + } + + delete m_textBufferManager; + delete m_fontManager; + + m_fontManager = new FontManager(512); + m_textBufferManager = new TextBufferManager(m_fontManager); + + m_font = loadTtf(m_fontManager, "font/special_elite.ttf"); + + m_fontSdf = m_fontManager->createFontByPixelSize(m_font, 0, 48, fontType, 6 + 2, 6 + 2); + + m_fontScaled = m_fontManager->createScaledFontToPixelSize(m_fontSdf, (uint32_t) m_textSize); + + if (fontType & FONT_TYPE_MASK_DISTANCE_IMAGE) + { + float extraScale = 2.0f; + bimg::ImageContainer* glyphImage = imageLoad("font/glyph_space.png", bgfx::TextureFormat::Enum::BGRA8); + m_fontManager->addGlyphBitmap(m_fontSdf, 32, (uint16_t)glyphImage->m_width, (uint16_t)glyphImage->m_height, (uint16_t)(glyphImage->m_width * 4), extraScale, (const uint8_t*)glyphImage->m_data, 0.0f, -3.0f); + + glyphImage = imageLoad("font/glyph_long.png", bgfx::TextureFormat::Enum::BGRA8); + m_fontManager->addGlyphBitmap(m_fontSdf, 65, (uint16_t)glyphImage->m_width, (uint16_t)glyphImage->m_height, (uint16_t)(glyphImage->m_width * 4), extraScale, (const uint8_t*)glyphImage->m_data, 0.0f, -3.0f); + } + + m_metrics = TextLineMetrics(m_fontManager->getFontInfo(m_fontScaled) ); + } + + void initializeTextBuffer(uint32_t fontType) + { + m_scrollableBuffer = m_textBufferManager->createTextBuffer(fontType, BufferType::Transient); + } + + void applyTextBufferAttributes() + { + m_textBufferManager->setTextColor(m_scrollableBuffer, 0xFFFFFFFF); + m_textBufferManager->setOutlineColor(m_scrollableBuffer, ((uint32_t)(m_outlineColor.x * 255) << 24) | ((uint32_t)(m_outlineColor.y * 255) << 16) | ((uint32_t)(m_outlineColor.z * 255) << 8) | ((uint32_t)(m_outlineColor.w * 255))); + m_textBufferManager->setOutlineWidth(m_scrollableBuffer, m_outlineWidth); + m_textBufferManager->setDropShadowColor(m_scrollableBuffer, ((uint32_t)(m_dropShadowColor.x * 255) << 24) | ((uint32_t)(m_dropShadowColor.y * 255) << 16) | ((uint32_t)(m_dropShadowColor.z * 255) << 8) | ((uint32_t)(m_dropShadowColor.w * 255))); + m_textBufferManager->setDropShadowOffset(m_scrollableBuffer, m_dropShadowOffsetX, m_dropShadowOffsetY); + m_textBufferManager->setDropShadowSoftener(m_scrollableBuffer, m_dropShadowSoftener); + } + entry::MouseState m_mouseState; uint32_t m_width; uint32_t m_height; uint32_t m_debug; uint32_t m_reset; - char* m_bigText; + void* m_txtFile; + bx::StringView m_bigText; // Init the text rendering system. FontManager* m_fontManager; @@ -271,6 +395,13 @@ public: const char* m_textBegin; const char* m_textEnd; + ImVec4 m_outlineColor; + float m_outlineWidth; + ImVec4 m_dropShadowColor; + float m_dropShadowOffsetX; + float m_dropShadowOffsetY; + float m_dropShadowSoftener; + float m_textScroll; float m_textRotation; float m_textScale; @@ -279,4 +410,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleFontSDF, "11-fontsdf", "Use a single distance field font to render text of various size."); +ENTRY_IMPLEMENT_MAIN( + ExampleFontSDF + , "11-fontsdf" + , "Use a single distance field font to render text of various size." + , "https://bkaradzic.github.io/bgfx/examples.html#fontsdf" + ); diff --git a/3rdparty/bgfx/examples/12-lod/fs_tree.sc b/3rdparty/bgfx/examples/12-lod/fs_tree.sc index 72649c5f664..b9392d2df8d 100644 --- a/3rdparty/bgfx/examples/12-lod/fs_tree.sc +++ b/3rdparty/bgfx/examples/12-lod/fs_tree.sc @@ -2,7 +2,7 @@ $input v_pos, v_view, v_normal, v_texcoord0 /* * Copyright 2013 Milos Tosic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/12-lod/lod.cpp b/3rdparty/bgfx/examples/12-lod/lod.cpp index 130826c747f..b429334a843 100644 --- a/3rdparty/bgfx/examples/12-lod/lod.cpp +++ b/3rdparty/bgfx/examples/12-lod/lod.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013 Milos Tosic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -29,8 +29,8 @@ static const KnightPos knightTour[8*4] = class ExampleLod : public entry::AppI { public: - ExampleLod(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleLod(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -46,6 +46,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -62,8 +65,8 @@ public: , 0 ); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); - s_texStipple = bgfx::createUniform("s_texStipple", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + s_texStipple = bgfx::createUniform("s_texStipple", bgfx::UniformType::Sampler); u_stipple = bgfx::createUniform("u_stipple", bgfx::UniformType::Vec4); m_program = loadProgram("vs_tree", "fs_tree"); @@ -311,4 +314,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleLod, "12-lod", "Mesh LOD transitions."); +ENTRY_IMPLEMENT_MAIN( + ExampleLod + , "12-lod" + , "Mesh LOD transitions." + , "https://bkaradzic.github.io/bgfx/examples.html#lod" + ); diff --git a/3rdparty/bgfx/examples/12-lod/makefile b/3rdparty/bgfx/examples/12-lod/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/12-lod/makefile +++ b/3rdparty/bgfx/examples/12-lod/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/12-lod/vs_tree.sc b/3rdparty/bgfx/examples/12-lod/vs_tree.sc index 3ec3f6680dd..9cd06412cd0 100644 --- a/3rdparty/bgfx/examples/12-lod/vs_tree.sc +++ b/3rdparty/bgfx/examples/12-lod/vs_tree.sc @@ -3,7 +3,7 @@ $output v_pos, v_view, v_normal, v_texcoord0 /* * Copyright 2013 Milos Tosic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_black.sc b/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_black.sc index 975df704e73..d754dccfd53 100644 --- a/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_black.sc +++ b/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_black.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_lighting.sc b/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_lighting.sc index ae11cd4ca6e..d28d92c1607 100644 --- a/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_lighting.sc +++ b/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_lighting.sc @@ -2,7 +2,7 @@ $input v_normal, v_view /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_texture.sc b/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_texture.sc index 1971de51ae0..3fa64965bc9 100644 --- a/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_texture.sc +++ b/3rdparty/bgfx/examples/13-stencil/fs_stencil_color_texture.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture.sc b/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture.sc index 098fa5b9df1..054a7d93d61 100644 --- a/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture.sc +++ b/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture_lighting.sc b/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture_lighting.sc index e0dbcbd147d..31462044229 100644 --- a/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture_lighting.sc +++ b/3rdparty/bgfx/examples/13-stencil/fs_stencil_texture_lighting.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/makefile b/3rdparty/bgfx/examples/13-stencil/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/13-stencil/makefile +++ b/3rdparty/bgfx/examples/13-stencil/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/13-stencil/stencil.cpp b/3rdparty/bgfx/examples/13-stencil/stencil.cpp index 5308757e87f..cfbf0615c9a 100644 --- a/3rdparty/bgfx/examples/13-stencil/stencil.cpp +++ b/3rdparty/bgfx/examples/13-stencil/stencil.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <string> @@ -15,7 +15,7 @@ namespace bgfx { - int32_t read(bx::ReaderI* _reader, bgfx::VertexDecl& _decl, bx::Error* _err = NULL); + int32_t read(bx::ReaderI* _reader, bgfx::VertexLayout& _layout, bx::Error* _err); } namespace @@ -43,7 +43,7 @@ struct PosNormalTexcoordVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true) @@ -51,10 +51,10 @@ struct PosNormalTexcoordVertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosNormalTexcoordVertex::ms_decl; +bgfx::VertexLayout PosNormalTexcoordVertex::ms_layout; static const float s_texcoord = 5.0f; static PosNormalTexcoordVertex s_hplaneVertices[] = @@ -131,8 +131,9 @@ static bgfx::UniformHandle s_texColor; void setViewClearMask(uint32_t _viewMask, uint8_t _flags, uint32_t _rgba, float _depth, uint8_t _stencil) { - for (uint32_t view = 0, viewMask = _viewMask, ntz = bx::uint32_cnttz(_viewMask); 0 != viewMask; viewMask >>= 1, view += 1, ntz = bx::uint32_cnttz(viewMask) ) + for (uint32_t view = 0, viewMask = _viewMask; 0 != viewMask; viewMask >>= 1, view += 1 ) { + const uint32_t ntz = bx::uint32_cnttz(viewMask); viewMask >>= ntz; view += ntz; @@ -142,8 +143,9 @@ void setViewClearMask(uint32_t _viewMask, uint8_t _flags, uint32_t _rgba, float void setViewTransformMask(uint32_t _viewMask, const void* _view, const void* _proj) { - for (uint32_t view = 0, viewMask = _viewMask, ntz = bx::uint32_cnttz(_viewMask); 0 != viewMask; viewMask >>= 1, view += 1, ntz = bx::uint32_cnttz(viewMask) ) + for (uint32_t view = 0, viewMask = _viewMask; 0 != viewMask; viewMask >>= 1, view += 1 ) { + const uint32_t ntz = bx::uint32_cnttz(viewMask); viewMask >>= ntz; view += ntz; @@ -153,8 +155,9 @@ void setViewTransformMask(uint32_t _viewMask, const void* _view, const void* _pr void setViewRectMask(uint32_t _viewMask, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height) { - for (uint32_t view = 0, viewMask = _viewMask, ntz = bx::uint32_cnttz(_viewMask); 0 != viewMask; viewMask >>= 1, view += 1, ntz = bx::uint32_cnttz(viewMask) ) + for (uint32_t view = 0, viewMask = _viewMask; 0 != viewMask; viewMask >>= 1, view += 1 ) { + const uint32_t ntz = bx::uint32_cnttz(viewMask); viewMask >>= ntz; view += ntz; @@ -162,40 +165,39 @@ void setViewRectMask(uint32_t _viewMask, uint16_t _x, uint16_t _y, uint16_t _wid } } -void mtxReflected(float*__restrict _result - , const float* __restrict _p /* plane */ - , const float* __restrict _n /* normal */ - ) +void mtxReflected(float* _result, const bx::Vec3& _pos, const bx::Vec3& _normal) { - float dot = bx::vec3Dot(_p, _n); - - _result[ 0] = 1.0f - 2.0f * _n[0] * _n[0]; //1-2Nx^2 - _result[ 1] = -2.0f * _n[0] * _n[1]; //-2*Nx*Ny - _result[ 2] = -2.0f * _n[0] * _n[2]; //-2*NxNz - _result[ 3] = 0.0f; //0 - - _result[ 4] = -2.0f * _n[0] * _n[1]; //-2*NxNy - _result[ 5] = 1.0f - 2.0f * _n[1] * _n[1]; //1-2*Ny^2 - _result[ 6] = -2.0f * _n[1] * _n[2]; //-2*NyNz - _result[ 7] = 0.0f; //0 - - _result[ 8] = -2.0f * _n[0] * _n[2]; //-2*NxNz - _result[ 9] = -2.0f * _n[1] * _n[2]; //-2NyNz - _result[10] = 1.0f - 2.0f * _n[2] * _n[2]; //1-2*Nz^2 - _result[11] = 0.0f; //0 - - _result[12] = 2.0f * dot * _n[0]; //2*dot*Nx - _result[13] = 2.0f * dot * _n[1]; //2*dot*Ny - _result[14] = 2.0f * dot * _n[2]; //2*dot*Nz - _result[15] = 1.0f; //1 + const float nx = _normal.x; + const float ny = _normal.y; + const float nz = _normal.z; + + _result[ 0] = 1.0f - 2.0f * nx * nx; + _result[ 1] = - 2.0f * nx * ny; + _result[ 2] = - 2.0f * nx * nz; + _result[ 3] = 0.0f; + + _result[ 4] = - 2.0f * nx * ny; + _result[ 5] = 1.0f - 2.0f * ny * ny; + _result[ 6] = - 2.0f * ny * nz; + _result[ 7] = 0.0f; + + _result[ 8] = - 2.0f * nx * nz; + _result[ 9] = - 2.0f * ny * nz; + _result[10] = 1.0f - 2.0f * nz * nz; + _result[11] = 0.0f; + + const float dot = bx::dot(_pos, _normal); + + _result[12] = 2.0f * dot * nx; + _result[13] = 2.0f * dot * ny; + _result[14] = 2.0f * dot * nz; + _result[15] = 1.0f; } -void mtxShadow(float* __restrict _result - , const float* __restrict _ground - , const float* __restrict _light - ) +void mtxShadow(float* _result, const float* _ground, const float* _light) { - float dot = _ground[0] * _light[0] + const float dot = + _ground[0] * _light[0] + _ground[1] * _light[1] + _ground[2] * _light[2] + _ground[3] * _light[3] @@ -222,10 +224,7 @@ void mtxShadow(float* __restrict _result _result[15] = dot - _light[3] * _ground[3]; } -void mtxBillboard(float* __restrict _result - , const float* __restrict _view - , const float* __restrict _pos - , const float* __restrict _scale) +void mtxBillboard(float* _result, const float* _view, const float* _pos, const float* _scale) { _result[ 0] = _view[0] * _scale[0]; _result[ 1] = _view[4] * _scale[0]; @@ -610,6 +609,9 @@ struct Group { m_vbh.idx = bgfx::kInvalidHandle; m_ibh.idx = bgfx::kInvalidHandle; + m_sphere={}; + m_aabb={}; + m_obb={}; m_prims.clear(); } @@ -623,15 +625,15 @@ struct Group struct Mesh { - void load(const void* _vertices, uint32_t _numVertices, const bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices) + void load(const void* _vertices, uint32_t _numVertices, const bgfx::VertexLayout _layout, const uint16_t* _indices, uint32_t _numIndices) { Group group; const bgfx::Memory* mem; uint32_t size; - size = _numVertices*_decl.getStride(); + size = _numVertices*_layout.getStride(); mem = bgfx::makeRef(_vertices, size); - group.m_vbh = bgfx::createVertexBuffer(mem, _decl); + group.m_vbh = bgfx::createVertexBuffer(mem, _layout); size = _numIndices*2; mem = bgfx::makeRef(_indices, size); @@ -651,35 +653,37 @@ struct Mesh Group group; + bx::Error err; + uint32_t chunk; - while (4 == bx::read(reader, chunk) ) + while (4 == bx::read(reader, chunk, &err) ) { switch (chunk) { case BGFX_CHUNK_MAGIC_VB: { - bx::read(reader, group.m_sphere); - bx::read(reader, group.m_aabb); - bx::read(reader, group.m_obb); + bx::read(reader, group.m_sphere, &err); + bx::read(reader, group.m_aabb, &err); + bx::read(reader, group.m_obb, &err); - bgfx::read(reader, m_decl); - uint16_t stride = m_decl.getStride(); + bgfx::read(reader, m_layout, &err); + uint16_t stride = m_layout.getStride(); uint16_t numVertices; - bx::read(reader, numVertices); + bx::read(reader, numVertices, &err); const bgfx::Memory* mem = bgfx::alloc(numVertices*stride); - bx::read(reader, mem->data, mem->size); + bx::read(reader, mem->data, mem->size, &err); - group.m_vbh = bgfx::createVertexBuffer(mem, m_decl); + group.m_vbh = bgfx::createVertexBuffer(mem, m_layout); } break; case BGFX_CHUNK_MAGIC_IB: { uint32_t numIndices; - bx::read(reader, numIndices); + bx::read(reader, numIndices, &err); const bgfx::Memory* mem = bgfx::alloc(numIndices*2); - bx::read(reader, mem->data, mem->size); + bx::read(reader, mem->data, mem->size, &err); group.m_ibh = bgfx::createIndexBuffer(mem); } break; @@ -687,31 +691,31 @@ struct Mesh case BGFX_CHUNK_MAGIC_PRI: { uint16_t len; - bx::read(reader, len); + bx::read(reader, len, &err); std::string material; material.resize(len); - bx::read(reader, const_cast<char*>(material.c_str() ), len); + bx::read(reader, const_cast<char*>(material.c_str() ), len, &err); uint16_t num; - bx::read(reader, num); + bx::read(reader, num, &err); for (uint32_t ii = 0; ii < num; ++ii) { - bx::read(reader, len); + bx::read(reader, len, &err); std::string name; name.resize(len); - bx::read(reader, const_cast<char*>(name.c_str() ), len); + bx::read(reader, const_cast<char*>(name.c_str() ), len, &err); Primitive prim; - bx::read(reader, prim.m_startIndex); - bx::read(reader, prim.m_numIndices); - bx::read(reader, prim.m_startVertex); - bx::read(reader, prim.m_numVertices); - bx::read(reader, prim.m_sphere); - bx::read(reader, prim.m_aabb); - bx::read(reader, prim.m_obb); + bx::read(reader, prim.m_startIndex, &err); + bx::read(reader, prim.m_numIndices, &err); + bx::read(reader, prim.m_startVertex, &err); + bx::read(reader, prim.m_numVertices, &err); + bx::read(reader, prim.m_sphere, &err); + bx::read(reader, prim.m_aabb, &err); + bx::read(reader, prim.m_obb, &err); group.m_prims.push_back(prim); } @@ -776,12 +780,12 @@ struct Mesh // Submit bgfx::submit(_id, _program); - // Keep track of submited view ids + // Keep track of submitted view ids s_viewMask |= 1 << _id; } } - bgfx::VertexDecl m_decl; + bgfx::VertexLayout m_layout; typedef std::vector<Group> GroupArray; GroupArray m_groups; }; @@ -790,8 +794,8 @@ struct Mesh class ExampleStencil : public entry::AppI { public: - ExampleStencil(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleStencil(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -808,6 +812,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_viewState.m_width; init.resolution.height = m_viewState.m_height; init.resolution.reset = m_reset; @@ -823,7 +830,7 @@ public: s_uniforms.init(); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); m_programTextureLighting = loadProgram("vs_stencil_texture_lighting", "fs_stencil_texture_lighting"); m_programColorLighting = loadProgram("vs_stencil_color_lighting", "fs_stencil_color_lighting" ); @@ -833,9 +840,9 @@ public: m_bunnyMesh.load("meshes/bunny.bin"); m_columnMesh.load("meshes/column.bin"); - m_cubeMesh.load(s_cubeVertices, BX_COUNTOF(s_cubeVertices), PosNormalTexcoordVertex::ms_decl, s_cubeIndices, BX_COUNTOF(s_cubeIndices) ); - m_hplaneMesh.load(s_hplaneVertices, BX_COUNTOF(s_hplaneVertices), PosNormalTexcoordVertex::ms_decl, s_planeIndices, BX_COUNTOF(s_planeIndices) ); - m_vplaneMesh.load(s_vplaneVertices, BX_COUNTOF(s_vplaneVertices), PosNormalTexcoordVertex::ms_decl, s_planeIndices, BX_COUNTOF(s_planeIndices) ); + m_cubeMesh.load(s_cubeVertices, BX_COUNTOF(s_cubeVertices), PosNormalTexcoordVertex::ms_layout, s_cubeIndices, BX_COUNTOF(s_cubeIndices) ); + m_hplaneMesh.load(s_hplaneVertices, BX_COUNTOF(s_hplaneVertices), PosNormalTexcoordVertex::ms_layout, s_planeIndices, BX_COUNTOF(s_planeIndices) ); + m_vplaneMesh.load(s_vplaneVertices, BX_COUNTOF(s_vplaneVertices), PosNormalTexcoordVertex::ms_layout, s_planeIndices, BX_COUNTOF(s_planeIndices) ); m_figureTex = loadTexture("textures/figure-rgba.dds"); m_flareTex = loadTexture("textures/flare.dds"); @@ -866,9 +873,8 @@ public: const bgfx::Caps* caps = bgfx::getCaps(); bx::mtxProj(m_viewState.m_proj, 60.0f, aspect, 0.1f, 100.0f, caps->homogeneousDepth); - float initialPos[3] = { 0.0f, 18.0f, -40.0f }; cameraCreate(); - cameraSetPosition(initialPos); + cameraSetPosition({ 0.0f, 18.0f, -40.0f }); cameraSetVerticalAngle(-0.35f); cameraGetViewMtx(m_viewState.m_view); @@ -994,7 +1000,7 @@ public: s_uniforms.m_time = time; // Update camera. - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); cameraGetViewMtx(m_viewState.m_view); static float lightTimeAccumulator = 0.0f; @@ -1125,18 +1131,15 @@ public: // Compute reflected matrix. float reflectMtx[16]; - float plane_pos[3] = { 0.0f, 0.01f, 0.0f }; - float normal[3] = { 0.0f, 1.0f, 0.0f }; - mtxReflected(reflectMtx, plane_pos, normal); + mtxReflected(reflectMtx, { 0.0f, 0.01f, 0.0f }, { 0.0f, 1.0f, 0.0f }); // Reflect lights. - float reflectedLights[MAX_NUM_LIGHTS][4]; for (uint8_t ii = 0; ii < numLights; ++ii) { - bx::vec3MulMtx(reflectedLights[ii], lightPosRadius[ii], reflectMtx); - reflectedLights[ii][3] = lightPosRadius[ii][3]; + bx::Vec3 reflected = bx::mul(bx::load<bx::Vec3>(lightPosRadius[ii]), reflectMtx); + bx::store(&s_uniforms.m_lightPosRadius[ii], reflected); + s_uniforms.m_lightPosRadius[ii][3] = lightPosRadius[ii][3]; } - bx::memCopy(s_uniforms.m_lightPosRadius, reflectedLights, numLights * 4*sizeof(float) ); // Reflect and submit bunny. float mtxReflectedBunny[16]; @@ -1226,11 +1229,7 @@ public: } // Ground plane. - float ground[4]; - float plane_pos[3] = { 0.0f, 0.0f, 0.0f }; - float normal[3] = { 0.0f, 1.0f, 0.0f }; - bx::memCopy(ground, normal, sizeof(float) * 3); - ground[3] = -bx::vec3Dot(plane_pos, normal) - 0.01f; // - 0.01 against z-fighting + float ground[4] = { 0.0f, 1.0f, 0.0f, -bx::dot(bx::Vec3{ 0.0f, 0.0f, 0.0f }, bx::Vec3{ 0.0f, 1.0f, 0.0f }) - 0.01f }; for (uint8_t ii = 0, viewId = RENDER_VIEWID_RANGE5_PASS_6; ii < numLights; ++ii, ++viewId) { @@ -1411,4 +1410,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleStencil, "13-stencil", "Stencil reflections and shadows."); +ENTRY_IMPLEMENT_MAIN( + ExampleStencil + , "13-stencil" + , "Stencil reflections and shadows." + , "https://bkaradzic.github.io/bgfx/examples.html#stencil" + ); diff --git a/3rdparty/bgfx/examples/13-stencil/vs_stencil_color.sc b/3rdparty/bgfx/examples/13-stencil/vs_stencil_color.sc index f67ee538ad0..16a73acbd57 100644 --- a/3rdparty/bgfx/examples/13-stencil/vs_stencil_color.sc +++ b/3rdparty/bgfx/examples/13-stencil/vs_stencil_color.sc @@ -2,7 +2,7 @@ $input a_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_lighting.sc b/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_lighting.sc index 90fdb80724b..b065317823a 100644 --- a/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_lighting.sc +++ b/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_lighting.sc @@ -3,7 +3,7 @@ $output v_normal, v_view /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_texture.sc b/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_texture.sc index a1a66624461..3b9d1a0615f 100644 --- a/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_texture.sc +++ b/3rdparty/bgfx/examples/13-stencil/vs_stencil_color_texture.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture.sc b/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture.sc index a1a66624461..3b9d1a0615f 100644 --- a/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture.sc +++ b/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture_lighting.sc b/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture_lighting.sc index 67c4aa19dee..34aa4e1f182 100644 --- a/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture_lighting.sc +++ b/3rdparty/bgfx/examples/13-stencil/vs_stencil_texture_lighting.sc @@ -3,7 +3,7 @@ $output v_normal, v_view, v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_lighting.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_lighting.sc index f99fd3d1b9f..9022fc6a3cc 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_lighting.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_lighting.sc @@ -2,7 +2,7 @@ $input v_normal, v_view /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_texture.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_texture.sc index 59ac7d32f65..a2fc3a34bd7 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_texture.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_color_texture.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackblank.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackblank.sc index 900a815eddf..0953b9117f9 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackblank.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackblank.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackcolor.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackcolor.sc index f63a607c42a..25042bd6996 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackcolor.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbackcolor.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex1.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex1.sc index a9aa7df6204..949cc128e2a 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex1.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex1.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex2.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex2.sc index 26d51bf5196..4721ee0dbda 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex2.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svbacktex2.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontblank.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontblank.sc index 9e751e05939..24992bce78a 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontblank.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontblank.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontcolor.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontcolor.sc index 2a953a219f3..b26ca27fe09 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontcolor.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfrontcolor.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex1.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex1.sc index 8440c401608..bd681b72676 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex1.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex1.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex2.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex2.sc index fff06ef1587..d6b436c22b7 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex2.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svfronttex2.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svside.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svside.sc index fa82df3afe7..699b30c6976 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svside.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svside.sc @@ -2,7 +2,7 @@ $input v_k /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsideblank.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsideblank.sc index 6026aad53dd..4d3eb758102 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsideblank.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsideblank.sc @@ -2,7 +2,7 @@ $input v_k /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidecolor.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidecolor.sc index 1832106e4df..705be6336fc 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidecolor.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidecolor.sc @@ -2,7 +2,7 @@ $input v_k /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidetex.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidetex.sc index ddc639dc3a1..6b881decaf0 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidetex.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_svsidetex.sc @@ -2,7 +2,7 @@ $input v_k /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture.sc index 098fa5b9df1..054a7d93d61 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture_lighting.sc b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture_lighting.sc index 839386e7151..1800d2ff13c 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture_lighting.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/fs_shadowvolume_texture_lighting.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/makefile b/3rdparty/bgfx/examples/14-shadowvolumes/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/makefile +++ b/3rdparty/bgfx/examples/14-shadowvolumes/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp b/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp index e3273c8d135..48828eba6a1 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp +++ b/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <string> @@ -26,7 +26,7 @@ namespace stl = tinystl; namespace bgfx { - int32_t read(bx::ReaderI* _reader, bgfx::VertexDecl& _decl, bx::Error* _err = NULL); + int32_t read(bx::ReaderI* _reader, bgfx::VertexLayout& _layout, bx::Error* _err = NULL); } namespace @@ -52,7 +52,7 @@ struct PosNormalTexcoordVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true) @@ -60,10 +60,10 @@ struct PosNormalTexcoordVertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosNormalTexcoordVertex::ms_decl; +bgfx::VertexLayout PosNormalTexcoordVertex::ms_layout; static const float s_texcoord = 50.0f; static PosNormalTexcoordVertex s_hplaneVertices[] = @@ -99,8 +99,9 @@ static bgfx::FrameBufferHandle s_stencilFb; void setViewClearMask(uint32_t _viewMask, uint8_t _flags, uint32_t _rgba, float _depth, uint8_t _stencil) { - for (uint32_t view = 0, viewMask = _viewMask, ntz = bx::uint32_cnttz(_viewMask); 0 != viewMask; viewMask >>= 1, view += 1, ntz = bx::uint32_cnttz(viewMask) ) + for (uint32_t view = 0, viewMask = _viewMask; 0 != viewMask; viewMask >>= 1, view += 1 ) { + const uint32_t ntz = bx::uint32_cnttz(viewMask); viewMask >>= ntz; view += ntz; @@ -110,8 +111,9 @@ void setViewClearMask(uint32_t _viewMask, uint8_t _flags, uint32_t _rgba, float void setViewTransformMask(uint32_t _viewMask, const void* _view, const void* _proj) { - for (uint32_t view = 0, viewMask = _viewMask, ntz = bx::uint32_cnttz(_viewMask); 0 != viewMask; viewMask >>= 1, view += 1, ntz = bx::uint32_cnttz(viewMask) ) + for (uint32_t view = 0, viewMask = _viewMask; 0 != viewMask; viewMask >>= 1, view += 1 ) { + const uint32_t ntz = bx::uint32_cnttz(viewMask); viewMask >>= ntz; view += ntz; @@ -121,8 +123,9 @@ void setViewTransformMask(uint32_t _viewMask, const void* _view, const void* _pr void setViewRectMask(uint32_t _viewMask, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height) { - for (uint32_t view = 0, viewMask = _viewMask, ntz = bx::uint32_cnttz(_viewMask); 0 != viewMask; viewMask >>= 1, view += 1, ntz = bx::uint32_cnttz(viewMask) ) + for (uint32_t view = 0, viewMask = _viewMask; 0 != viewMask; viewMask >>= 1, view += 1 ) { + const uint32_t ntz = bx::uint32_cnttz(viewMask); viewMask >>= ntz; view += ntz; @@ -130,11 +133,12 @@ void setViewRectMask(uint32_t _viewMask, uint16_t _x, uint16_t _y, uint16_t _wid } } -void mtxBillboard(float* __restrict _result - , const float* __restrict _view - , const float* __restrict _pos - , const float* __restrict _scale - ) +void mtxBillboard( + float* _result + , const float* _view + , const float* _pos + , const float* _scale + ) { _result[ 0] = _view[0] * _scale[0]; _result[ 1] = _view[4] * _scale[0]; @@ -154,27 +158,23 @@ void mtxBillboard(float* __restrict _result _result[15] = 1.0f; } -void planeNormal(float* __restrict _result - , const float* __restrict _v0 - , const float* __restrict _v1 - , const float* __restrict _v2 - ) +void planeNormal( + float* _result + , const float* _v0 + , const float* _v1 + , const float* _v2 + ) { - float vec0[3], vec1[3]; - float cross[3]; + const bx::Vec3 v0 = bx::load<bx::Vec3>(_v0); + const bx::Vec3 v1 = bx::load<bx::Vec3>(_v1); + const bx::Vec3 v2 = bx::load<bx::Vec3>(_v2); + const bx::Vec3 vec0 = bx::sub(v1, v0); + const bx::Vec3 vec1 = bx::sub(v2, v1); + const bx::Vec3 cross = bx::cross(vec0, vec1); - vec0[0] = _v1[0] - _v0[0]; - vec0[1] = _v1[1] - _v0[1]; - vec0[2] = _v1[2] - _v0[2]; + bx::store(_result, bx::normalize(cross) ); - vec1[0] = _v2[0] - _v1[0]; - vec1[1] = _v2[1] - _v1[1]; - vec1[2] = _v2[2] - _v1[2]; - - bx::vec3Cross(cross, vec0, vec1); - bx::vec3Norm(_result, cross); - - _result[3] = -bx::vec3Dot(_result, _v0); + _result[3] = -bx::dot(bx::load<bx::Vec3>(_result), bx::load<bx::Vec3>(_v0) ); } struct Uniforms @@ -548,7 +548,7 @@ void submit(bgfx::ViewId _id, bgfx::ProgramHandle _handle, int32_t _depth = 0) { bgfx::submit(_id, _handle, _depth); - // Keep track of submited view ids. + // Keep track of submitted view ids. s_viewMask |= 1 << _id; } @@ -558,37 +558,6 @@ void touch(bgfx::ViewId _id) ::submit(_id, handle); } -struct Aabb -{ - float m_min[3]; - float m_max[3]; -}; - -struct Obb -{ - float m_mtx[16]; -}; - -struct Sphere -{ - float m_center[3]; - float m_radius; -}; - -struct Primitive -{ - uint32_t m_startIndex; - uint32_t m_numIndices; - uint32_t m_startVertex; - uint32_t m_numVertices; - - Sphere m_sphere; - Aabb m_aabb; - Obb m_obb; -}; - -typedef std::vector<Primitive> PrimitiveArray; - struct Face { uint16_t m_i[3]; @@ -730,7 +699,7 @@ inline float sqLength(const float _a[3], const float _b[3]) return xx*xx + yy*yy + zz*zz; } -uint16_t weldVertices(WeldedVertex* _output, const bgfx::VertexDecl& _decl, const void* _data, uint16_t _num, float _epsilon) +uint16_t weldVertices(WeldedVertex* _output, const bgfx::VertexLayout& _layout, const void* _data, uint16_t _num, float _epsilon) { const uint32_t hashSize = bx::uint32_nextpow2(_num); const uint32_t hashMask = hashSize-1; @@ -747,14 +716,14 @@ uint16_t weldVertices(WeldedVertex* _output, const bgfx::VertexDecl& _decl, cons for (uint16_t ii = 0; ii < _num; ++ii) { float pos[4]; - vertexUnpack(pos, bgfx::Attrib::Position, _decl, _data, ii); + vertexUnpack(pos, bgfx::Attrib::Position, _layout, _data, ii); uint32_t hashValue = bx::hash<bx::HashMurmur2A>(pos, 3*sizeof(float) ) & hashMask; uint16_t offset = hashTable[hashValue]; for (; UINT16_MAX != offset; offset = next[offset]) { float test[4]; - vertexUnpack(test, bgfx::Attrib::Position, _decl, _data, _output[offset].m_v); + vertexUnpack(test, bgfx::Attrib::Position, _layout, _data, _output[offset].m_v); if (sqLength(test, pos) < epsilonSq) { @@ -795,6 +764,10 @@ struct Group m_numEdges = 0; m_edges = NULL; m_edgePlanesUnalignedPtr = NULL; + m_edgePlanes = NULL; + m_aabb={}; + m_sphere={}; + m_obb={}; m_prims.clear(); } @@ -815,9 +788,9 @@ struct Group Plane m_plane[2]; }; - void fillStructures(const bgfx::VertexDecl& _decl) + void fillStructures(const bgfx::VertexLayout& _layout) { - uint16_t stride = _decl.getStride(); + uint16_t stride = _layout.getStride(); m_faces.clear(); m_halfEdges.destroy(); @@ -835,7 +808,7 @@ struct Group //Get unique indices. WeldedVertex* uniqueVertices = (WeldedVertex*)malloc(m_numVertices*sizeof(WeldedVertex) ); - ::weldVertices(uniqueVertices, _decl, m_vertices, m_numVertices, 0.0001f); + ::weldVertices(uniqueVertices, _layout, m_vertices, m_numVertices, 0.0001f); uint16_t* uniqueIndices = (uint16_t*)malloc(m_numIndices*sizeof(uint16_t) ); for (uint32_t ii = 0; ii < m_numIndices; ++ii) { @@ -950,9 +923,9 @@ struct Group uint8_t* m_vertices; uint32_t m_numIndices; uint16_t* m_indices; - Sphere m_sphere; - Aabb m_aabb; - Obb m_obb; + bx::Sphere m_sphere; + bx::Aabb m_aabb; + bx::Obb m_obb; PrimitiveArray m_prims; uint32_t m_numEdges; Edge* m_edges; @@ -966,7 +939,7 @@ typedef std::vector<Group> GroupArray; struct Mesh { - void load(const void* _vertices, uint16_t _numVertices, const bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices) + void load(const void* _vertices, uint16_t _numVertices, const bgfx::VertexLayout _layout, const uint16_t* _indices, uint32_t _numIndices) { Group group; const bgfx::Memory* mem; @@ -974,13 +947,13 @@ struct Mesh //vertices group.m_numVertices = _numVertices; - size = _numVertices*_decl.getStride(); + size = _numVertices*_layout.getStride(); group.m_vertices = (uint8_t*)malloc(size); bx::memCopy(group.m_vertices, _vertices, size); mem = bgfx::makeRef(group.m_vertices, size); - group.m_vbh = bgfx::createVertexBuffer(mem, _decl); + group.m_vbh = bgfx::createVertexBuffer(mem, _layout); //indices group.m_numIndices = _numIndices; @@ -997,100 +970,41 @@ struct Mesh void load(const char* _filePath) { -#define BGFX_CHUNK_MAGIC_VB BX_MAKEFOURCC('V', 'B', ' ', 0x1) -#define BGFX_CHUNK_MAGIC_IB BX_MAKEFOURCC('I', 'B', ' ', 0x0) -#define BGFX_CHUNK_MAGIC_PRI BX_MAKEFOURCC('P', 'R', 'I', 0x0) + ::Mesh* mesh = ::meshLoad(_filePath, true); + m_layout = mesh->m_layout; + uint16_t stride = m_layout.getStride(); - bx::FileReaderI* reader = entry::getFileReader(); - bx::open(reader, _filePath); - - Group group; - - uint32_t chunk; - while (4 == bx::read(reader, chunk) ) + for (::GroupArray::iterator it = mesh->m_groups.begin(), itEnd = mesh->m_groups.end(); it != itEnd; ++it) { - switch (chunk) - { - case BGFX_CHUNK_MAGIC_VB: - { - bx::read(reader, group.m_sphere); - bx::read(reader, group.m_aabb); - bx::read(reader, group.m_obb); + Group group; + group.m_numVertices = it->m_numVertices; + const uint32_t vertexSize = group.m_numVertices*stride; + group.m_vertices = (uint8_t*)malloc(vertexSize); + bx::memCopy(group.m_vertices, it->m_vertices, vertexSize); - bgfx::read(reader, m_decl); - uint16_t stride = m_decl.getStride(); + const bgfx::Memory* mem = bgfx::makeRef(group.m_vertices, vertexSize); + group.m_vbh = bgfx::createVertexBuffer(mem, m_layout); - bx::read(reader, group.m_numVertices); - const uint32_t size = group.m_numVertices*stride; - group.m_vertices = (uint8_t*)malloc(size); - bx::read(reader, group.m_vertices, size); + group.m_numIndices = it->m_numIndices; + const uint32_t indexSize = 2 * group.m_numIndices; + group.m_indices = (uint16_t*)malloc(indexSize); + bx::memCopy(group.m_indices, it->m_indices, indexSize); - const bgfx::Memory* mem = bgfx::makeRef(group.m_vertices, size); - group.m_vbh = bgfx::createVertexBuffer(mem, m_decl); - } - break; - - case BGFX_CHUNK_MAGIC_IB: - { - bx::read(reader, group.m_numIndices); - const uint32_t size = group.m_numIndices*2; - group.m_indices = (uint16_t*)malloc(size); - bx::read(reader, group.m_indices, size); - - const bgfx::Memory* mem = bgfx::makeRef(group.m_indices, size); - group.m_ibh = bgfx::createIndexBuffer(mem); - } - break; - - case BGFX_CHUNK_MAGIC_PRI: - { - uint16_t len; - bx::read(reader, len); + mem = bgfx::makeRef(group.m_indices, indexSize); + group.m_ibh = bgfx::createIndexBuffer(mem); - std::string material; - material.resize(len); - bx::read(reader, const_cast<char*>(material.c_str() ), len); + group.m_sphere = it->m_sphere; + group.m_aabb = it->m_aabb; + group.m_obb = it->m_obb; + group.m_prims = it->m_prims; - uint16_t num; - bx::read(reader, num); - - for (uint32_t ii = 0; ii < num; ++ii) - { - bx::read(reader, len); - - std::string name; - name.resize(len); - bx::read(reader, const_cast<char*>(name.c_str() ), len); - - Primitive prim; - bx::read(reader, prim.m_startIndex); - bx::read(reader, prim.m_numIndices); - bx::read(reader, prim.m_startVertex); - bx::read(reader, prim.m_numVertices); - bx::read(reader, prim.m_sphere); - bx::read(reader, prim.m_aabb); - bx::read(reader, prim.m_obb); - - group.m_prims.push_back(prim); - } - - m_groups.push_back(group); - group.reset(); - } - break; - - default: - DBG("%08x at %d", chunk, bx::seek(reader) ); - abort(); - break; - } + m_groups.push_back(group); } - - bx::close(reader); + ::meshUnload(mesh); for (GroupArray::iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) { - it->fillStructures(m_decl); + it->fillStructures(m_layout); } } @@ -1103,7 +1017,7 @@ struct Mesh m_groups.clear(); } - bgfx::VertexDecl m_decl; + bgfx::VertexLayout m_layout; GroupArray m_groups; }; @@ -1115,9 +1029,9 @@ struct Model m_texture.idx = bgfx::kInvalidHandle; } - void load(const void* _vertices, uint16_t _numVertices, const bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices) + void load(const void* _vertices, uint16_t _numVertices, const bgfx::VertexLayout _layout, const uint16_t* _indices, uint32_t _numIndices) { - m_mesh.load(_vertices, _numVertices, _decl, _indices, _numIndices); + m_mesh.load(_vertices, _numVertices, _layout, _indices, _numIndices); } void load(const char* _meshFilePath) @@ -1157,7 +1071,6 @@ struct Model ::setRenderState(_renderState); // Submit - BX_CHECK(bgfx::kInvalidHandle != m_program, "Error, program is not set."); ::submit(_viewId, m_program); } } @@ -1194,7 +1107,7 @@ struct Instance , m_pos[2] ); - BX_CHECK(NULL != m_model, "Instance model cannot be NULL!"); + BX_ASSERT(NULL != m_model, "Instance model cannot be NULL!"); m_model->submit(_viewId, mtx, _renderState); } @@ -1230,7 +1143,7 @@ struct ShadowVolumeAllocator { void* ret = (void*)m_ptr; m_ptr += _size; - BX_CHECK(m_ptr - m_mem < (m_firstPage ? SV_PAGE_SIZE : 2 * SV_PAGE_SIZE), "Buffer overflow!"); + BX_ASSERT(m_ptr - m_mem < (m_firstPage ? SV_PAGE_SIZE : 2 * SV_PAGE_SIZE), "Buffer overflow!"); return ret; } @@ -1280,12 +1193,13 @@ struct ShadowVolume bool m_cap; }; -void shadowVolumeLightTransform(float* __restrict _outLightPos - , const float* __restrict _scale - , const float* __restrict _rotate - , const float* __restrict _translate - , const float* __restrict _lightPos // world pos - ) +void shadowVolumeLightTransform( + float* _outLightPos + , const float* _scale + , const float* _rotate + , const float* _translate + , const float* _lightPos // world pos + ) { /** * Instead of transforming all the vertices, transform light instead: @@ -1320,19 +1234,19 @@ void shadowVolumeLightTransform(float* __restrict _outLightPos float mtx[16]; bx::mtxMul(mtx, tmp0, invScale); - float origin[3] = { 0.0f, 0.0f, 0.0f }; - bx::vec3MulMtx(_outLightPos, origin, mtx); + bx::store(_outLightPos, bx::mul({ 0.0f, 0.0f, 0.0f }, mtx) ); } -void shadowVolumeCreate(ShadowVolume& _shadowVolume - , Group& _group - , uint16_t _stride - , const float* _mtx - , const float* _light // in model space - , ShadowVolumeImpl::Enum _impl = ShadowVolumeImpl::DepthPass - , ShadowVolumeAlgorithm::Enum _algo = ShadowVolumeAlgorithm::FaceBased - , bool _textureAsStencil = false - ) +void shadowVolumeCreate( + ShadowVolume& _shadowVolume + , Group& _group + , uint16_t _stride + , const float* _mtx + , const float* _light // in model space + , ShadowVolumeImpl::Enum _impl = ShadowVolumeImpl::DepthPass + , ShadowVolumeAlgorithm::Enum _algo = ShadowVolumeAlgorithm::FaceBased + , bool _textureAsStencil = false + ) { const uint8_t* vertices = _group.m_vertices; const FaceArray& faces = _group.m_faces; @@ -1386,7 +1300,7 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume const Face& face = *iter; bool frontFacing = false; - float f = bx::vec3Dot(face.m_plane, _light) + face.m_plane[3]; + const float f = bx::dot(bx::load<bx::Vec3>(face.m_plane), bx::load<bx::Vec3>(_light) ) + face.m_plane[3]; if (f > 0.0f) { frontFacing = true; @@ -1574,8 +1488,8 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume const Edge& edge = edges[ii]; const Plane* edgePlane = &edgePlanes[ii*2]; - int16_t s0 = ( (vec3Dot(edgePlane[0].m_plane, _light) + edgePlane[0].m_plane[3]) > 0.0f) ^ edge.m_faceReverseOrder[0]; - int16_t s1 = ( (vec3Dot(edgePlane[1].m_plane, _light) + edgePlane[1].m_plane[3]) > 0.0f) ^ edge.m_faceReverseOrder[1]; + int16_t s0 = ( (bx::dot(bx::load<bx::Vec3>(edgePlane[0].m_plane), bx::load<bx::Vec3>(_light) ) + edgePlane[0].m_plane[3]) > 0.0f) ^ edge.m_faceReverseOrder[0]; + int16_t s1 = ( (bx::dot(bx::load<bx::Vec3>(edgePlane[1].m_plane), bx::load<bx::Vec3>(_light) ) + edgePlane[1].m_plane[3]) > 0.0f) ^ edge.m_faceReverseOrder[1]; int16_t kk = ( (s0 + s1) << 1) - 2; if (kk != 0) @@ -1612,7 +1526,7 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume { const Face& face = *iter; - float f = bx::vec3Dot(face.m_plane, _light) + face.m_plane[3]; + const float f = bx::dot(bx::load<bx::Vec3>(face.m_plane), bx::load<bx::Vec3>(_light) ) + face.m_plane[3]; bool frontFacing = (f > 0.0f); for (uint8_t ii = 0, num = 1 + uint8_t(!_textureAsStencil); ii < num; ++ii) @@ -1634,8 +1548,8 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume } } - bgfx::VertexDecl decl; - decl.begin() + bgfx::VertexLayout layout; + layout.begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) .end(); @@ -1654,7 +1568,7 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume uint32_t isize = sideI * sizeof(uint16_t); mem = bgfx::makeRef(verticesSide, vsize); - _shadowVolume.m_vbSides = bgfx::createVertexBuffer(mem, decl); + _shadowVolume.m_vbSides = bgfx::createVertexBuffer(mem, layout); mem = bgfx::makeRef(indicesSide, isize); _shadowVolume.m_ibSides = bgfx::createIndexBuffer(mem); @@ -1684,13 +1598,14 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume } } -void createNearClipVolume(float* __restrict _outPlanes24f - , float* __restrict _lightPos - , float* __restrict _view - , float _fovy - , float _aspect - , float _near - ) +void createNearClipVolume( + float* _outPlanes24f + , float* _lightPos + , float* _view + , float _fovy + , float _aspect + , float _near + ) { float (*volumePlanes)[4] = (float(*)[4])_outPlanes24f; @@ -1704,60 +1619,44 @@ void createNearClipVolume(float* __restrict _outPlanes24f const float delta = 0.1f; - float nearNormal[4] = { 0.0f, 0.0f, 1.0f, _near }; - float d = bx::vec3Dot(lightPosV, nearNormal) + lightPosV[3] * nearNormal[3]; + const float nearNormal[4] = { 0.0f, 0.0f, 1.0f, _near }; + const float d = bx::dot(bx::load<bx::Vec3>(lightPosV), bx::load<bx::Vec3>(nearNormal) ) + lightPosV[3] * nearNormal[3]; // Light is: // 1.0f - in front of near plane // 0.0f - on the near plane // -1.0f - behind near plane - float lightSide = float( (d > delta) - (d < -delta) ); + const float lightSide = float( (d > delta) - (d < -delta) ); - float t = bx::tan(bx::toRad(_fovy)*0.5f) * _near; - float b = -t; - float r = t * _aspect; - float l = -r; + const float t = bx::tan(bx::toRad(_fovy)*0.5f) * _near; + const float b = -t; + const float r = t * _aspect; + const float l = -r; - float cornersV[4][3] = + const bx::Vec3 corners[4] = { - { r, t, _near }, - { l, t, _near }, - { l, b, _near }, - { r, b, _near }, + bx::mul({ r, t, _near }, mtxViewInv), + bx::mul({ l, t, _near }, mtxViewInv), + bx::mul({ l, b, _near }, mtxViewInv), + bx::mul({ r, b, _near }, mtxViewInv), }; - float corners[4][3]; - bx::vec3MulMtx(corners[0], cornersV[0], mtxViewInv); - bx::vec3MulMtx(corners[1], cornersV[1], mtxViewInv); - bx::vec3MulMtx(corners[2], cornersV[2], mtxViewInv); - bx::vec3MulMtx(corners[3], cornersV[3], mtxViewInv); - float planeNormals[4][3]; for (uint8_t ii = 0; ii < 4; ++ii) { - float* normal = planeNormals[ii]; - float* plane = volumePlanes[ii]; - - float planeVec[3]; - bx::vec3Sub(planeVec, corners[ii], corners[(ii-1)&3]); - - float light[3]; - float tmp[3]; - bx::vec3Mul(tmp, corners[ii], _lightPos[3]); - bx::vec3Sub(light, _lightPos, tmp); - - bx::vec3Cross(normal, planeVec, light); + float* outNormal = planeNormals[ii]; + float* outPlane = volumePlanes[ii]; - normal[0] *= lightSide; - normal[1] *= lightSide; - normal[2] *= lightSide; + const bx::Vec3 c0 = corners[ii]; + const bx::Vec3 planeVec = bx::sub(c0, corners[(ii-1)&3]); + const bx::Vec3 light = bx::sub(bx::load<bx::Vec3>(_lightPos), bx::mul(c0, _lightPos[3]) ); + const bx::Vec3 normal = bx::mul(bx::cross(planeVec, light), lightSide); - float lenInv = 1.0f / bx::sqrt(bx::vec3Dot(normal, normal) ); + const float invLen = 1.0f / bx::sqrt(bx::dot(normal, normal) ); - plane[0] = normal[0] * lenInv; - plane[1] = normal[1] * lenInv; - plane[2] = normal[2] * lenInv; - plane[3] = -bx::vec3Dot(normal, corners[ii]) * lenInv; + bx::store(outNormal, normal); + bx::store(outPlane, bx::mul(normal, invLen) ); + outPlane[3] = -bx::dot(normal, c0) * invLen; } float nearPlaneV[4] = @@ -1770,17 +1669,14 @@ void createNearClipVolume(float* __restrict _outPlanes24f bx::vec4MulMtx(volumePlanes[4], nearPlaneV, mtxViewTrans); float* lightPlane = volumePlanes[5]; - float lightPlaneNormal[3] = { 0.0f, 0.0f, -_near * lightSide }; - float tmp[3]; - bx::vec3MulMtx(tmp, lightPlaneNormal, mtxViewInv); - bx::vec3Sub(lightPlaneNormal, tmp, _lightPos); + const bx::Vec3 lightPlaneNormal = bx::sub(bx::mul({ 0.0f, 0.0f, -_near * lightSide }, mtxViewInv), bx::load<bx::Vec3>(_lightPos) ); - float lenInv = 1.0f / bx::sqrt(bx::vec3Dot(lightPlaneNormal, lightPlaneNormal) ); + float lenInv = 1.0f / bx::sqrt(bx::dot(lightPlaneNormal, lightPlaneNormal) ); - lightPlane[0] = lightPlaneNormal[0] * lenInv; - lightPlane[1] = lightPlaneNormal[1] * lenInv; - lightPlane[2] = lightPlaneNormal[2] * lenInv; - lightPlane[3] = -bx::vec3Dot(lightPlaneNormal, _lightPos) * lenInv; + lightPlane[0] = lightPlaneNormal.x * lenInv; + lightPlane[1] = lightPlaneNormal.y * lenInv; + lightPlane[2] = lightPlaneNormal.z * lenInv; + lightPlane[3] = -bx::dot(lightPlaneNormal, bx::load<bx::Vec3>(_lightPos) ) * lenInv; } bool clipTest(const float* _planes, uint8_t _planeNum, const Mesh& _mesh, const float* _scale, const float* _translate) @@ -1793,18 +1689,18 @@ bool clipTest(const float* _planes, uint8_t _planeNum, const Mesh& _mesh, const { const Group& group = *it; - Sphere sphere = group.m_sphere; - sphere.m_center[0] = sphere.m_center[0] * scale + _translate[0]; - sphere.m_center[1] = sphere.m_center[1] * scale + _translate[1]; - sphere.m_center[2] = sphere.m_center[2] * scale + _translate[2]; - sphere.m_radius *= (scale+0.4f); + bx::Sphere sphere = group.m_sphere; + sphere.center.x = sphere.center.x * scale + _translate[0]; + sphere.center.y = sphere.center.y * scale + _translate[1]; + sphere.center.z = sphere.center.z * scale + _translate[2]; + sphere.radius *= (scale+0.4f); bool isInside = true; for (uint8_t ii = 0; ii < _planeNum; ++ii) { const float* plane = volumePlanes[ii]; - float positiveSide = bx::vec3Dot(plane, sphere.m_center) + plane[3] + sphere.m_radius; + float positiveSide = bx::dot(bx::load<bx::Vec3>(plane), sphere.center ) + plane[3] + sphere.radius; if (positiveSide < 0.0f) { @@ -1870,8 +1766,8 @@ enum Scene class ExampleShadowVolumes : public entry::AppI { public: - ExampleShadowVolumes(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleShadowVolumes(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -1888,6 +1784,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_viewState.m_width; init.resolution.height = m_viewState.m_height; init.resolution.reset = m_reset; @@ -1919,8 +1818,8 @@ public: s_stencilFb = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); - s_texStencil = bgfx::createUniform("s_texStencil", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + s_texStencil = bgfx::createUniform("s_texStencil", bgfx::UniformType::Sampler); m_programTextureLighting = loadProgram("vs_shadowvolume_texture_lighting", "fs_shadowvolume_texture_lighting"); m_programColorLighting = loadProgram("vs_shadowvolume_color_lighting", "fs_shadowvolume_color_lighting" ); @@ -1969,7 +1868,7 @@ public: m_hplaneFieldModel.load(s_hplaneVertices , BX_COUNTOF(s_hplaneVertices) - , PosNormalTexcoordVertex::ms_decl + , PosNormalTexcoordVertex::ms_layout , s_planeIndices , BX_COUNTOF(s_planeIndices) ); @@ -1978,7 +1877,7 @@ public: m_hplaneFigureModel.load(s_hplaneVertices , BX_COUNTOF(s_hplaneVertices) - , PosNormalTexcoordVertex::ms_decl + , PosNormalTexcoordVertex::ms_layout , s_planeIndices , BX_COUNTOF(s_planeIndices) ); @@ -1987,7 +1886,7 @@ public: m_vplaneModel.load(s_vplaneVertices , BX_COUNTOF(s_vplaneVertices) - , PosNormalTexcoordVertex::ms_decl + , PosNormalTexcoordVertex::ms_layout , s_planeIndices , BX_COUNTOF(s_planeIndices) ); @@ -2040,8 +1939,7 @@ public: // Set view matrix cameraCreate(); - float initialPos[3] = { 3.0f, 20.0f, -58.0f }; - cameraSetPosition(initialPos); + cameraSetPosition({ 3.0f, 20.0f, -58.0f }); cameraSetVerticalAngle(-0.25f); cameraGetViewMtx(m_viewState.m_view); } @@ -2135,7 +2033,7 @@ public: s_uniforms.m_time = time; // Update camera. - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); // Set view and projection matrix for view 0. { @@ -2711,7 +2609,7 @@ public: ); GroupArray& groups = model->m_mesh.m_groups; - const uint16_t stride = model->m_mesh.m_decl.getStride(); + const uint16_t stride = model->m_mesh.m_layout.getStride(); for (GroupArray::iterator it = groups.begin(), itEnd = groups.end(); it != itEnd; ++it) { Group& group = *it; @@ -2945,4 +2843,8 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleShadowVolumes, "14-shadowvolumes", "Shadow volumes."); +ENTRY_IMPLEMENT_MAIN( + ExampleShadowVolumes + , "14-shadowvolumes" + , "Shadow volumes." + , "https://bkaradzic.github.io/bgfx/examples.html#shadowvolumes"); diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_lighting.sc b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_lighting.sc index a3d9e13fb54..f316b451522 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_lighting.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_lighting.sc @@ -3,7 +3,7 @@ $output v_normal, v_view /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_texture.sc b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_texture.sc index 8eff5b40da6..8c7389354f2 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_texture.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_color_texture.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svback.sc b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svback.sc index 4c14bf02c48..7e8ee9a7f52 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svback.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svback.sc @@ -2,7 +2,7 @@ $input a_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svfront.sc b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svfront.sc index b7e0d2a17c3..973453d20d8 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svfront.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svfront.sc @@ -2,7 +2,7 @@ $input a_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svside.sc b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svside.sc index 8c20a9e71a3..d892ec92213 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svside.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_svside.sc @@ -3,7 +3,7 @@ $output v_k /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture.sc b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture.sc index 77034144062..6f2477d4ee4 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture_lighting.sc b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture_lighting.sc index f7538d40e40..acb1ede17d5 100644 --- a/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture_lighting.sc +++ b/3rdparty/bgfx/examples/14-shadowvolumes/vs_shadowvolume_texture_lighting.sc @@ -3,7 +3,7 @@ $output v_normal, v_view, v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh.sc index 9b95176bb1a..0dde6025423 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh.sc +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh.sc @@ -2,7 +2,7 @@ $input v_view, v_normal, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh_pd.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh_pd.sc index 67729e52514..bf570e2c37c 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh_pd.sc +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_mesh_pd.sc @@ -2,7 +2,7 @@ $input v_view, v_normal, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc index 3cdf1973f2e..ad2ccf5ec37 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sh b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sh index 979ff7c1e74..24e5c37011b 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sh +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sh @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc index 2a046f7317c..3e8c635c12f 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc @@ -2,7 +2,7 @@ $input v_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/makefile b/3rdparty/bgfx/examples/15-shadowmaps-simple/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/makefile +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/shadowmaps_simple.cpp b/3rdparty/bgfx/examples/15-shadowmaps-simple/shadowmaps_simple.cpp index b42b4a6f819..bfd4a75a0be 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/shadowmaps_simple.cpp +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/shadowmaps_simple.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <string> @@ -32,17 +32,17 @@ struct PosNormalVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosNormalVertex::ms_decl; +bgfx::VertexLayout PosNormalVertex::ms_layout; static PosNormalVertex s_hplaneVertices[] = { @@ -61,8 +61,8 @@ static const uint16_t s_planeIndices[] = class ExampleShadowmapsSimple : public entry::AppI { public: - ExampleShadowmapsSimple(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleShadowmapsSimple(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -78,6 +78,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -87,7 +90,7 @@ public: bgfx::setDebug(m_debug); // Uniforms. - s_shadowMap = bgfx::createUniform("s_shadowMap", bgfx::UniformType::Int1); + s_shadowMap = bgfx::createUniform("s_shadowMap", bgfx::UniformType::Sampler); u_lightPos = bgfx::createUniform("u_lightPos", bgfx::UniformType::Vec4); u_lightMtx = bgfx::createUniform("u_lightMtx", bgfx::UniformType::Mat4); @@ -106,6 +109,8 @@ public: } bgfx::setUniform(u_depthScaleOffset, depthScaleOffset); + bgfx::touch(0); + // Create vertex stream declaration. PosNormalVertex::init(); @@ -116,7 +121,7 @@ public: m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_hplaneVertices, sizeof(s_hplaneVertices) ) - , PosNormalVertex::ms_decl + , PosNormalVertex::ms_layout ); m_ibh = bgfx::createIndexBuffer( @@ -129,67 +134,14 @@ public: // Shadow samplers are supported at least partially supported if texture // compare less equal feature is supported. m_shadowSamplerSupported = 0 != (caps->supported & BGFX_CAPS_TEXTURE_COMPARE_LEQUAL); + m_useShadowSampler = m_shadowSamplerSupported; - bgfx::TextureHandle shadowMapTexture; - - if (m_shadowSamplerSupported) - { - // Depth textures and shadow samplers are supported. - m_progShadow = loadProgram("vs_sms_shadow", "fs_sms_shadow"); - m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh"); - - bgfx::TextureHandle fbtextures[] = - { - bgfx::createTexture2D( - m_shadowMapSize - , m_shadowMapSize - , false - , 1 - , bgfx::TextureFormat::D16 - , BGFX_TEXTURE_RT | BGFX_SAMPLER_COMPARE_LEQUAL - ), - }; - shadowMapTexture = fbtextures[0]; - m_shadowMapFB = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); - } - else - { - // Depth textures and shadow samplers are not supported. Use float - // depth packing into color buffer instead. - m_progShadow = loadProgram("vs_sms_shadow_pd", "fs_sms_shadow_pd"); - m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh_pd"); - - bgfx::TextureHandle fbtextures[] = - { - bgfx::createTexture2D( - m_shadowMapSize - , m_shadowMapSize - , false - , 1 - , bgfx::TextureFormat::BGRA8 - , BGFX_TEXTURE_RT - ), - bgfx::createTexture2D( - m_shadowMapSize - , m_shadowMapSize - , false - , 1 - , bgfx::TextureFormat::D16 - , BGFX_TEXTURE_RT_WRITE_ONLY - ), - }; - shadowMapTexture = fbtextures[0]; - m_shadowMapFB = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); - } + m_shadowMapFB = BGFX_INVALID_HANDLE; + m_progShadow = BGFX_INVALID_HANDLE; + m_progMesh = BGFX_INVALID_HANDLE; m_state[0] = meshStateCreate(); - m_state[0]->m_state = 0 - | (m_shadowSamplerSupported ? 0 : BGFX_STATE_WRITE_RGB|BGFX_STATE_WRITE_A) - | BGFX_STATE_WRITE_Z - | BGFX_STATE_DEPTH_TEST_LESS - | BGFX_STATE_CULL_CCW - | BGFX_STATE_MSAA - ; + m_state[0]->m_state = 0; m_state[0]->m_program = m_progShadow; m_state[0]->m_viewId = RENDER_SHADOW_PASS_ID; m_state[0]->m_numTextures = 0; @@ -209,7 +161,7 @@ public: m_state[1]->m_textures[0].m_flags = UINT32_MAX; m_state[1]->m_textures[0].m_stage = 0; m_state[1]->m_textures[0].m_sampler = s_shadowMap; - m_state[1]->m_textures[0].m_texture = shadowMapTexture; + m_state[1]->m_textures[0].m_texture = BGFX_INVALID_HANDLE; // Set view and projection matrices. @@ -271,12 +223,122 @@ public: showExampleDialog(this); + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 2.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + bool shadowSamplerModeChanged = false; + if (m_shadowSamplerSupported) + { + shadowSamplerModeChanged = ImGui::Checkbox("Use Shadow Sampler", &m_useShadowSampler); + } + else + { + ImGui::Text("Shadow sampler is not supported"); + } + + ImGui::End(); + imguiEndFrame(); int64_t now = bx::getHPCounter(); const double freq = double(bx::getHPFrequency() ); float time = float( (now-m_timeOffset)/freq); + if (!bgfx::isValid(m_shadowMapFB) + || shadowSamplerModeChanged) + { + bgfx::TextureHandle shadowMapTexture = BGFX_INVALID_HANDLE; + + if (bgfx::isValid(m_progShadow) ) + { + bgfx::destroy(m_progShadow); + } + + if (bgfx::isValid(m_progMesh) ) + { + bgfx::destroy(m_progMesh); + } + + if (bgfx::isValid(m_shadowMapFB) ) + { + bgfx::destroy(m_shadowMapFB); + } + + if (m_useShadowSampler) + { + // Depth textures and shadow samplers are supported. + m_progShadow = loadProgram("vs_sms_shadow", "fs_sms_shadow"); + m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh"); + + bgfx::TextureHandle fbtextures[] = + { + bgfx::createTexture2D( + m_shadowMapSize + , m_shadowMapSize + , false + , 1 + , bgfx::TextureFormat::D16 + , BGFX_TEXTURE_RT | BGFX_SAMPLER_COMPARE_LEQUAL + ), + }; + + shadowMapTexture = fbtextures[0]; + m_shadowMapFB = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); + } + else + { + // Depth textures and shadow samplers are not supported. Use float + // depth packing into color buffer instead. + m_progShadow = loadProgram("vs_sms_shadow_pd", "fs_sms_shadow_pd"); + m_progMesh = loadProgram("vs_sms_mesh", "fs_sms_mesh_pd"); + + bgfx::TextureHandle fbtextures[] = + { + bgfx::createTexture2D( + m_shadowMapSize + , m_shadowMapSize + , false + , 1 + , bgfx::TextureFormat::BGRA8 + , BGFX_TEXTURE_RT + ), + bgfx::createTexture2D( + m_shadowMapSize + , m_shadowMapSize + , false + , 1 + , bgfx::TextureFormat::D16 + , BGFX_TEXTURE_RT_WRITE_ONLY + ), + }; + + shadowMapTexture = fbtextures[0]; + m_shadowMapFB = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); + } + + m_state[0]->m_program = m_progShadow; + m_state[0]->m_state = 0 + | (m_useShadowSampler ? 0 : BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A) + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + | BGFX_STATE_CULL_CCW + | BGFX_STATE_MSAA + ; + + m_state[1]->m_program = m_progMesh; + m_state[1]->m_textures[0].m_texture = shadowMapTexture; + } + // Setup lights. float lightPos[4]; lightPos[0] = -bx::cos(time); @@ -444,6 +506,7 @@ public: bgfx::FrameBufferHandle m_shadowMapFB; bool m_shadowSamplerSupported; + bool m_useShadowSampler; MeshState* m_state[2]; @@ -455,4 +518,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleShadowmapsSimple, "15-shadowmaps-simple", "Shadow maps example"); +ENTRY_IMPLEMENT_MAIN( + ExampleShadowmapsSimple + , "15-shadowmaps-simple" + , "Shadow maps example" + , "https://bkaradzic.github.io/bgfx/examples.html#shadowmaps-simple" + ); diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_mesh.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_mesh.sc index 0f28baa3023..5b78f844080 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_mesh.sc +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_mesh.sc @@ -3,7 +3,7 @@ $output v_view, v_normal, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow.sc index a606797f019..a303feb1370 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow.sc +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow.sc @@ -2,7 +2,7 @@ $input a_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow_pd.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow_pd.sc index 8d55a99f223..fa041ba1ffc 100644 --- a/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow_pd.sc +++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/vs_sms_shadow_pd.sc @@ -3,7 +3,7 @@ $output v_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/common.sh b/3rdparty/bgfx/examples/16-shadowmaps/common.sh index b10ae6b235d..50244a711a2 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/common.sh +++ b/3rdparty/bgfx/examples/16-shadowmaps/common.sh @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_black.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_black.sc index 975df704e73..d754dccfd53 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_black.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_black.sc @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting.sh b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting.sh index c3518048463..b0da55ba864 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting.sh +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting.sh @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm.sc index ef77eb9e92a..df310cabca3 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_ESM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_csm.sc index 8e76e954703..c80fa2043af 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_ESM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear.sc index fb2aa8a1bb4..c01989d7a17 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_ESM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_csm.sc index 151df7e9256..5e7fa74c324 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_ESM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_omni.sc index 5783899b250..af9b9602952 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_linear_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_ESM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_omni.sc index 290073ca9af..5481bb62d1f 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_esm_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_ESM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard.sc index 24416afebf4..0c9151fff54 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_HARD 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_csm.sc index e0f9a42f012..1746772a78e 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_HARD 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear.sc index a10a029e9b4..f575157e09a 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_HARD 1 #define SM_LINEAR 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_csm.sc index 8953a846705..97e0b48039e 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_HARD 1 #define SM_LINEAR 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_omni.sc index bc0bf100be7..5998a67e7e3 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_linear_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_HARD 1 #define SM_LINEAR 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_omni.sc index ecd61676072..9aa6991072f 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_hard_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_HARD 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf.sc index 0321b878e3a..1bea3bfc80e 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_PCF 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_csm.sc index 4a55291719e..4b58b0ced89 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_PCF 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear.sc index c56dc7c191b..f78d7e0a5c5 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_PCF 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_csm.sc index 55b52aca40c..85448d13981 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_PCF 1 #define SM_LINEAR 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_omni.sc index f3ac095fe26..e9b38f2ddf1 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_linear_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_PCF 1 #define SM_LINEAR 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_omni.sc index 533b36c7e89..21db24a7980 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_pcf_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_PCF 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm.sc index 5a6237bf85f..611cd3cf252 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_VSM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_csm.sc index 7b0ff7744c6..dce977badb4 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_VSM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear.sc index a20ba6011a0..0b430b61583 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear.sc @@ -2,7 +2,7 @@ $input v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_VSM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_csm.sc index 3bfd00e7e64..3e98273aa60 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_csm.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_VSM 1 #define SM_LINEAR 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_omni.sc index d416655b18e..15eff7b81e5 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_linear_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_VSM 1 #define SM_LINEAR 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_omni.sc index db60831e78d..fcb7f4ad71f 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_lighting_vsm_omni.sc @@ -2,7 +2,7 @@ $input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_te /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #define SM_VSM 1 diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_texture.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_texture.sc index c53591a8fab..b05d59d2552 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_texture.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_color_texture.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur.sc index 7b40dd2faf3..82495a7a0e1 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur.sc @@ -2,7 +2,7 @@ $input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur_vsm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur_vsm.sc index e06c17dd0ef..aa10a96c06f 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur_vsm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_hblur_vsm.sc @@ -2,7 +2,7 @@ $input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth.sc index 04d5896c81d..daab62b23b0 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth.sc @@ -2,7 +2,7 @@ $input v_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_linear.sc index f049736d090..19b63b1b9d9 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_linear.sc @@ -2,7 +2,7 @@ $input v_depth /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm.sc index 2b0906c6582..975bbfbed28 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm.sc @@ -2,7 +2,7 @@ $input v_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm_linear.sc index 9a25941e369..375dbefc81d 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm_linear.sc @@ -2,7 +2,7 @@ $input v_depth /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_texture.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_texture.sc index 098fa5b9df1..054a7d93d61 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_texture.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_texture.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth.sc index de62bdf3618..5c9ca592b7a 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth_vsm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth_vsm.sc index 8c2051012ea..03addc40a23 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth_vsm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_unpackdepth_vsm.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur.sc index 7b40dd2faf3..82495a7a0e1 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur.sc @@ -2,7 +2,7 @@ $input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur_vsm.sc b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur_vsm.sc index e06c17dd0ef..aa10a96c06f 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur_vsm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/fs_shadowmaps_vblur_vsm.sc @@ -2,7 +2,7 @@ $input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/makefile b/3rdparty/bgfx/examples/16-shadowmaps/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/makefile +++ b/3rdparty/bgfx/examples/16-shadowmaps/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/16-shadowmaps/shadowmaps.cpp b/3rdparty/bgfx/examples/16-shadowmaps/shadowmaps.cpp index 4c9a020604a..e85f6dfab81 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/shadowmaps.cpp +++ b/3rdparty/bgfx/examples/16-shadowmaps/shadowmaps.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <string> @@ -16,11 +16,12 @@ #include <bx/file.h> #include "entry/entry.h" #include "camera.h" +#include "bgfx_utils.h" #include "imgui/imgui.h" namespace bgfx { - int32_t read(bx::ReaderI* _reader, bgfx::VertexDecl& _decl, bx::Error* _err = NULL); + int32_t read(bx::ReaderI* _reader, bgfx::VertexLayout& _layout, bx::Error* _err = NULL); } namespace @@ -184,10 +185,12 @@ static bgfx::UniformHandle s_shadowMap[ShadowMapRenderTargets::Count]; static bgfx::FrameBufferHandle s_rtShadowMap[ShadowMapRenderTargets::Count]; static bgfx::FrameBufferHandle s_rtBlur; -void mtxBillboard(float* __restrict _result - , const float* __restrict _view - , const float* __restrict _pos - , const float* __restrict _scale) +void mtxBillboard( + float* _result + , const float* _view + , const float* _pos + , const float* _scale + ) { _result[ 0] = _view[0] * _scale[0]; _result[ 1] = _view[4] * _scale[0]; @@ -207,7 +210,7 @@ void mtxBillboard(float* __restrict _result _result[15] = 1.0f; } -void mtxYawPitchRoll(float* __restrict _result +void mtxYawPitchRoll(float* _result , float _yaw , float _pitch , float _roll @@ -757,183 +760,35 @@ struct ClearValues uint8_t m_clearStencil; }; -struct Aabb -{ - float m_min[3]; - float m_max[3]; -}; - -struct Obb +struct Mesh : public ::Mesh { - float m_mtx[16]; -}; - -struct Sphere -{ - float m_center[3]; - float m_radius; -}; - -struct Primitive -{ - uint32_t m_startIndex; - uint32_t m_numIndices; - uint32_t m_startVertex; - uint32_t m_numVertices; - - Sphere m_sphere; - Aabb m_aabb; - Obb m_obb; -}; - -typedef std::vector<Primitive> PrimitiveArray; - -struct Group -{ - Group() + void load(const char* _filePath, bool _ramcopy = false) { - reset(); - } - - void reset() - { - m_vbh.idx = bgfx::kInvalidHandle; - m_ibh.idx = bgfx::kInvalidHandle; - m_prims.clear(); + bx::FileReaderI* reader = entry::getFileReader(); + if (bx::open(reader, _filePath)) + { + ::Mesh::load(reader, _ramcopy); + bx::close(reader); + } } - bgfx::VertexBufferHandle m_vbh; - bgfx::IndexBufferHandle m_ibh; - Sphere m_sphere; - Aabb m_aabb; - Obb m_obb; - PrimitiveArray m_prims; -}; - -struct Mesh -{ - void load(const void* _vertices, uint32_t _numVertices, const bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices) + void load(const void* _vertices, uint32_t _numVertices, const bgfx::VertexLayout _layout, const uint16_t* _indices, uint32_t _numIndices) { Group group; const bgfx::Memory* mem; uint32_t size; - size = _numVertices*_decl.getStride(); + size = _numVertices * _layout.getStride(); mem = bgfx::makeRef(_vertices, size); - group.m_vbh = bgfx::createVertexBuffer(mem, _decl); + group.m_vbh = bgfx::createVertexBuffer(mem, _layout); - size = _numIndices*2; + size = _numIndices * 2; mem = bgfx::makeRef(_indices, size); group.m_ibh = bgfx::createIndexBuffer(mem); m_groups.push_back(group); } - void load(const char* _filePath) - { -#define BGFX_CHUNK_MAGIC_VB BX_MAKEFOURCC('V', 'B', ' ', 0x1) -#define BGFX_CHUNK_MAGIC_IB BX_MAKEFOURCC('I', 'B', ' ', 0x0) -#define BGFX_CHUNK_MAGIC_PRI BX_MAKEFOURCC('P', 'R', 'I', 0x0) - - bx::FileReaderI* reader = entry::getFileReader(); - bx::open(reader, _filePath); - - Group group; - - uint32_t chunk; - while (4 == bx::read(reader, chunk) ) - { - switch (chunk) - { - case BGFX_CHUNK_MAGIC_VB: - { - bx::read(reader, group.m_sphere); - bx::read(reader, group.m_aabb); - bx::read(reader, group.m_obb); - - bgfx::read(reader, m_decl); - uint16_t stride = m_decl.getStride(); - - uint16_t numVertices; - bx::read(reader, numVertices); - const bgfx::Memory* mem = bgfx::alloc(numVertices*stride); - bx::read(reader, mem->data, mem->size); - - group.m_vbh = bgfx::createVertexBuffer(mem, m_decl); - } - break; - - case BGFX_CHUNK_MAGIC_IB: - { - uint32_t numIndices; - bx::read(reader, numIndices); - const bgfx::Memory* mem = bgfx::alloc(numIndices*2); - bx::read(reader, mem->data, mem->size); - group.m_ibh = bgfx::createIndexBuffer(mem); - } - break; - - case BGFX_CHUNK_MAGIC_PRI: - { - uint16_t len; - bx::read(reader, len); - - std::string material; - material.resize(len); - bx::read(reader, const_cast<char*>(material.c_str() ), len); - - uint16_t num; - bx::read(reader, num); - - for (uint32_t ii = 0; ii < num; ++ii) - { - bx::read(reader, len); - - std::string name; - name.resize(len); - bx::read(reader, const_cast<char*>(name.c_str() ), len); - - Primitive prim; - bx::read(reader, prim.m_startIndex); - bx::read(reader, prim.m_numIndices); - bx::read(reader, prim.m_startVertex); - bx::read(reader, prim.m_numVertices); - bx::read(reader, prim.m_sphere); - bx::read(reader, prim.m_aabb); - bx::read(reader, prim.m_obb); - - group.m_prims.push_back(prim); - } - - m_groups.push_back(group); - group.reset(); - } - break; - - default: - DBG("%08x at %d", chunk, bx::seek(reader) ); - break; - } - } - - bx::close(reader); - } - - void unload() - { - for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) - { - const Group& group = *it; - bgfx::destroy(group.m_vbh); - - if (bgfx::kInvalidHandle != group.m_ibh.idx) - { - bgfx::destroy(group.m_ibh); - } - } - m_groups.clear(); - } - void submit(uint8_t _viewId, float* _mtx, bgfx::ProgramHandle _program, const RenderState& _renderState, bool _submitShadowMaps = false) { bgfx::TextureHandle texture = BGFX_INVALID_HANDLE; @@ -964,7 +819,7 @@ struct Mesh { for (uint8_t ii = 0; ii < ShadowMapRenderTargets::Count; ++ii) { - bgfx::setTexture(4 + ii, s_shadowMap[ii], bgfx::getTexture(s_rtShadowMap[ii]) ); + bgfx::setTexture(4 + ii, s_shadowMap[ii], bgfx::getTexture(s_rtShadowMap[ii])); } } @@ -976,12 +831,9 @@ struct Mesh bgfx::submit(_viewId, _program); } } - - bgfx::VertexDecl m_decl; - typedef std::vector<Group> GroupArray; - GroupArray m_groups; }; + struct PosColorTexCoord0Vertex { float m_x; @@ -993,7 +845,7 @@ struct PosColorTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) @@ -1001,17 +853,17 @@ struct PosColorTexCoord0Vertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosColorTexCoord0Vertex::ms_layout; void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBottomLeft = true, float _width = 1.0f, float _height = 1.0f) { - if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_decl) ) + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_layout); PosColorTexCoord0Vertex* vertex = (PosColorTexCoord0Vertex*)vb.data; const float zz = 0.0f; @@ -1061,12 +913,13 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBott } } -void worldSpaceFrustumCorners(float* _corners24f +void worldSpaceFrustumCorners( + float* _corners24f , float _near , float _far , float _projWidth , float _projHeight - , const float* __restrict _invViewMtx + , const float* _invViewMtx ) { // Define frustum corners in view space. @@ -1076,7 +929,7 @@ void worldSpaceFrustumCorners(float* _corners24f const float fh = _far * _projHeight; const uint8_t numCorners = 8; - const float corners[numCorners][3] = + const bx::Vec3 corners[numCorners] = { { -nw, nh, _near }, { nw, nh, _near }, @@ -1092,7 +945,7 @@ void worldSpaceFrustumCorners(float* _corners24f float (*out)[3] = (float(*)[3])_corners24f; for (uint8_t ii = 0; ii < numCorners; ++ii) { - bx::vec3MulMtx( (float*)&out[ii], (float*)&corners[ii], _invViewMtx); + bx::store(&out[ii], bx::mul(corners[ii], _invViewMtx) ); } } @@ -1284,8 +1137,8 @@ struct SceneSettings class ExampleShadowmaps : public entry::AppI { public: - ExampleShadowmaps(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleShadowmaps(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -1304,6 +1157,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_viewState.m_width; init.resolution.height = m_viewState.m_height; init.resolution.reset = m_reset; @@ -1334,26 +1190,26 @@ public: // Uniforms. s_uniforms.init(); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); - s_shadowMap[0] = bgfx::createUniform("s_shadowMap0", bgfx::UniformType::Int1); - s_shadowMap[1] = bgfx::createUniform("s_shadowMap1", bgfx::UniformType::Int1); - s_shadowMap[2] = bgfx::createUniform("s_shadowMap2", bgfx::UniformType::Int1); - s_shadowMap[3] = bgfx::createUniform("s_shadowMap3", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + s_shadowMap[0] = bgfx::createUniform("s_shadowMap0", bgfx::UniformType::Sampler); + s_shadowMap[1] = bgfx::createUniform("s_shadowMap1", bgfx::UniformType::Sampler); + s_shadowMap[2] = bgfx::createUniform("s_shadowMap2", bgfx::UniformType::Sampler); + s_shadowMap[3] = bgfx::createUniform("s_shadowMap3", bgfx::UniformType::Sampler); // Programs. s_programs.init(); // Vertex declarations. - bgfx::VertexDecl PosNormalTexcoordDecl; - PosNormalTexcoordDecl.begin() + bgfx::VertexLayout PosNormalTexcoordLayout; + PosNormalTexcoordLayout.begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) .end(); - m_posDecl.begin(); - m_posDecl.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float); - m_posDecl.end(); + m_posLayout.begin(); + m_posLayout.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float); + m_posLayout.end(); PosColorTexCoord0Vertex::init(); @@ -1367,8 +1223,8 @@ public: m_treeMesh.load("meshes/tree.bin"); m_cubeMesh.load("meshes/cube.bin"); m_hollowcubeMesh.load("meshes/hollowcube.bin"); - m_hplaneMesh.load(s_hplaneVertices, BX_COUNTOF(s_hplaneVertices), PosNormalTexcoordDecl, s_planeIndices, BX_COUNTOF(s_planeIndices) ); - m_vplaneMesh.load(s_vplaneVertices, BX_COUNTOF(s_vplaneVertices), PosNormalTexcoordDecl, s_planeIndices, BX_COUNTOF(s_planeIndices) ); + m_hplaneMesh.load(s_hplaneVertices, BX_COUNTOF(s_hplaneVertices), PosNormalTexcoordLayout, s_planeIndices, BX_COUNTOF(s_planeIndices) ); + m_vplaneMesh.load(s_vplaneVertices, BX_COUNTOF(s_vplaneVertices), PosNormalTexcoordLayout, s_planeIndices, BX_COUNTOF(s_planeIndices) ); // Materials. m_defaultMaterial = @@ -1894,16 +1750,15 @@ public: bgfx::TextureHandle fbtextures[] = { bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT), - bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::D24S8, BGFX_TEXTURE_RT), + bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::D32F, BGFX_TEXTURE_RT), }; s_rtShadowMap[ii] = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); } s_rtBlur = bgfx::createFrameBuffer(m_currentShadowMapSize, m_currentShadowMapSize, bgfx::TextureFormat::BGRA8); // Setup camera. - float initialPos[3] = { 0.0f, 60.0f, -105.0f }; cameraCreate(); - cameraSetPosition(initialPos); + cameraSetPosition({ 0.0f, 60.0f, -105.0f }); cameraSetVerticalAngle(-0.45f); m_timeAccumulatorLight = 0.0f; @@ -2195,7 +2050,7 @@ public: const float deltaTime = float(frameTime/freq); // Update camera. - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); // Update view mtx. cameraGetViewMtx(m_viewState.m_view); @@ -2313,6 +2168,45 @@ public: , caps->homogeneousDepth ); + // Update render target size. + uint16_t shadowMapSize = 1 << uint32_t(currentSmSettings->m_sizePwrTwo); + if (bLtChanged || m_currentShadowMapSize != shadowMapSize) + { + m_currentShadowMapSize = shadowMapSize; + s_uniforms.m_shadowMapTexelSize = 1.0f / currentShadowMapSizef; + + { + bgfx::destroy(s_rtShadowMap[0]); + + bgfx::TextureHandle fbtextures[] = + { + bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT), + bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::D24S8, BGFX_TEXTURE_RT), + }; + s_rtShadowMap[0] = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); + } + + if (LightType::DirectionalLight == m_settings.m_lightType) + { + for (uint8_t ii = 1; ii < ShadowMapRenderTargets::Count; ++ii) + { + { + bgfx::destroy(s_rtShadowMap[ii]); + + bgfx::TextureHandle fbtextures[] = + { + bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT), + bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::D24S8, BGFX_TEXTURE_RT), + }; + s_rtShadowMap[ii] = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); + } + } + } + + bgfx::destroy(s_rtBlur); + s_rtBlur = bgfx::createFrameBuffer(m_currentShadowMapSize, m_currentShadowMapSize, bgfx::TextureFormat::BGRA8); + } + if (LightType::SpotLight == m_settings.m_lightType) { const float fovy = m_settings.m_coverageSpotL; @@ -2333,9 +2227,8 @@ public: lightProj[ProjType::Horizontal][14] /= currentSmSettings->m_far; } - float at[3]; - bx::vec3Add(at, m_pointLight.m_position.m_v, m_pointLight.m_spotDirectionInner.m_v); - bx::mtxLookAt(lightView[TetrahedronFaces::Green], bx::load(m_pointLight.m_position.m_v), bx::load(at) ); + const bx::Vec3 at = bx::add(bx::load<bx::Vec3>(m_pointLight.m_position.m_v), bx::load<bx::Vec3>(m_pointLight.m_spotDirectionInner.m_v) ); + bx::mtxLookAt(lightView[TetrahedronFaces::Green], bx::load<bx::Vec3>(m_pointLight.m_position.m_v), at); } else if (LightType::PointLight == m_settings.m_lightType) { @@ -2404,9 +2297,9 @@ public: float tmp[3] = { - -bx::vec3Dot(m_pointLight.m_position.m_v, &mtxTmp[0]), - -bx::vec3Dot(m_pointLight.m_position.m_v, &mtxTmp[4]), - -bx::vec3Dot(m_pointLight.m_position.m_v, &mtxTmp[8]), + -bx::dot(bx::load<bx::Vec3>(m_pointLight.m_position.m_v), bx::load<bx::Vec3>(&mtxTmp[0]) ), + -bx::dot(bx::load<bx::Vec3>(m_pointLight.m_position.m_v), bx::load<bx::Vec3>(&mtxTmp[4]) ), + -bx::dot(bx::load<bx::Vec3>(m_pointLight.m_position.m_v), bx::load<bx::Vec3>(&mtxTmp[8]) ), }; bx::mtxTranspose(mtxYpr[ii], mtxTmp); @@ -2436,7 +2329,7 @@ public: // Compute split distances. const uint8_t maxNumSplits = 4; - BX_CHECK(maxNumSplits >= settings.m_numSplits, "Error! Max num splits."); + BX_ASSERT(maxNumSplits >= m_settings.m_numSplits, "Error! Max num splits."); float splitSlices[maxNumSplits*2]; splitFrustum(splitSlices @@ -2455,16 +2348,16 @@ public: float mtxProj[16]; bx::mtxOrtho( - mtxProj - , 1.0f - , -1.0f - , 1.0f - , -1.0f - , -currentSmSettings->m_far - , currentSmSettings->m_far - , 0.0f - , caps->homogeneousDepth - ); + mtxProj + , 1.0f + , -1.0f + , 1.0f + , -1.0f + , -currentSmSettings->m_far + , currentSmSettings->m_far + , 0.0f + , caps->homogeneousDepth + ); const uint8_t numCorners = 8; float frustumCorners[maxNumSplits][numCorners][3]; @@ -2473,34 +2366,24 @@ public: // Compute frustum corners for one split in world space. worldSpaceFrustumCorners( (float*)frustumCorners[ii], splitSlices[nn], splitSlices[ff], projWidth, projHeight, mtxViewInv); - float min[3] = { 9000.0f, 9000.0f, 9000.0f }; - float max[3] = { -9000.0f, -9000.0f, -9000.0f }; + bx::Vec3 min = { 9000.0f, 9000.0f, 9000.0f }; + bx::Vec3 max = { -9000.0f, -9000.0f, -9000.0f }; for (uint8_t jj = 0; jj < numCorners; ++jj) { // Transform to light space. - float lightSpaceFrustumCorner[3]; - bx::vec3MulMtx(lightSpaceFrustumCorner, frustumCorners[ii][jj], lightView[0]); + const bx::Vec3 xyz = bx::mul(bx::load<bx::Vec3>(frustumCorners[ii][jj]), lightView[0]); // Update bounding box. - min[0] = bx::min(min[0], lightSpaceFrustumCorner[0]); - max[0] = bx::max(max[0], lightSpaceFrustumCorner[0]); - min[1] = bx::min(min[1], lightSpaceFrustumCorner[1]); - max[1] = bx::max(max[1], lightSpaceFrustumCorner[1]); - min[2] = bx::min(min[2], lightSpaceFrustumCorner[2]); - max[2] = bx::max(max[2], lightSpaceFrustumCorner[2]); + min = bx::min(min, xyz); + max = bx::max(max, xyz); } - float minproj[3]; - float maxproj[3]; - bx::vec3MulMtxH(minproj, min, mtxProj); - bx::vec3MulMtxH(maxproj, max, mtxProj); - - float offsetx, offsety; - float scalex, scaley; + const bx::Vec3 minproj = bx::mulH(min, mtxProj); + const bx::Vec3 maxproj = bx::mulH(max, mtxProj); - scalex = 2.0f / (maxproj[0] - minproj[0]); - scaley = 2.0f / (maxproj[1] - minproj[1]); + float scalex = 2.0f / (maxproj.x - minproj.x); + float scaley = 2.0f / (maxproj.y - minproj.y); if (m_settings.m_stabilize) { @@ -2509,8 +2392,8 @@ public: scaley = quantizer / bx::ceil(quantizer / scaley); } - offsetx = 0.5f * (maxproj[0] + minproj[0]) * scalex; - offsety = 0.5f * (maxproj[1] + minproj[1]) * scaley; + float offsetx = 0.5f * (maxproj.x + minproj.x) * scalex; + float offsety = 0.5f * (maxproj.y + minproj.y) * scaley; if (m_settings.m_stabilize) { @@ -2535,6 +2418,7 @@ public: for (uint8_t ii = 0; ii < RENDERVIEW_DRAWDEPTH_3_ID+1; ++ii) { bgfx::setViewFrameBuffer(ii, invalidRt); + bgfx::setViewRect(ii, 0, 0, m_viewState.m_width, m_viewState.m_height); } // Determine on-screen rectangle size where depth buffer will be drawn. @@ -2773,7 +2657,7 @@ public: // Craft stencil mask for point light shadow map packing. if(LightType::PointLight == m_settings.m_lightType && m_settings.m_stencilPack) { - if (6 == bgfx::getAvailTransientVertexBuffer(6, m_posDecl) ) + if (6 == bgfx::getAvailTransientVertexBuffer(6, m_posLayout) ) { struct Pos { @@ -2781,7 +2665,7 @@ public: }; bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 6, m_posDecl); + bgfx::allocTransientVertexBuffer(&vb, 6, m_posLayout); Pos* vertex = (Pos*)vb.data; const float min = 0.0f; @@ -3171,44 +3055,6 @@ public: } } - // Update render target size. - uint16_t shadowMapSize = 1 << uint32_t(currentSmSettings->m_sizePwrTwo); - if (bLtChanged || m_currentShadowMapSize != shadowMapSize) - { - m_currentShadowMapSize = shadowMapSize; - s_uniforms.m_shadowMapTexelSize = 1.0f / currentShadowMapSizef; - - { - bgfx::destroy(s_rtShadowMap[0]); - - bgfx::TextureHandle fbtextures[] = - { - bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT), - bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::D24S8, BGFX_TEXTURE_RT), - }; - s_rtShadowMap[0] = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); - } - - if (LightType::DirectionalLight == m_settings.m_lightType) - { - for (uint8_t ii = 1; ii < ShadowMapRenderTargets::Count; ++ii) - { - { - bgfx::destroy(s_rtShadowMap[ii]); - - bgfx::TextureHandle fbtextures[] = - { - bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT), - bgfx::createTexture2D(m_currentShadowMapSize, m_currentShadowMapSize, false, 1, bgfx::TextureFormat::D24S8, BGFX_TEXTURE_RT), - }; - s_rtShadowMap[ii] = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); - } - } - } - - bgfx::destroy(s_rtBlur); - s_rtBlur = bgfx::createFrameBuffer(m_currentShadowMapSize, m_currentShadowMapSize, bgfx::TextureFormat::BGRA8); - } // Advance to next frame. Rendering thread will be kicked to // process submitted rendering primitives. @@ -3229,7 +3075,7 @@ public: ViewState m_viewState; ClearValues m_clearValues; - bgfx::VertexDecl m_posDecl; + bgfx::VertexLayout m_posLayout; bgfx::TextureHandle m_texFigure; bgfx::TextureHandle m_texFlare; @@ -3261,4 +3107,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleShadowmaps, "16-shadowmaps", "Shadow maps example."); +ENTRY_IMPLEMENT_MAIN( + ExampleShadowmaps + , "16-shadowmaps" + , "Shadow maps example." + , "https://bkaradzic.github.io/bgfx/examples.html#shadowmaps" + ); diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color.sc index a606797f019..a303feb1370 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color.sc @@ -2,7 +2,7 @@ $input a_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting.sc index b92e665a6b7..92dcd85c4ad 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting.sc @@ -3,7 +3,7 @@ $output v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_csm.sc index 680447b33fa..ab1c6784bb3 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_csm.sc @@ -3,7 +3,7 @@ $output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_t /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear.sc index 9906dbf6da0..e9a7cbb352e 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear.sc @@ -3,7 +3,7 @@ $output v_normal, v_view, v_shadowcoord /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_csm.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_csm.sc index 2e228f6dcd6..6cdfb6009e8 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_csm.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_csm.sc @@ -3,7 +3,7 @@ $output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_t /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_omni.sc index 5048181d765..765c1a5feaf 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_linear_omni.sc @@ -3,7 +3,7 @@ $output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_t /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_omni.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_omni.sc index 45800caf72d..a0557584224 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_omni.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_lighting_omni.sc @@ -3,7 +3,7 @@ $output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_t /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_texture.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_texture.sc index 239f4185c08..d2585e1a85e 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_texture.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_color_texture.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_depth.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_depth.sc index b7e0d2a17c3..973453d20d8 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_depth.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_depth.sc @@ -2,7 +2,7 @@ $input a_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_hblur.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_hblur.sc index 68852137ff1..99ddaf2c5fb 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_hblur.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_hblur.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth.sc index 8d55a99f223..fa041ba1ffc 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth.sc @@ -3,7 +3,7 @@ $output v_position /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth_linear.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth_linear.sc index 20e2359159e..ae8e9810684 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth_linear.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_packdepth_linear.sc @@ -3,7 +3,7 @@ $output v_depth /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture.sc index 239f4185c08..d2585e1a85e 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture_lighting.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture_lighting.sc index da82704225f..4d1f63346b9 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture_lighting.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_texture_lighting.sc @@ -3,7 +3,7 @@ $output v_normal, v_view, v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_unpackdepth.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_unpackdepth.sc index 239f4185c08..d2585e1a85e 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_unpackdepth.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_unpackdepth.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_vblur.sc b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_vblur.sc index e9cd5c62e99..8527d54c3a2 100644 --- a/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_vblur.sc +++ b/3rdparty/bgfx/examples/16-shadowmaps/vs_shadowmaps_vblur.sc @@ -3,7 +3,7 @@ $output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4 /* * Copyright 2013-2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/17-drawstress/drawstress.cpp b/3rdparty/bgfx/examples/17-drawstress/drawstress.cpp index 9e88829df48..9dc32cc299c 100644 --- a/3rdparty/bgfx/examples/17-drawstress/drawstress.cpp +++ b/3rdparty/bgfx/examples/17-drawstress/drawstress.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -37,17 +37,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; static PosColorVertex s_cubeVertices[8] = { @@ -100,8 +100,8 @@ int32_t threadFunc(bx::Thread* _thread, void* _userData); class ExampleDrawStress : public entry::AppI { public: - ExampleDrawStress(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleDrawStress(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -129,6 +129,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -163,7 +166,7 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); // Create static index buffer. @@ -459,4 +462,9 @@ int32_t threadFunc(bx::Thread* _thread, void* _userData) } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleDrawStress, "17-drawstress", "Draw stress, maximizing number of draw calls."); +ENTRY_IMPLEMENT_MAIN( + ExampleDrawStress + , "17-drawstress" + , "Draw stress, maximizing number of draw calls." + , "https://bkaradzic.github.io/bgfx/examples.html#drawstress" + ); diff --git a/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.bin.h b/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.bin.h index 186744f7081..c62c615eb53 100644 --- a/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.bin.h +++ b/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.bin.h @@ -1,101 +1,113 @@ -static const uint8_t fs_drawstress_glsl[89] = +static const uint8_t fs_drawstress_glsl[87] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x76, 0x61, // FSH....I..J...va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 - 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // v_color0;.void - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, // main ().{. gl_F - 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ragColor = v_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0;.}... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, // FSH....I......D. + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // _color0;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // in ().{. gl_Fra + 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // gColor = v_color + 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0;.}... }; -static const uint8_t fs_drawstress_spv[402] = +static const uint8_t fs_drawstress_essl[93] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x02, // FSH....I........ - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, // #.........+..... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, // ..!...*......... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, // ................ - 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ......!...v_colo - 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x62, 0x67, // r0........*...bg + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, // FSH....I......J. + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ..varying highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, // gl_FragColor = v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... +}; +static const uint8_t fs_drawstress_spv[466] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x01, // FSH....I........ + 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x31, 0x00, // ....#.........1. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................ + 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4 + 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50.............. + 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x30, 0x00, // in...."...%...0. + 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x22, 0x00, // ..main........". + 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, // ..gl_FragCoord.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ......%...v_colo + 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x62, 0x67, // r0........0...bg 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, // fx_FragData0..G. - 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..!...........G. - 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, // ..*............. + 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, // .."...........G. + 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..%...........G. + 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, // ..0............. 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ......!......... 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, // .......... ..... 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // .. ...........;. - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .. ...!....... . - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..)...........;. - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ..)...*.......6. + 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..!...........;. + 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..!...".......;. + 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..!...%....... . + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ../...........;. + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ../...0.......6. 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..........=..... - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x2a, 0x00, // .."...!...>...*. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..".......8..... + 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x30, 0x00, // ..&...%...>...0. + 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..&.......8..... 0x00, 0x00, // .. }; -static const uint8_t fs_drawstress_dx9[131] = +static const uint8_t fs_drawstress_dx9[135] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x03, // FSH....I..t..... - 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, // ......CTAB....#. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......ps_3_0.Mic - 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler - 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, // 10.1............ - 0x0f, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, // ................ - 0x00, 0x00, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, // FSH....I......t. + 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ..........CTAB.. + 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..#............. + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 + 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H + 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi + 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ler 10.1........ + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, // ................ + 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... }; -static const uint8_t fs_drawstress_dx11[262] = +static const uint8_t fs_drawstress_dx11[266] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x44, 0x58, // FSH....I......DX - 0x42, 0x43, 0xa6, 0x7f, 0x08, 0xe2, 0x95, 0xbd, 0x5f, 0xa3, 0x3f, 0x5b, 0x58, 0x8e, 0x54, 0x0f, // BC......_.?[X.T. - 0x89, 0x67, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // .g............,. - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, // ..........ISGNL. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........8..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..D............. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, // ..........SV_POS - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x4f, 0x53, // ITION.COLOR...OS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, // ......SV_TARGET. - 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x38, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0e, 0x00, // ..SHDR8...@..... - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...........e. - 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, // ... ......6.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......F.......>. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, // FSH....I........ + 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xa6, 0x7f, 0x08, 0xe2, 0x95, 0xbd, 0x5f, 0xa3, 0x3f, 0x5b, // ..DXBC......_.?[ + 0x58, 0x8e, 0x54, 0x0f, 0x89, 0x67, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x03, 0x00, // X.T..g.......... + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS + 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, // GNL...........8. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......D......... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, // ..............SV + 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, // _POSITION.COLOR. + 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR + 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x38, 0x00, 0x00, 0x00, 0x40, 0x00, // GET...SHDR8...@. + 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, // ......b......... + 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, // ..e.... ......6. + 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, // ... ......F..... + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ..>....... }; -static const uint8_t fs_drawstress_mtl[404] = +static const uint8_t fs_drawstress_mtl[386] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x75, 0x73, // FSH....I......us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // r0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // t {. float4 gl_ - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // FragColor;.};.st - 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad - 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, // erUniform {.};.f - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // ragment xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // haderOutput xlat - 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // MtlMain (xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ShaderInput _mtl - 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, // _i [[stage_in]], - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // constant xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, // lShaderUniform& - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, // _mtl_u [[buffer( - 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // 0)]]).{. xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, // lShaderOutput _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // tl_o;. _mtl_o.g - 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // l_FragColor = _m - 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, // tl_i.v_color0;. - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, // return _mtl_o;. - 0x7d, 0x0a, 0x0a, 0x00, // }... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x01, // FSH....I......l. + 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, // ..#include <meta + 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, // l_stdlib>.#inclu + 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, // de <simd/simd.h> + 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac + 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // e metal;..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, // .{. float4 bg + 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, // fx_FragData0 [[c + 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // olor(0)]];.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // truct xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n_in.{. float + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, // 4 v_color0 [[use + 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // r(locn0)]];.};.. + 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // fragment xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // Main_out xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // Main(xlatMtlMain + 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, // _in in [[stage_i + 0x6e, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // n]]).{. xlatM + 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, // tlMain_out out = + 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, // {};. out.bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, // x_FragData0 = in + 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // .v_color0;. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, // eturn out;.}.... + 0x00, 0x00, // .. }; extern const uint8_t* fs_drawstress_pssl; extern const uint32_t fs_drawstress_pssl_size; diff --git a/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.sc b/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.sc index 99ec64685ad..8ea959c83db 100644 --- a/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.sc +++ b/3rdparty/bgfx/examples/17-drawstress/fs_drawstress.sc @@ -1,8 +1,8 @@ $input v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/17-drawstress/makefile b/3rdparty/bgfx/examples/17-drawstress/makefile index 76ce78d8e4d..efdae05bf56 100644 --- a/3rdparty/bgfx/examples/17-drawstress/makefile +++ b/3rdparty/bgfx/examples/17-drawstress/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # include ../../scripts/shader-embeded.mk diff --git a/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.bin.h b/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.bin.h index f4da07dd2a6..c97f961693d 100644 --- a/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.bin.h +++ b/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.bin.h @@ -1,59 +1,83 @@ -static const uint8_t vs_drawstress_glsl[325] = +static const uint8_t vs_drawstress_glsl[303] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x20, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ...attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec3 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // on;.varying high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // p vec4 v_color0; - 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, // .uniform highp m + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // varying vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, // olor0;.uniform m 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // at4 u_modelViewP 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, // roj;.void main ( - 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ).{. highp vec4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m - 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, // mpvar_1);. v_co - 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // lor0 = a_color0; - 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ).{. vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 1.0;. tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // r_1.xyz = a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // tion;. gl_Posit + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // ion = (u_modelVi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // 1);. v_color0 = + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}... }; -static const uint8_t vs_drawstress_spv[1088] = +static const uint8_t vs_drawstress_essl[333] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x14, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, // main....6...:... - 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // C...F........... - 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, // ........ ...$Glo - 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // bal..... ....... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........ ...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // bute highp vec3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // a_position;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // _color0;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, // highp mat4 u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // delViewProj;.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, // d main ().{. hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // 1;. tmpvar_1.w + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // 1.xyz = a_positi + 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // on;. gl_Positio + 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // n = (u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1) + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, // ;. v_color0 = a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... +}; +static const uint8_t vs_drawstress_spv[1060] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x2f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // /...3...<...?... + 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, // ....main........ + 0x20, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, // ...UniformBlock + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. 0x05, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ...."........... - 0x36, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // 6...a_color0.... - 0x05, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ....:...a_positi - 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x43, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // on......C...@ent + 0x2f, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // /...a_color0.... + 0x05, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ....3...a_positi + 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // on......<...@ent 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... - 0x46, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // F...@entryPointO + 0x3f, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // ?...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // utput.v_color0.. 0x48, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // H... ........... 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H... .......#... 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H... ....... 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, // ........G... ... 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, // ....G..."..."... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...6....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...:....... - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ....G...C....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...F....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, // ....G..."...!... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G.../....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...3....... + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ....G...<....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...?....... 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, // ............!... 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, // ................ 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ............... @@ -66,136 +90,135 @@ static const uint8_t vs_drawstress_spv[1088] = 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ...!....... ... 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ;...!..."....... 0x20, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, // ...#........... - 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...5........... - 0x3b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...5...6....... - 0x20, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...9........... - 0x3b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...9...:....... - 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...B........... - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...B...C....... - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...B...F....... + 0x20, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ............... + 0x3b, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;......./....... + 0x20, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...2........... + 0x3b, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...2...3....... + 0x20, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...;........... + 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...;...<....... + 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...;...?....... 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6............... 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... - 0x07, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....7...6...=... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....;...:...Q... - 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....]...;....... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // Q.......^...;... - 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, // ....Q......._... - 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // ;.......P....... - 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, // `...]...^..._... - 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, // ....A...#...a... + 0x07, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....0.../...=... + 0x09, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....4...3...Q... + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....X...4....... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // Q.......Y...4... + 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, // ....Q.......Z... + 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // 4.......P....... + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, // [...X...Y...Z... + 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, // ....A...#....... 0x22, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, // ".......=....... - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // b...a........... - 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // c...`...b...Q... - 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....h...c....... - 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, // ........i...h... - 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, // R...........i... - 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, // c.......>...C... - 0x80, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, // ....>...F...7... - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ....8.........@. + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ]............... + 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // ^...[...]...>... + 0x3c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, // <...^...>...?... + 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x05, 0x00, // 0.......8....... + 0x01, 0x00, 0x40, 0x00, // ..@. }; -static const uint8_t vs_drawstress_dx9[313] = +static const uint8_t vs_drawstress_dx9[321] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x14, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // ..........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, // ................ - 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. - 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ - 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, // ................ - 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ................ + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ + 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... + 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, // ................ + 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................ + 0x00, // . }; -static const uint8_t vs_drawstress_dx11[512] = +static const uint8_t vs_drawstress_dx11[520] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xd4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x32, 0x9b, 0xdd, 0xb5, 0xa9, 0xb7, 0x22, 0xf0, // ....DXBC2.....". - 0xcf, 0x5e, 0x34, 0x2c, 0x72, 0xf0, 0x87, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, // .^4,r........... - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, // ....,...|....... - 0x49, 0x53, 0x47, 0x4e, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNH........... - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 8............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........>....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ - 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, // COLOR.POSITION.. - 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNL........... - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 8............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........D....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO - 0x52, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xfc, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // R...SHDR....@... - 0x3f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ?...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, // _...r.......g... - 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // . ..........e... - 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... - 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... - 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0x32, 0x9b, 0xdd, 0xb5, 0xa9, 0xb7, 0x22, 0xf0, 0xcf, 0x5e, 0x34, 0x2c, 0x72, 0xf0, 0x87, 0x00, // 2....."..^4,r... + 0x01, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0x7c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x48, 0x00, 0x00, 0x00, // |.......ISGNH... + 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........8....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // >............... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, // SITION..OSGNL... + 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........8....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // D............... + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT + 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, // ION.COLOR...SHDR + 0xfc, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...?...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........_...r... + 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... + 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... + 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... - 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... - 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... - 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ....>.........@. + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ....F.......>... + 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ......@. }; -static const uint8_t vs_drawstress_mtl[673] = +static const uint8_t vs_drawstress_mtl[685] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x7c, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // |...using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at3 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, // tlShaderOutput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // . float4 gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ition [[position - 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, // ]];. float4 v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // olor0;.};.struct - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // iform {. float4 - 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // x4 u_modelViewPr - 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, // oj;.};.vertex xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // uffer(0)]]).{. - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // put _mtl_o;. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // oat4 tmpvar_1 = - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // 0;. tmpvar_1.w - 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // 1.xyz = _mtl_i.a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, // _position;. _mt - 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // l_o.gl_Position - 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // = (_mtl_u.u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // lViewProj * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // ar_1);. _mtl_o. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // v_color0 = _mtl_ - 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, // i.a_color0;. re - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // turn _mtl_o;.}.. - 0x00, // . + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x02, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ........y...#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // 4 gl_Position [[ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // position]];.};.. + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // struct xlatMtlMa + 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // in_in.{. floa + 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, // t4 a_color0 [[at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // tribute(0)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // float3 a_posit + 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // ion [[attribute( + 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, // 1)]];.};..vertex + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, // xlatMtlMain(xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, // tMtlMain_in in [ + 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, // stant _Global& _ + 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, // mtl_u [[buffer(0 + 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // )]]).{. xlatM + 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, // tlMain_out out = + 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, // {};. out.gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // Position = _mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // u.u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, // j * float4(in.a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // position, 1.0);. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // out._entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput_v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r0 = in.a_color0 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, // ;. return out + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ;.}........@. }; extern const uint8_t* vs_drawstress_pssl; extern const uint32_t vs_drawstress_pssl_size; diff --git a/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.sc b/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.sc index 906372cb0f8..d80005d4652 100644 --- a/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.sc +++ b/3rdparty/bgfx/examples/17-drawstress/vs_drawstress.sc @@ -2,8 +2,8 @@ $input a_position, a_color0 $output v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc b/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc index 836400b9ed0..07f8e9a9a22 100644 --- a/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc +++ b/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc @@ -2,7 +2,7 @@ $input v_view, v_normal /* * Copyright 2014-2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/18-ibl/fs_ibl_skybox.sc b/3rdparty/bgfx/examples/18-ibl/fs_ibl_skybox.sc index d895037b26a..9800dc812d1 100644 --- a/3rdparty/bgfx/examples/18-ibl/fs_ibl_skybox.sc +++ b/3rdparty/bgfx/examples/18-ibl/fs_ibl_skybox.sc @@ -2,7 +2,7 @@ $input v_dir /* * Copyright 2014-2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/18-ibl/ibl.cpp b/3rdparty/bgfx/examples/18-ibl/ibl.cpp index 7f43232d351..96f2ff904fe 100644 --- a/3rdparty/bgfx/examples/18-ibl/ibl.cpp +++ b/3rdparty/bgfx/examples/18-ibl/ibl.cpp @@ -1,6 +1,6 @@ /* * Copyright 2014-2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <vector> @@ -77,7 +77,7 @@ struct PosColorTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) @@ -85,17 +85,17 @@ struct PosColorTexCoord0Vertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosColorTexCoord0Vertex::ms_layout; void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBottomLeft = false, float _width = 1.0f, float _height = 1.0f) { - if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_decl) ) + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_layout); PosColorTexCoord0Vertex* vertex = (PosColorTexCoord0Vertex*)vb.data; const float zz = 0.0f; @@ -185,19 +185,11 @@ struct Camera void reset() { - m_target.curr[0] = 0.0f; - m_target.curr[1] = 0.0f; - m_target.curr[2] = 0.0f; - m_target.dest[0] = 0.0f; - m_target.dest[1] = 0.0f; - m_target.dest[2] = 0.0f; - - m_pos.curr[0] = 0.0f; - m_pos.curr[1] = 0.0f; - m_pos.curr[2] = -3.0f; - m_pos.dest[0] = 0.0f; - m_pos.dest[1] = 0.0f; - m_pos.dest[2] = -3.0f; + m_target.curr = { 0.0f, 0.0f, 0.0f }; + m_target.dest = { 0.0f, 0.0f, 0.0f }; + + m_pos.curr = { 0.0f, 0.0f, -3.0f }; + m_pos.dest = { 0.0f, 0.0f, -3.0f }; m_orbit[0] = 0.0f; m_orbit[1] = 0.0f; @@ -205,7 +197,7 @@ struct Camera void mtxLookAt(float* _outViewMtx) { - bx::mtxLookAt(_outViewMtx, bx::load(m_pos.curr), bx::load(m_target.curr) ); + bx::mtxLookAt(_outViewMtx, m_pos.curr, m_target.curr); } void orbit(float _dx, float _dy) @@ -217,133 +209,79 @@ struct Camera void dolly(float _dz) { const float cnear = 1.0f; - const float cfar = 10.0f; + const float cfar = 100.0f; - const float toTarget[3] = - { - m_target.dest[0] - m_pos.dest[0], - m_target.dest[1] - m_pos.dest[1], - m_target.dest[2] - m_pos.dest[2], - }; - const float toTargetLen = bx::vec3Length(toTarget); - const float invToTargetLen = 1.0f/(toTargetLen+FLT_MIN); - const float toTargetNorm[3] = - { - toTarget[0]*invToTargetLen, - toTarget[1]*invToTargetLen, - toTarget[2]*invToTargetLen, - }; + const bx::Vec3 toTarget = bx::sub(m_target.dest, m_pos.dest); + const float toTargetLen = bx::length(toTarget); + const float invToTargetLen = 1.0f / (toTargetLen + bx::kFloatSmallest); + const bx::Vec3 toTargetNorm = bx::mul(toTarget, invToTargetLen); - float delta = toTargetLen*_dz; + float delta = toTargetLen * _dz; float newLen = toTargetLen + delta; - if ( (cnear < newLen || _dz < 0.0f) - && (newLen < cfar || _dz > 0.0f) ) + if ( (cnear < newLen || _dz < 0.0f) + && (newLen < cfar || _dz > 0.0f) ) { - m_pos.dest[0] += toTargetNorm[0]*delta; - m_pos.dest[1] += toTargetNorm[1]*delta; - m_pos.dest[2] += toTargetNorm[2]*delta; + m_pos.dest = bx::mad(toTargetNorm, delta, m_pos.dest); } } void consumeOrbit(float _amount) { float consume[2]; - consume[0] = m_orbit[0]*_amount; - consume[1] = m_orbit[1]*_amount; + consume[0] = m_orbit[0] * _amount; + consume[1] = m_orbit[1] * _amount; m_orbit[0] -= consume[0]; m_orbit[1] -= consume[1]; - const float toPos[3] = - { - m_pos.curr[0] - m_target.curr[0], - m_pos.curr[1] - m_target.curr[1], - m_pos.curr[2] - m_target.curr[2], - }; - const float toPosLen = bx::vec3Length(toPos); - const float invToPosLen = 1.0f/(toPosLen+FLT_MIN); - const float toPosNorm[3] = - { - toPos[0]*invToPosLen, - toPos[1]*invToPosLen, - toPos[2]*invToPosLen, - }; + const bx::Vec3 toPos = bx::sub(m_pos.curr, m_target.curr); + const float toPosLen = bx::length(toPos); + const float invToPosLen = 1.0f / (toPosLen + bx::kFloatSmallest); + const bx::Vec3 toPosNorm = bx::mul(toPos, invToPosLen); float ll[2]; - latLongFromVec(ll[0], ll[1], toPosNorm); + bx::toLatLong(&ll[0], &ll[1], toPosNorm); ll[0] += consume[0]; ll[1] -= consume[1]; - ll[1] = bx::clamp(ll[1], 0.02f, 0.98f); - - float tmp[3]; - vecFromLatLong(tmp, ll[0], ll[1]); - - float diff[3]; - diff[0] = (tmp[0]-toPosNorm[0])*toPosLen; - diff[1] = (tmp[1]-toPosNorm[1])*toPosLen; - diff[2] = (tmp[2]-toPosNorm[2])*toPosLen; - - m_pos.curr[0] += diff[0]; - m_pos.curr[1] += diff[1]; - m_pos.curr[2] += diff[2]; - m_pos.dest[0] += diff[0]; - m_pos.dest[1] += diff[1]; - m_pos.dest[2] += diff[2]; + ll[1] = bx::clamp(ll[1], 0.02f, 0.98f); + + const bx::Vec3 tmp = bx::fromLatLong(ll[0], ll[1]); + const bx::Vec3 diff = bx::mul(bx::sub(tmp, toPosNorm), toPosLen); + + m_pos.curr = bx::add(m_pos.curr, diff); + m_pos.dest = bx::add(m_pos.dest, diff); } void update(float _dt) { - const float amount = bx::min(_dt/0.12f, 1.0f); + const float amount = bx::min(_dt / 0.12f, 1.0f); consumeOrbit(amount); - m_target.curr[0] = bx::lerp(m_target.curr[0], m_target.dest[0], amount); - m_target.curr[1] = bx::lerp(m_target.curr[1], m_target.dest[1], amount); - m_target.curr[2] = bx::lerp(m_target.curr[2], m_target.dest[2], amount); - m_pos.curr[0] = bx::lerp(m_pos.curr[0], m_pos.dest[0], amount); - m_pos.curr[1] = bx::lerp(m_pos.curr[1], m_pos.dest[1], amount); - m_pos.curr[2] = bx::lerp(m_pos.curr[2], m_pos.dest[2], amount); + m_target.curr = bx::lerp(m_target.curr, m_target.dest, amount); + m_pos.curr = bx::lerp(m_pos.curr, m_pos.dest, amount); } void envViewMtx(float* _mtx) { - const float toTarget[3] = - { - m_target.curr[0] - m_pos.curr[0], - m_target.curr[1] - m_pos.curr[1], - m_target.curr[2] - m_pos.curr[2], - }; + const bx::Vec3 toTarget = bx::sub(m_target.curr, m_pos.curr); + const float toTargetLen = bx::length(toTarget); + const float invToTargetLen = 1.0f / (toTargetLen + bx::kFloatSmallest); + const bx::Vec3 toTargetNorm = bx::mul(toTarget, invToTargetLen); - const float toTargetLen = bx::vec3Length(toTarget); - const float invToTargetLen = 1.0f/(toTargetLen+FLT_MIN); - const float toTargetNorm[3] = - { - toTarget[0]*invToTargetLen, - toTarget[1]*invToTargetLen, - toTarget[2]*invToTargetLen, - }; - - float tmp[3]; - const float fakeUp[3] = { 0.0f, 1.0f, 0.0f }; - - float right[3]; - bx::vec3Cross(tmp, fakeUp, toTargetNorm); - bx::vec3Norm(right, tmp); - - float up[3]; - bx::vec3Cross(tmp, toTargetNorm, right); - bx::vec3Norm(up, tmp); + const bx::Vec3 right = bx::normalize(bx::cross({ 0.0f, 1.0f, 0.0f }, toTargetNorm) ); + const bx::Vec3 up = bx::normalize(bx::cross(toTargetNorm, right) ); - _mtx[ 0] = right[0]; - _mtx[ 1] = right[1]; - _mtx[ 2] = right[2]; + _mtx[ 0] = right.x; + _mtx[ 1] = right.y; + _mtx[ 2] = right.z; _mtx[ 3] = 0.0f; - _mtx[ 4] = up[0]; - _mtx[ 5] = up[1]; - _mtx[ 6] = up[2]; + _mtx[ 4] = up.x; + _mtx[ 5] = up.y; + _mtx[ 6] = up.z; _mtx[ 7] = 0.0f; - _mtx[ 8] = toTargetNorm[0]; - _mtx[ 9] = toTargetNorm[1]; - _mtx[10] = toTargetNorm[2]; + _mtx[ 8] = toTargetNorm.x; + _mtx[ 9] = toTargetNorm.y; + _mtx[10] = toTargetNorm.z; _mtx[11] = 0.0f; _mtx[12] = 0.0f; _mtx[13] = 0.0f; @@ -351,34 +289,10 @@ struct Camera _mtx[15] = 1.0f; } - static inline void vecFromLatLong(float _vec[3], float _u, float _v) - { - const float phi = _u * 2.0f*bx::kPi; - const float theta = _v * bx::kPi; - - const float st = bx::sin(theta); - const float sp = bx::sin(phi); - const float ct = bx::cos(theta); - const float cp = bx::cos(phi); - - _vec[0] = -st*sp; - _vec[1] = ct; - _vec[2] = -st*cp; - } - - static inline void latLongFromVec(float& _u, float& _v, const float _vec[3]) - { - const float phi = bx::atan2(_vec[0], _vec[2]); - const float theta = bx::acos(_vec[1]); - - _u = (bx::kPi + phi)*bx::kInvPi*0.5f; - _v = theta*bx::kInvPi; - } - struct Interp3f { - float curr[3]; - float dest[3]; + bx::Vec3 curr = bx::init::None; + bx::Vec3 dest = bx::init::None; }; Interp3f m_target; @@ -484,8 +398,8 @@ struct Settings class ExampleIbl : public entry::AppI { public: - ExampleIbl(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleIbl(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -504,6 +418,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -537,8 +454,8 @@ public: u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4); u_flags = bgfx::createUniform("u_flags", bgfx::UniformType::Vec4); u_camPos = bgfx::createUniform("u_camPos", bgfx::UniformType::Vec4); - s_texCube = bgfx::createUniform("s_texCube", bgfx::UniformType::Int1); - s_texCubeIrr = bgfx::createUniform("s_texCubeIrr", bgfx::UniformType::Int1); + s_texCube = bgfx::createUniform("s_texCube", bgfx::UniformType::Sampler); + s_texCubeIrr = bgfx::createUniform("s_texCubeIrr", bgfx::UniformType::Sampler); m_programMesh = loadProgram("vs_ibl_mesh", "fs_ibl_mesh"); m_programSky = loadProgram("vs_ibl_skybox", "fs_ibl_skybox"); @@ -614,19 +531,21 @@ public: ImGui::Checkbox("IBL Diffuse", &m_settings.m_doDiffuseIbl); ImGui::Checkbox("IBL Specular", &m_settings.m_doSpecularIbl); + if (ImGui::BeginTabBar("Cubemap", ImGuiTabBarFlags_None) ) { - float tabWidth = ImGui::GetContentRegionAvailWidth() / 2.0f; - if (ImGui::TabButton("Bolonga", tabWidth, m_currentLightProbe == LightProbe::Bolonga) ) + if (ImGui::BeginTabItem("Bolonga") ) { m_currentLightProbe = LightProbe::Bolonga; + ImGui::EndTabItem(); } - ImGui::SameLine(0.0f,0.0f); - - if (ImGui::TabButton("Kyoto", tabWidth, m_currentLightProbe == LightProbe::Kyoto) ) + if (ImGui::BeginTabItem("Kyoto") ) { m_currentLightProbe = LightProbe::Kyoto; + ImGui::EndTabItem(); } + + ImGui::EndTabBar(); } ImGui::SliderFloat("Texture LOD", &m_settings.m_lod, 0.0f, 10.1f); @@ -651,55 +570,30 @@ public: ImGui::Text("Background:"); ImGui::Indent(); { - int32_t selection; - if (0.0f == m_settings.m_bgType) - { - selection = UINT8_C(0); - } - else if (7.0f == m_settings.m_bgType) + if (ImGui::BeginTabBar("CubemapSelection", ImGuiTabBarFlags_None) ) { - selection = UINT8_C(2); - } - else - { - selection = UINT8_C(1); - } + if (ImGui::BeginTabItem("Irradiance") ) + { + m_settings.m_bgType = m_settings.m_radianceSlider; + ImGui::EndTabItem(); + } - float tabWidth = ImGui::GetContentRegionAvailWidth() / 3.0f; - if (ImGui::TabButton("Skybox", tabWidth, selection == 0) ) - { - selection = 0; - } + if (ImGui::BeginTabItem("Radiance") ) + { + m_settings.m_bgType = 7.0f; - ImGui::SameLine(0.0f,0.0f); - if (ImGui::TabButton("Radiance", tabWidth, selection == 1) ) - { - selection = 1; - } + ImGui::SliderFloat("Mip level", &m_settings.m_radianceSlider, 1.0f, 6.0f); - ImGui::SameLine(0.0f,0.0f); - if (ImGui::TabButton("Irradiance", tabWidth, selection == 2) ) - { - selection = 2; - } + ImGui::EndTabItem(); + } - if (0 == selection) - { - m_settings.m_bgType = 0.0f; - } - else if (2 == selection) - { - m_settings.m_bgType = 7.0f; - } - else - { - m_settings.m_bgType = m_settings.m_radianceSlider; - } + if (ImGui::BeginTabItem("Skybox") ) + { + m_settings.m_bgType = 0.0f; + ImGui::EndTabItem(); + } - const bool isRadiance = (selection == 1); - if (isRadiance) - { - ImGui::SliderFloat("Mip level", &m_settings.m_radianceSlider, 1.0f, 6.0f); + ImGui::EndTabBar(); } } ImGui::Unindent(); @@ -812,7 +706,7 @@ public: } } m_camera.update(deltaTimeSec); - bx::memCopy(m_uniforms.m_cameraPos, m_camera.m_pos.curr, 3*sizeof(float) ); + bx::memCopy(m_uniforms.m_cameraPos, &m_camera.m_pos.curr.x, 3*sizeof(float) ); // View Transform 0. float view[16]; @@ -941,4 +835,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleIbl, "18-ibl", "Image-based lighting."); +ENTRY_IMPLEMENT_MAIN( + ExampleIbl + , "18-ibl" + , "Image-based lighting." + , "https://bkaradzic.github.io/bgfx/examples.html#ibl" + ); diff --git a/3rdparty/bgfx/examples/18-ibl/makefile b/3rdparty/bgfx/examples/18-ibl/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/18-ibl/makefile +++ b/3rdparty/bgfx/examples/18-ibl/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/18-ibl/uniforms.sh b/3rdparty/bgfx/examples/18-ibl/uniforms.sh index 61354fc87cb..8cb0d5e3e89 100644 --- a/3rdparty/bgfx/examples/18-ibl/uniforms.sh +++ b/3rdparty/bgfx/examples/18-ibl/uniforms.sh @@ -1,6 +1,6 @@ /* * Copyright 2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ uniform vec4 u_params[12]; diff --git a/3rdparty/bgfx/examples/18-ibl/vs_ibl_mesh.sc b/3rdparty/bgfx/examples/18-ibl/vs_ibl_mesh.sc index ad88136285c..2d8b07e5e91 100644 --- a/3rdparty/bgfx/examples/18-ibl/vs_ibl_mesh.sc +++ b/3rdparty/bgfx/examples/18-ibl/vs_ibl_mesh.sc @@ -3,7 +3,7 @@ $output v_view, v_normal /* * Copyright 2014-2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc b/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc index f3a15e0c73f..845f21404d3 100644 --- a/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc +++ b/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc @@ -3,7 +3,7 @@ $output v_dir /* * Copyright 2014-2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/19-oit/fs_oit.sc b/3rdparty/bgfx/examples/19-oit/fs_oit.sc index cd71b902adb..a087e5f3aaf 100644 --- a/3rdparty/bgfx/examples/19-oit/fs_oit.sc +++ b/3rdparty/bgfx/examples/19-oit/fs_oit.sc @@ -1,8 +1,8 @@ $input v_pos /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/19-oit/fs_oit_wb.sc b/3rdparty/bgfx/examples/19-oit/fs_oit_wb.sc index aa9531f96bd..9cb69a52ee2 100644 --- a/3rdparty/bgfx/examples/19-oit/fs_oit_wb.sc +++ b/3rdparty/bgfx/examples/19-oit/fs_oit_wb.sc @@ -1,8 +1,8 @@ $input v_pos /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/19-oit/fs_oit_wb_blit.sc b/3rdparty/bgfx/examples/19-oit/fs_oit_wb_blit.sc index 4f4c8fae668..f6f45c820a2 100644 --- a/3rdparty/bgfx/examples/19-oit/fs_oit_wb_blit.sc +++ b/3rdparty/bgfx/examples/19-oit/fs_oit_wb_blit.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate.sc b/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate.sc index 4a049922363..3e4c6d8ce6a 100644 --- a/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate.sc +++ b/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate.sc @@ -1,8 +1,8 @@ $input v_pos /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate_blit.sc b/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate_blit.sc index 8c6c52c3937..58c888aaae3 100644 --- a/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate_blit.sc +++ b/3rdparty/bgfx/examples/19-oit/fs_oit_wb_separate_blit.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/19-oit/makefile b/3rdparty/bgfx/examples/19-oit/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/19-oit/makefile +++ b/3rdparty/bgfx/examples/19-oit/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/19-oit/oit.cpp b/3rdparty/bgfx/examples/19-oit/oit.cpp index b8660c06362..d1e17b3faaa 100644 --- a/3rdparty/bgfx/examples/19-oit/oit.cpp +++ b/3rdparty/bgfx/examples/19-oit/oit.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -19,17 +19,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; struct PosColorTexCoord0Vertex { @@ -42,7 +42,7 @@ struct PosColorTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) @@ -50,10 +50,10 @@ struct PosColorTexCoord0Vertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosColorTexCoord0Vertex::ms_layout; static PosColorVertex s_cubeVertices[8] = { @@ -93,10 +93,10 @@ inline void mtxProj(float* _result, float _fovy, float _aspect, float _near, flo void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBottomLeft = false, float _width = 1.0f, float _height = 1.0f) { - if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_decl) ) + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosColorTexCoord0Vertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosColorTexCoord0Vertex::ms_layout); PosColorTexCoord0Vertex* vertex = (PosColorTexCoord0Vertex*)vb.data; const float zz = 0.0f; @@ -152,8 +152,8 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBott class ExampleOIT : public entry::AppI { public: - ExampleOIT(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleOIT(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -169,6 +169,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -203,15 +206,15 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); // Create static index buffer. m_ibh = bgfx::createIndexBuffer(bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ) ); // Create texture sampler uniforms. - s_texColor0 = bgfx::createUniform("s_texColor0", bgfx::UniformType::Int1); - s_texColor1 = bgfx::createUniform("s_texColor1", bgfx::UniformType::Int1); + s_texColor0 = bgfx::createUniform("s_texColor0", bgfx::UniformType::Sampler); + s_texColor1 = bgfx::createUniform("s_texColor1", bgfx::UniformType::Sampler); u_color = bgfx::createUniform("u_color", bgfx::UniformType::Vec4); m_blend = loadProgram("vs_oit", "fs_oit" ); @@ -550,4 +553,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleOIT, "19-oit", "Weighted, Blended Order Independent Transparency."); +ENTRY_IMPLEMENT_MAIN( + ExampleOIT + , "19-oit" + , "Weighted, Blended Order Independent Transparency." + , "https://bkaradzic.github.io/bgfx/examples.html#oit" + ); diff --git a/3rdparty/bgfx/examples/19-oit/vs_oit.sc b/3rdparty/bgfx/examples/19-oit/vs_oit.sc index cd66075de26..b38d28fda49 100644 --- a/3rdparty/bgfx/examples/19-oit/vs_oit.sc +++ b/3rdparty/bgfx/examples/19-oit/vs_oit.sc @@ -2,8 +2,8 @@ $input a_position $output v_pos /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/19-oit/vs_oit_blit.sc b/3rdparty/bgfx/examples/19-oit/vs_oit_blit.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/19-oit/vs_oit_blit.sc +++ b/3rdparty/bgfx/examples/19-oit/vs_oit_blit.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/20-nanovg/blendish.h b/3rdparty/bgfx/examples/20-nanovg/blendish.h index 15c2f3f0268..8322c459f4a 100644 --- a/3rdparty/bgfx/examples/20-nanovg/blendish.h +++ b/3rdparty/bgfx/examples/20-nanovg/blendish.h @@ -1739,13 +1739,13 @@ void bndNodeBackground(NVGcontext *ctx, float x, float y, float w, float h, BND_NODE_RADIUS,BND_NODE_RADIUS,0,0, bndTransparent(bndOffsetColor(titleColor, BND_BEVEL_SHADE)), bndTransparent(titleColor)); - bndInnerBox(ctx,x,y+BND_NODE_TITLE_HEIGHT-1,w,h+2-BND_NODE_TITLE_HEIGHT, + bndInnerBox(ctx,x,y+float(BND_NODE_TITLE_HEIGHT-1),w,h+2-float(BND_NODE_TITLE_HEIGHT), 0,0,BND_NODE_RADIUS,BND_NODE_RADIUS, bndTransparent(bnd_theme.nodeTheme.nodeBackdropColor), bndTransparent(bnd_theme.nodeTheme.nodeBackdropColor)); bndNodeIconLabel(ctx, - x+BND_NODE_ARROW_AREA_WIDTH,y, - w-BND_NODE_ARROW_AREA_WIDTH-BND_NODE_MARGIN_SIDE,BND_NODE_TITLE_HEIGHT, + x+float(BND_NODE_ARROW_AREA_WIDTH),y, + w-float(BND_NODE_ARROW_AREA_WIDTH)-float(BND_NODE_MARGIN_SIDE),BND_NODE_TITLE_HEIGHT, iconid, bnd_theme.regularTheme.textColor, bndOffsetColor(titleColor, BND_BEVEL_SHADE), BND_LEFT, BND_LABEL_FONT_SIZE, label); @@ -2164,7 +2164,7 @@ void bndIconLabelValue(NVGcontext *ctx, float x, float y, float w, float h, nvgTextAlign(ctx, (align==BND_LEFT)?(NVG_ALIGN_LEFT|NVG_ALIGN_BASELINE): (NVG_ALIGN_CENTER|NVG_ALIGN_BASELINE)); - nvgTextBox(ctx,x+pleft,y+BND_WIDGET_HEIGHT-BND_TEXT_PAD_DOWN, + nvgTextBox(ctx,x+pleft,y+float(BND_WIDGET_HEIGHT)-BND_TEXT_PAD_DOWN, w-BND_PAD_RIGHT-pleft,label, NULL); } } else if (iconid >= 0) { diff --git a/3rdparty/bgfx/examples/20-nanovg/nanovg.cpp b/3rdparty/bgfx/examples/20-nanovg/nanovg.cpp index 8d0e91ee60b..8330fb91fa0 100644 --- a/3rdparty/bgfx/examples/20-nanovg/nanovg.cpp +++ b/3rdparty/bgfx/examples/20-nanovg/nanovg.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ // @@ -24,9 +24,6 @@ #include "common.h" #include "bgfx_utils.h" -#include <stdio.h> -#include <math.h> - #include <bx/string.h> #include <bx/timer.h> #include <bimg/decode.h> @@ -70,7 +67,9 @@ static char* cpToUTF8(int cp, char* str) else if (cp < 0x200000) n = 4; else if (cp < 0x4000000) n = 5; else if (cp <= 0x7fffffff) n = 6; + str[n] = '\0'; + switch (n) { case 6: str[5] = 0x80 | (cp & 0x3f); cp = cp >> 6; cp |= 0x4000000; BX_FALLTHROUGH; @@ -78,8 +77,9 @@ static char* cpToUTF8(int cp, char* str) case 4: str[3] = 0x80 | (cp & 0x3f); cp = cp >> 6; cp |= 0x10000; BX_FALLTHROUGH; case 3: str[2] = 0x80 | (cp & 0x3f); cp = cp >> 6; cp |= 0x800; BX_FALLTHROUGH; case 2: str[1] = 0x80 | (cp & 0x3f); cp = cp >> 6; cp |= 0xc0; BX_FALLTHROUGH; - case 1: str[0] = char(cp); BX_FALLTHROUGH; + case 1: str[0] = char(cp); break; } + return str; } @@ -518,6 +518,32 @@ void drawGraph(struct NVGcontext* vg, float x, float y, float w, float h, float nvgStrokeWidth(vg, 1.0f); } +void drawSpinner(struct NVGcontext* vg, float cx, float cy, float r, float t) +{ + float a0 = 0.0f + t*6; + float a1 = NVG_PI + t*6; + float r0 = r; + float r1 = r * 0.75f; + float ax,ay, bx,by; + struct NVGpaint paint; + + nvgSave(vg); + + nvgBeginPath(vg); + nvgArc(vg, cx,cy, r0, a0, a1, NVG_CW); + nvgArc(vg, cx,cy, r1, a1, a0, NVG_CCW); + nvgClosePath(vg); + ax = cx + cosf(a0) * (r0+r1)*0.5f; + ay = cy + sinf(a0) * (r0+r1)*0.5f; + bx = cx + cosf(a1) * (r0+r1)*0.5f; + by = cy + sinf(a1) * (r0+r1)*0.5f; + paint = nvgLinearGradient(vg, ax,ay, bx,by, nvgRGBA(0,0,0,0), nvgRGBA(0,0,0,128) ); + nvgFillPaint(vg, paint); + nvgFill(vg); + + nvgRestore(vg); +} + void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, const int* images, int nimages, float t) { float cornerRadius = 3.0f; @@ -529,7 +555,8 @@ void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, c float stackh = (nimages/2) * (thumb+10) + 10; int i; float u = (1+cosf(t*0.5f) )*0.5f; - float scrollh; + float u2 = (1-cosf(t*0.2f) )*0.5f; + float scrollh, dv; nvgSave(vg); // nvgClearState(vg); @@ -556,8 +583,10 @@ void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, c nvgScissor(vg, x,y,w,h); nvgTranslate(vg, 0, -(stackh - h)*u); + dv = 1.0f / (float)(nimages-1); + for (i = 0; i < nimages; i++) { - float tx, ty; + float tx, ty, v, a; tx = x+10; ty = y+10; tx += (i%2) * (thumb+10); @@ -574,7 +603,14 @@ void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, c ix = -(iw-thumb)*0.5f; iy = 0; } - imgPaint = nvgImagePattern(vg, tx+ix, ty+iy, iw,ih, 0.0f/180.0f*NVG_PI, images[i], 1.0f); + + v = i * dv; + a = bx::clamp((u2-v) / dv, 0.0f, 1.0f); + + if (a < 1.0f) + drawSpinner(vg, tx+thumb/2,ty+thumb/2, thumb*0.25f, t); + + imgPaint = nvgImagePattern(vg, tx+ix, ty+iy, iw,ih, 0.0f/180.0f*NVG_PI, images[i], a); nvgBeginPath(vg); nvgRoundedRect(vg, tx,ty, thumb,thumb, 5); nvgFillPaint(vg, imgPaint); @@ -786,6 +822,7 @@ void drawLines(struct NVGcontext* vg, float x, float y, float w, float h, float } } + nvgRestore(vg); } @@ -811,7 +848,7 @@ void drawBlendish(struct NVGcontext* _vg, float _x, float _y, float _w, float _h y += 25.0f; bndLabel(_vg, x, y, 120.0f, BND_WIDGET_HEIGHT, -1, "Label:"); - y += BND_WIDGET_HEIGHT; + y += float(BND_WIDGET_HEIGHT); bndChoiceButton(_vg, x, y, 80.0f, BND_WIDGET_HEIGHT, BND_CORNER_NONE, BND_DEFAULT, -1, "Default"); y += 25.0f; bndChoiceButton(_vg, x, y, 80.0f, BND_WIDGET_HEIGHT, BND_CORNER_NONE, BND_HOVER, -1, "Hovered"); @@ -832,9 +869,9 @@ void drawBlendish(struct NVGcontext* _vg, float _x, float _y, float _w, float _h y += 40.0f; bndNumberField(_vg, x, y, 120.0f, BND_WIDGET_HEIGHT, BND_CORNER_DOWN, BND_DEFAULT, "Top", "100"); - y += BND_WIDGET_HEIGHT - 2.0f; + y += float(BND_WIDGET_HEIGHT) - 2.0f; bndNumberField(_vg, x, y, 120.0f, BND_WIDGET_HEIGHT, BND_CORNER_ALL, BND_DEFAULT, "Center", "100"); - y += BND_WIDGET_HEIGHT - 2.0f; + y += float(BND_WIDGET_HEIGHT) - 2.0f; bndNumberField(_vg, x, y, 120.0f, BND_WIDGET_HEIGHT, BND_CORNER_TOP, BND_DEFAULT, "Bottom", "100"); float mx = x - 30.0f; @@ -842,11 +879,11 @@ void drawBlendish(struct NVGcontext* _vg, float _x, float _y, float _w, float _h float mw = 120.0f; bndMenuBackground(_vg, mx, my, mw, 120.0f, BND_CORNER_TOP); bndMenuLabel(_vg, mx, my, mw, BND_WIDGET_HEIGHT, -1, "Menu Title"); - my += BND_WIDGET_HEIGHT - 2.0f; + my += float(BND_WIDGET_HEIGHT) - 2.0f; bndMenuItem(_vg, mx, my, mw, BND_WIDGET_HEIGHT, BND_DEFAULT, BND_ICONID(17, 3), "Default"); - my += BND_WIDGET_HEIGHT - 2.0f; + my += float(BND_WIDGET_HEIGHT) - 2.0f; bndMenuItem(_vg, mx, my, mw, BND_WIDGET_HEIGHT, BND_HOVER, BND_ICONID(18, 3), "Hovered"); - my += BND_WIDGET_HEIGHT - 2.0f; + my += float(BND_WIDGET_HEIGHT) - 2.0f; bndMenuItem(_vg, mx, my, mw, BND_WIDGET_HEIGHT, BND_ACTIVE, BND_ICONID(19, 3), "Active"); y = _y; @@ -939,11 +976,11 @@ void drawBlendish(struct NVGcontext* _vg, float _x, float _y, float _w, float _h struct DemoData { - int fontNormal, fontBold, fontIcons; + int fontNormal, fontBold, fontIcons, fontEmoji; int images[12]; }; -int createImage(struct NVGcontext* _ctx, const char* _filePath, int _imageFlags) +int32_t createImage(struct NVGcontext* _ctx, const char* _filePath, int _imageFlags) { uint32_t size; void* data = load(_filePath, &size); @@ -965,7 +1002,7 @@ int createImage(struct NVGcontext* _ctx, const char* _filePath, int _imageFlags) return 0; } - int texId = nvgCreateImageRGBA( + int32_t texId = nvgCreateImageRGBA( _ctx , imageContainer->m_width , imageContainer->m_height @@ -978,42 +1015,71 @@ int createImage(struct NVGcontext* _ctx, const char* _filePath, int _imageFlags) return texId; } +int32_t createFont(NVGcontext* _ctx, const char* _name, const char* _filePath) +{ + uint32_t size; + void* data = load(_filePath, &size); + if (NULL == data) + { + return -1; + } + + return nvgCreateFontMem(_ctx, _name, (uint8_t*)data, size, 0); +} + int loadDemoData(struct NVGcontext* vg, struct DemoData* data) { - for (uint32_t ii = 0; ii < 12; ++ii) + int i; + + if (vg == NULL) + return -1; + + for (i = 0; i < 12; i++) { char file[128]; - bx::snprintf(file, 128, "images/image%d.jpg", ii+1); - data->images[ii] = createImage(vg, file, 0); - if (data->images[ii] == 0) + bx::snprintf(file, 128, "images/image%d.jpg", i+1); + data->images[i] = createImage(vg, file, 0); + if (data->images[i] == 0) { - printf("Could not load %s.\n", file); + bx::debugPrintf("Could not load %s.\n", file); return -1; } } - data->fontIcons = nvgCreateFont(vg, "icons", "font/entypo.ttf"); + int32_t result = 0; + + data->fontIcons = createFont(vg, "icons", "font/entypo.ttf"); if (data->fontIcons == -1) { - printf("Could not add font icons.\n"); - return -1; + bx::debugPrintf("Could not add font icons.\n"); + result = -1; } - data->fontNormal = nvgCreateFont(vg, "sans", "font/roboto-regular.ttf"); + data->fontNormal = createFont(vg, "sans", "font/roboto-regular.ttf"); if (data->fontNormal == -1) { - printf("Could not add font italic.\n"); - return -1; + bx::debugPrintf("Could not add font italic.\n"); + result = -1; } - data->fontBold = nvgCreateFont(vg, "sans-bold", "font/roboto-bold.ttf"); + data->fontBold = createFont(vg, "sans-bold", "font/roboto-bold.ttf"); if (data->fontBold == -1) { - printf("Could not add font bold.\n"); - return -1; + bx::debugPrintf("Could not add font bold.\n"); + result = -1; } - return 0; + data->fontEmoji = createFont(vg, "emoji", "font/NotoEmoji-Regular.ttf"); + if (data->fontEmoji == -1) + { + bx::debugPrintf("Could not add font emoji.\n"); + result = -1; + } + + nvgAddFallbackFontId(vg, data->fontNormal, data->fontEmoji); + nvgAddFallbackFontId(vg, data->fontBold, data->fontEmoji); + + return result; } void freeDemoData(struct NVGcontext* vg, struct DemoData* data) @@ -1031,13 +1097,14 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h { struct NVGtextRow rows[3]; struct NVGglyphPosition glyphs[100]; - const char* text = "This is longer chunk of text.\n \n Would have used lorem ipsum but she was busy jumping over the lazy dog with the fox and all the men who came to the aid of the party."; + const char* text = "This is longer chunk of text.\n \n Would have used lorem ipsum but she was busy jumping over the lazy dog with the fox and all the men who came to the aid of the party.🎉"; const char* start; const char* end; int nrows, i, nglyphs, j, lnum = 0; float lineh; float caretx, px; float bounds[4]; + float a; float gx = 0.0f, gy = 0.0f; int gutter = 0; NVG_NOTUSED(height); @@ -1061,7 +1128,7 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h int hit = mx > x && mx < (x+width) && my >= y && my < (y+lineh); nvgBeginPath(vg); - nvgFillColor(vg, nvgRGBA(255,255,255,hit?64:8) ); + nvgFillColor(vg, nvgRGBA(255,255,255,hit?64:16) ); nvgRect(vg, x, y, row->width, lineh); nvgFill(vg); @@ -1127,6 +1194,14 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h nvgTextLineHeight(vg, 1.2f); nvgTextBoxBounds(vg, x,y, 150, "Hover your mouse over the text to see calculated caret position.", NULL, bounds); + + // Fade the tooltip out when close to it. + gx = bx::abs((mx - (bounds[0]+bounds[2])*0.5f) / (bounds[0] - bounds[2]) ); + gy = bx::abs((my - (bounds[1]+bounds[3])*0.5f) / (bounds[1] - bounds[3]) ); + a = bx::max(gx, gy) - 0.5f; + a = bx::clamp(a, 0.0f, 1.0f); + nvgGlobalAlpha(vg, a); + nvgBeginPath(vg); nvgFillColor(vg, nvgRGBA(220,220,220,255) ); nvgRoundedRect(vg @@ -1150,13 +1225,15 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h void drawWidths(struct NVGcontext* vg, float x, float y, float width) { + int i; + nvgSave(vg); nvgStrokeColor(vg, nvgRGBA(0,0,0,255) ); - for (uint32_t ii = 0; ii < 20; ++ii) + for (i = 0; i < 20; i++) { - float w = (ii+0.5f)*0.1f; + float w = (i+0.5f)*0.1f; nvgStrokeWidth(vg, w); nvgBeginPath(vg); nvgMoveTo(vg, x,y); @@ -1168,6 +1245,73 @@ void drawWidths(struct NVGcontext* vg, float x, float y, float width) nvgRestore(vg); } +void drawCaps(struct NVGcontext* vg, float x, float y, float width) +{ + int i; + int caps[3] = {NVG_BUTT, NVG_ROUND, NVG_SQUARE}; + float lineWidth = 8.0f; + + nvgSave(vg); + + nvgBeginPath(vg); + nvgRect(vg, x-lineWidth/2, y, width+lineWidth, 40); + nvgFillColor(vg, nvgRGBA(255,255,255,32) ); + nvgFill(vg); + + nvgBeginPath(vg); + nvgRect(vg, x, y, width, 40); + nvgFillColor(vg, nvgRGBA(255,255,255,32) ); + nvgFill(vg); + + nvgStrokeWidth(vg, lineWidth); + for (i = 0; i < 3; i++) { + nvgLineCap(vg, caps[i]); + nvgStrokeColor(vg, nvgRGBA(0,0,0,255) ); + nvgBeginPath(vg); + nvgMoveTo(vg, x, y + i*10 + 5); + nvgLineTo(vg, x+width, y + i*10 + 5); + nvgStroke(vg); + } + + nvgRestore(vg); +} + +void drawScissor(struct NVGcontext* vg, float x, float y, float t) +{ + nvgSave(vg); + + // Draw first rect and set scissor to it's area. + nvgTranslate(vg, x, y); + nvgRotate(vg, nvgDegToRad(5) ); + nvgBeginPath(vg); + nvgRect(vg, -20,-20,60,40); + nvgFillColor(vg, nvgRGBA(255,0,0,255) ); + nvgFill(vg); + nvgScissor(vg, -20,-20,60,40); + + // Draw second rectangle with offset and rotation. + nvgTranslate(vg, 40,0); + nvgRotate(vg, t); + + // Draw the intended second rectangle without any scissoring. + nvgSave(vg); + nvgResetScissor(vg); + nvgBeginPath(vg); + nvgRect(vg, -20,-10,60,30); + nvgFillColor(vg, nvgRGBA(255,128,0,64) ); + nvgFill(vg); + nvgRestore(vg); + + // Draw second rectangle with combined scissoring. + nvgIntersectScissor(vg, -20,-10,60,30); + nvgBeginPath(vg); + nvgRect(vg, -20,-10,60,30); + nvgFillColor(vg, nvgRGBA(255,128,0,255) ); + nvgFill(vg); + + nvgRestore(vg); +} + void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float height, float t, int blowup, struct DemoData* data) { float x,y,popx,popy; @@ -1181,6 +1325,14 @@ void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float he // Line joints drawLines(vg, 50, height-50, 600, 35, t); + // Line caps + drawWidths(vg, width-50, 35, 30); + + // Line caps + drawCaps(vg, width-50, 260, 30); + + drawScissor(vg, 40, height-150, t); + nvgSave(vg); if (blowup) { @@ -1188,9 +1340,6 @@ void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float he nvgScale(vg, 2.0f, 2.0f); } - // Line width. - drawWidths(vg, width-50, 35, 30); - // Widgets. x = width-520; y = height-420; drawWindow(vg, "Widgets `n Stuff", x, y, 300, 400); @@ -1236,8 +1385,8 @@ void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float he class ExampleNanoVG : public entry::AppI { public: - ExampleNanoVG(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleNanoVG(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -1253,6 +1402,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -1276,7 +1428,7 @@ public: loadDemoData(m_nvg, &m_data); - bndSetFont(nvgCreateFont(m_nvg, "droidsans", "font/droidsans.ttf") ); + bndSetFont(createFont(m_nvg, "droidsans", "font/droidsans.ttf") ); bndSetIconImage(createImage(m_nvg, "images/blender_icons16.png", 0) ); m_timeOffset = bx::getHPCounter(); @@ -1325,7 +1477,7 @@ public: // if no other draw calls are submitted to view 0. bgfx::touch(0); - nvgBeginFrame(m_nvg, m_width, m_height, 1.0f); + nvgBeginFrame(m_nvg, float(m_width), float(m_height), 1.0f); renderDemo(m_nvg, float(m_mouseState.m_mx), float(m_mouseState.m_my), float(m_width), float(m_height), time, 0, &m_data); @@ -1356,4 +1508,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleNanoVG, "20-nanovg", "NanoVG is small antialiased vector graphics rendering library."); +ENTRY_IMPLEMENT_MAIN( + ExampleNanoVG + , "20-nanovg" + , "NanoVG is small antialiased vector graphics rendering library." + , "https://bkaradzic.github.io/bgfx/examples.html#nanovg" + ); diff --git a/3rdparty/bgfx/examples/21-deferred/common.sh b/3rdparty/bgfx/examples/21-deferred/common.sh new file mode 100644 index 00000000000..14dd727bb57 --- /dev/null +++ b/3rdparty/bgfx/examples/21-deferred/common.sh @@ -0,0 +1,46 @@ +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +vec2 blinn(vec3 _lightDir, vec3 _normal, vec3 _viewDir) +{ + float ndotl = dot(_normal, _lightDir); + vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal); + float rdotv = dot(reflected, _viewDir); + return vec2(ndotl, rdotv); +} + +float fresnel(float _ndotl, float _bias, float _pow) +{ + float facing = (1.0 - _ndotl); + return max(_bias + (1.0 - _bias) * pow(facing, _pow), 0.0); +} + +vec4 lit(float _ndotl, float _rdotv, float _m) +{ + float diff = max(0.0, _ndotl); + float spec = step(0.0, _ndotl) * max(0.0, _rdotv * _m); + return vec4(1.0, diff, spec, 1.0); +} + +vec4 powRgba(vec4 _rgba, float _pow) +{ + vec4 result; + result.xyz = pow(_rgba.xyz, vec3_splat(_pow) ); + result.w = _rgba.w; + return result; +} + +vec3 calcLight(vec3 _wpos, vec3 _normal, vec3 _view, vec3 _lightPos, float _lightRadius, vec3 _lightRgb, float _lightInner) +{ + vec3 lp = _lightPos - _wpos; + float attn = 1.0 - smoothstep(_lightInner, 1.0, length(lp) / _lightRadius); + vec3 lightDir = normalize(lp); + vec2 bln = blinn(lightDir, _normal, _view); + vec4 lc = lit(bln.x, bln.y, 1.0); + vec3 rgb = _lightRgb * saturate(lc.y) * attn; + return rgb; +} diff --git a/3rdparty/bgfx/examples/21-deferred/deferred.cpp b/3rdparty/bgfx/examples/21-deferred/deferred.cpp index 00379705b05..546db681c97 100644 --- a/3rdparty/bgfx/examples/21-deferred/deferred.cpp +++ b/3rdparty/bgfx/examples/21-deferred/deferred.cpp @@ -1,22 +1,23 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ +#include <bx/bounds.h> #include "common.h" #include "bgfx_utils.h" #include "imgui/imgui.h" #include "camera.h" -#include "bounds.h" namespace { -#define RENDER_PASS_GEOMETRY_ID 0 -#define RENDER_PASS_LIGHT_ID 1 -#define RENDER_PASS_COMBINE_ID 2 -#define RENDER_PASS_DEBUG_LIGHTS_ID 3 -#define RENDER_PASS_DEBUG_GBUFFER_ID 4 +constexpr bgfx::ViewId kRenderPassGeometry = 0; +constexpr bgfx::ViewId kRenderPassClearUav = 1; +constexpr bgfx::ViewId kRenderPassLight = 2; +constexpr bgfx::ViewId kRenderPassCombine = 3; +constexpr bgfx::ViewId kRenderPassDebugLights = 4; +constexpr bgfx::ViewId kRenderPassDebugGBuffer = 5; static float s_texelHalf = 0.0f; @@ -32,7 +33,7 @@ struct PosNormalTangentTexcoordVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true) @@ -41,10 +42,10 @@ struct PosNormalTangentTexcoordVertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosNormalTangentTexcoordVertex::ms_decl; +bgfx::VertexLayout PosNormalTangentTexcoordVertex::ms_layout; struct PosTexCoord0Vertex { @@ -56,17 +57,17 @@ struct PosTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; struct DebugVertex { @@ -77,17 +78,17 @@ struct DebugVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl DebugVertex::ms_decl; +bgfx::VertexLayout DebugVertex::ms_layout; static PosNormalTangentTexcoordVertex s_cubeVertices[24] = { @@ -137,10 +138,10 @@ static const uint16_t s_cubeIndices[36] = void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) { - if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_decl) ) + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; const float minx = -_width; @@ -193,8 +194,8 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf class ExampleDeferred : public entry::AppI { public: - ExampleDeferred(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleDeferred(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -210,6 +211,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -225,15 +229,16 @@ public: bgfx::setPaletteColor(1, UINT32_C(0x303030ff) ); // Set geometry pass view clear state. - bgfx::setViewClear(RENDER_PASS_GEOMETRY_ID + bgfx::setViewClear(kRenderPassGeometry , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH , 1.0f , 0 , 1 + , 0 ); // Set light pass view clear state. - bgfx::setViewClear(RENDER_PASS_LIGHT_ID + bgfx::setViewClear(kRenderPassLight , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH , 1.0f , 0 @@ -247,7 +252,7 @@ public: calcTangents(s_cubeVertices , BX_COUNTOF(s_cubeVertices) - , PosNormalTangentTexcoordVertex::ms_decl + , PosNormalTangentTexcoordVertex::ms_layout , s_cubeIndices , BX_COUNTOF(s_cubeIndices) ); @@ -255,24 +260,25 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosNormalTangentTexcoordVertex::ms_decl + , PosNormalTangentTexcoordVertex::ms_layout ); // Create static index buffer. m_ibh = bgfx::createIndexBuffer(bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ) ); // Create texture sampler uniforms. - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); - s_texNormal = bgfx::createUniform("s_texNormal", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + s_texNormal = bgfx::createUniform("s_texNormal", bgfx::UniformType::Sampler); - s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Int1); - s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Int1); - s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Int1); - s_light = bgfx::createUniform("s_light", bgfx::UniformType::Int1); + s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler); + s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Sampler); + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler); + s_light = bgfx::createUniform("s_light", bgfx::UniformType::Sampler); u_mtx = bgfx::createUniform("u_mtx", bgfx::UniformType::Mat4); u_lightPosRadius = bgfx::createUniform("u_lightPosRadius", bgfx::UniformType::Vec4); u_lightRgbInnerR = bgfx::createUniform("u_lightRgbInnerR", bgfx::UniformType::Vec4); + u_layer = bgfx::createUniform("u_layer", bgfx::UniformType::Vec4); // Create program from shaders. m_geomProgram = loadProgram("vs_deferred_geom", "fs_deferred_geom"); @@ -281,17 +287,48 @@ public: m_debugProgram = loadProgram("vs_deferred_debug", "fs_deferred_debug"); m_lineProgram = loadProgram("vs_deferred_debug_line", "fs_deferred_debug_line"); + m_useTArray = false; + m_useUav = false; + + if (0 != (BGFX_CAPS_TEXTURE_2D_ARRAY & bgfx::getCaps()->supported) ) + { + m_lightTaProgram = loadProgram("vs_deferred_light", "fs_deferred_light_ta"); + m_combineTaProgram = loadProgram("vs_deferred_combine", "fs_deferred_combine_ta"); + m_debugTaProgram = loadProgram("vs_deferred_debug", "fs_deferred_debug_ta"); + } + else + { + m_lightTaProgram = BGFX_INVALID_HANDLE; + m_combineTaProgram = BGFX_INVALID_HANDLE; + m_debugTaProgram = BGFX_INVALID_HANDLE; + } + + if (0 != (BGFX_CAPS_IMAGE_RW & bgfx::getCaps()->supported) + && 0 != (BGFX_CAPS_FORMAT_TEXTURE_IMAGE_READ & bgfx::getCaps()->formats[bgfx::TextureFormat::RGBA8]) + && 0 != (BGFX_CAPS_FORMAT_TEXTURE_IMAGE_WRITE & bgfx::getCaps()->formats[bgfx::TextureFormat::RGBA8]) ) + { + m_clearUavProgram = loadProgram("vs_deferred_light", "fs_deferred_clear_uav"); + m_lightUavProgram = loadProgram("vs_deferred_light", "fs_deferred_light_uav"); + } + else + { + m_lightUavProgram = BGFX_INVALID_HANDLE; + m_clearUavProgram = BGFX_INVALID_HANDLE; + } + // Load diffuse texture. m_textureColor = loadTexture("textures/fieldstone-rgba.dds"); // Load normal texture. m_textureNormal = loadTexture("textures/fieldstone-n.dds"); + m_lightBufferTex.idx = bgfx::kInvalidHandle; + m_gbufferTex[0].idx = bgfx::kInvalidHandle; m_gbufferTex[1].idx = bgfx::kInvalidHandle; m_gbufferTex[2].idx = bgfx::kInvalidHandle; - m_gbuffer.idx = bgfx::kInvalidHandle; - m_lightBuffer.idx = bgfx::kInvalidHandle; + m_gbuffer.idx = bgfx::kInvalidHandle; + m_lightBuffer.idx = bgfx::kInvalidHandle; // Imgui. imguiCreate(); @@ -316,8 +353,7 @@ public: cameraCreate(); - const float initialPos[3] = { 0.0f, 0.0f, -15.0f }; - cameraSetPosition(initialPos); + cameraSetPosition({ 0.0f, 0.0f, -15.0f }); cameraSetVerticalAngle(0.0f); } @@ -330,16 +366,49 @@ public: if (bgfx::isValid(m_gbuffer) ) { bgfx::destroy(m_gbuffer); + } + + if (bgfx::isValid(m_lightBuffer) ) + { bgfx::destroy(m_lightBuffer); } + if (bgfx::isValid(m_lightBufferTex) ) + { + bgfx::destroy(m_lightBufferTex); + } + bgfx::destroy(m_ibh); bgfx::destroy(m_vbh); bgfx::destroy(m_geomProgram); bgfx::destroy(m_lightProgram); + + if (bgfx::isValid(m_lightTaProgram) ) + { + bgfx::destroy(m_lightTaProgram); + } + + if (bgfx::isValid(m_lightUavProgram) ) + { + bgfx::destroy(m_lightUavProgram); + bgfx::destroy(m_clearUavProgram); + } + bgfx::destroy(m_combineProgram); + + if (bgfx::isValid(m_combineTaProgram) ) + { + bgfx::destroy(m_combineTaProgram); + } + bgfx::destroy(m_debugProgram); + + if (bgfx::isValid(m_debugTaProgram) ) + { + bgfx::destroy(m_debugTaProgram); + } + bgfx::destroy(m_lineProgram); bgfx::destroy(m_textureColor); @@ -352,6 +421,7 @@ public: bgfx::destroy(s_depth); bgfx::destroy(s_light); + bgfx::destroy(u_layer); bgfx::destroy(u_lightPosRadius); bgfx::destroy(u_lightRgbInnerR); bgfx::destroy(u_mtx); @@ -367,14 +437,14 @@ public: if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) { imguiBeginFrame(m_mouseState.m_mx - , m_mouseState.m_my - , (m_mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) - | (m_mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) - | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) - , m_mouseState.m_mz - , uint16_t(m_width) - , uint16_t(m_height) - ); + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); showExampleDialog(this); @@ -387,6 +457,43 @@ public: float time = (float)( (now-m_timeOffset)/freq); + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 3.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings", NULL, 0); + + ImGui::SliderInt("Num lights", &m_numLights, 1, 2048); + ImGui::Checkbox("Show G-Buffer.", &m_showGBuffer); + ImGui::Checkbox("Show light scissor.", &m_showScissorRects); + + if (bgfx::isValid(m_lightTaProgram)) + { + ImGui::Checkbox("Use texture array frame buffer.", &m_useTArray); + } + else + { + ImGui::Text("Texture array frame buffer is not supported."); + } + + if (bgfx::isValid(m_lightUavProgram)) + { + ImGui::Checkbox("Use UAV.", &m_useUav); + } + else + { + ImGui::Text("UAV is not supported."); + } + + ImGui::Checkbox("Animate mesh.", &m_animateMesh); + ImGui::SliderFloat("Anim.speed", &m_lightAnimationSpeed, 0.0f, 0.4f); + + ImGui::End(); + if (2 > m_caps->limits.maxFBAttachments) { // When multiple render targets (MRT) is not supported by GPU, @@ -403,65 +510,88 @@ public: } else { - if (m_oldWidth != m_width - || m_oldHeight != m_height - || m_oldReset != m_reset + if (m_oldWidth != m_width + || m_oldHeight != m_height + || m_oldReset != m_reset + || m_oldUseTArray != m_useTArray + || m_oldUseUav != m_useUav || !bgfx::isValid(m_gbuffer) ) { // Recreate variable size render targets when resolution changes. - m_oldWidth = m_width; - m_oldHeight = m_height; - m_oldReset = m_reset; + m_oldWidth = m_width; + m_oldHeight = m_height; + m_oldReset = m_reset; + m_oldUseTArray = m_useTArray; + m_oldUseUav = m_useUav; if (bgfx::isValid(m_gbuffer) ) { bgfx::destroy(m_gbuffer); + m_gbufferTex[0].idx = bgfx::kInvalidHandle; + m_gbufferTex[1].idx = bgfx::kInvalidHandle; + m_gbufferTex[2].idx = bgfx::kInvalidHandle; } const uint64_t tsFlags = 0 - | BGFX_TEXTURE_RT | BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_MIP_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP ; - m_gbufferTex[0] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, tsFlags); - m_gbufferTex[1] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, tsFlags); - m_gbufferTex[2] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::D24S8, tsFlags); - m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_gbufferTex), m_gbufferTex, true); - if (bgfx::isValid(m_lightBuffer) ) + bgfx::Attachment gbufferAt[3]; + + if (m_useTArray) { - bgfx::destroy(m_lightBuffer); + m_gbufferTex[0] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 2, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT | tsFlags); + gbufferAt[0].init(m_gbufferTex[0], bgfx::Access::Write, 0); + gbufferAt[1].init(m_gbufferTex[0], bgfx::Access::Write, 1); + } + else + { + m_gbufferTex[0] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT | tsFlags); + m_gbufferTex[1] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT | tsFlags); + gbufferAt[0].init(m_gbufferTex[0]); + gbufferAt[1].init(m_gbufferTex[1]); } - m_lightBuffer = bgfx::createFrameBuffer(uint16_t(m_width), uint16_t(m_height), bgfx::TextureFormat::BGRA8, tsFlags); - } + bgfx::TextureFormat::Enum depthFormat = + bgfx::isTextureValid(0, false, 1, bgfx::TextureFormat::D32F, BGFX_TEXTURE_RT | tsFlags) + ? bgfx::TextureFormat::D32F + : bgfx::TextureFormat::D24 + ; - ImGui::SetNextWindowPos( - ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) - , ImGuiCond_FirstUseEver - ); - ImGui::SetNextWindowSize( - ImVec2(m_width / 5.0f, m_height / 3.0f) - , ImGuiCond_FirstUseEver - ); - ImGui::Begin("Settings" - , NULL - , 0 - ); + m_gbufferTex[2] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, depthFormat, BGFX_TEXTURE_RT | tsFlags); + gbufferAt[2].init(m_gbufferTex[2]); - ImGui::SliderInt("Num lights", &m_numLights, 1, 2048); - ImGui::Checkbox("Show G-Buffer.", &m_showGBuffer); - ImGui::Checkbox("Show light scissor.", &m_showScissorRects); - ImGui::Checkbox("Animate mesh.", &m_animateMesh); - ImGui::SliderFloat("Anim.speed", &m_lightAnimationSpeed, 0.0f, 0.4f); + m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(gbufferAt), gbufferAt, true); - ImGui::End(); + if (bgfx::isValid(m_lightBuffer) ) + { + bgfx::destroy(m_lightBuffer); + m_lightBuffer.idx = bgfx::kInvalidHandle; + } + + if (bgfx::isValid(m_lightBufferTex)) + { + bgfx::destroy(m_lightBufferTex); + m_lightBufferTex.idx = bgfx::kInvalidHandle; + } + + if (m_useUav) + { + m_lightBufferTex = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::RGBA8, BGFX_TEXTURE_COMPUTE_WRITE | tsFlags); + } + else + { + m_lightBufferTex = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT | tsFlags); + m_lightBuffer = bgfx::createFrameBuffer(1, &m_lightBufferTex, true); + } + } // Update camera. - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); float view[16]; cameraGetViewMtx(view); @@ -470,19 +600,27 @@ public: float vp[16]; float invMvp[16]; { - bgfx::setViewRect(RENDER_PASS_GEOMETRY_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_LIGHT_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_COMBINE_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_DEBUG_LIGHTS_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - bgfx::setViewRect(RENDER_PASS_DEBUG_GBUFFER_ID, 0, 0, uint16_t(m_width), uint16_t(m_height) ); - - bgfx::setViewFrameBuffer(RENDER_PASS_LIGHT_ID, m_lightBuffer); + bgfx::setViewRect(kRenderPassGeometry, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassClearUav, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassLight, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassCombine, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassDebugLights, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewRect(kRenderPassDebugGBuffer, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + + if (!m_useUav) + { + bgfx::setViewFrameBuffer(kRenderPassLight, m_lightBuffer); + } + else + { + bgfx::setViewFrameBuffer(kRenderPassLight, BGFX_INVALID_HANDLE); + } float proj[16]; bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, m_caps->homogeneousDepth); - bgfx::setViewFrameBuffer(RENDER_PASS_GEOMETRY_ID, m_gbuffer); - bgfx::setViewTransform(RENDER_PASS_GEOMETRY_ID, view, proj); + bgfx::setViewFrameBuffer(kRenderPassGeometry, m_gbuffer); + bgfx::setViewTransform(kRenderPassGeometry, view, proj); bx::mtxMul(vp, view, proj); bx::mtxInverse(invMvp, vp); @@ -490,16 +628,17 @@ public: const bgfx::Caps* caps = bgfx::getCaps(); bx::mtxOrtho(proj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 100.0f, 0.0f, caps->homogeneousDepth); - bgfx::setViewTransform(RENDER_PASS_LIGHT_ID, NULL, proj); - bgfx::setViewTransform(RENDER_PASS_COMBINE_ID, NULL, proj); + bgfx::setViewTransform(kRenderPassClearUav, NULL, proj); + bgfx::setViewTransform(kRenderPassLight, NULL, proj); + bgfx::setViewTransform(kRenderPassCombine, NULL, proj); const float aspectRatio = float(m_height)/float(m_width); const float size = 10.0f; bx::mtxOrtho(proj, -size, size, size*aspectRatio, -size*aspectRatio, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); - bgfx::setViewTransform(RENDER_PASS_DEBUG_GBUFFER_ID, NULL, proj); + bgfx::setViewTransform(kRenderPassDebugGBuffer, NULL, proj); bx::mtxOrtho(proj, 0.0f, (float)m_width, 0.0f, (float)m_height, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); - bgfx::setViewTransform(RENDER_PASS_DEBUG_LIGHTS_ID, NULL, proj); + bgfx::setViewTransform(kRenderPassDebugLights, NULL, proj); } const uint32_t dim = 11; @@ -536,75 +675,78 @@ public: // Set render states. bgfx::setState(0 - | BGFX_STATE_WRITE_RGB - | BGFX_STATE_WRITE_A - | BGFX_STATE_WRITE_Z - | BGFX_STATE_DEPTH_TEST_LESS - | BGFX_STATE_MSAA - ); + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + | BGFX_STATE_MSAA + ); // Submit primitive for rendering to view 0. - bgfx::submit(RENDER_PASS_GEOMETRY_ID, m_geomProgram); + bgfx::submit(kRenderPassGeometry, m_geomProgram); } } + // Clear UAV texture + if (m_useUav) + { + screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, m_caps->originBottomLeft); + bgfx::setViewFrameBuffer(kRenderPassClearUav, BGFX_INVALID_HANDLE); + bgfx::setState(0); + bgfx::setImage(2, m_lightBufferTex, 0, bgfx::Access::ReadWrite, bgfx::TextureFormat::RGBA8); + bgfx::submit(kRenderPassClearUav, m_clearUavProgram); + } + // Draw lights into light buffer. for (int32_t light = 0; light < m_numLights; ++light) { - Sphere lightPosRadius; + bx::Sphere lightPosRadius; float lightTime = time * m_lightAnimationSpeed * (bx::sin(light/float(m_numLights) * bx::kPiHalf ) * 0.5f + 0.5f); - lightPosRadius.m_center.x = bx::sin( ( (lightTime + light*0.47f) + bx::kPiHalf*1.37f ) )*offset; - lightPosRadius.m_center.y = bx::cos( ( (lightTime + light*0.69f) + bx::kPiHalf*1.49f ) )*offset; - lightPosRadius.m_center.z = bx::sin( ( (lightTime + light*0.37f) + bx::kPiHalf*1.57f ) )*2.0f; - lightPosRadius.m_radius = 2.0f; + lightPosRadius.center.x = bx::sin( ( (lightTime + light*0.47f) + bx::kPiHalf*1.37f ) )*offset; + lightPosRadius.center.y = bx::cos( ( (lightTime + light*0.69f) + bx::kPiHalf*1.49f ) )*offset; + lightPosRadius.center.z = bx::sin( ( (lightTime + light*0.37f) + bx::kPiHalf*1.57f ) )*2.0f; + lightPosRadius.radius = 2.0f; - Aabb aabb; + bx::Aabb aabb; toAabb(aabb, lightPosRadius); - float box[8][3] = + const bx::Vec3 box[8] = { - { aabb.m_min.x, aabb.m_min.y, aabb.m_min.z }, - { aabb.m_min.x, aabb.m_min.y, aabb.m_max.z }, - { aabb.m_min.x, aabb.m_max.y, aabb.m_min.z }, - { aabb.m_min.x, aabb.m_max.y, aabb.m_max.z }, - { aabb.m_max.x, aabb.m_min.y, aabb.m_min.z }, - { aabb.m_max.x, aabb.m_min.y, aabb.m_max.z }, - { aabb.m_max.x, aabb.m_max.y, aabb.m_min.z }, - { aabb.m_max.x, aabb.m_max.y, aabb.m_max.z }, + { aabb.min.x, aabb.min.y, aabb.min.z }, + { aabb.min.x, aabb.min.y, aabb.max.z }, + { aabb.min.x, aabb.max.y, aabb.min.z }, + { aabb.min.x, aabb.max.y, aabb.max.z }, + { aabb.max.x, aabb.min.y, aabb.min.z }, + { aabb.max.x, aabb.min.y, aabb.max.z }, + { aabb.max.x, aabb.max.y, aabb.min.z }, + { aabb.max.x, aabb.max.y, aabb.max.z }, }; - float xyz[3]; - bx::vec3MulMtxH(xyz, box[0], vp); - float minx = xyz[0]; - float miny = xyz[1]; - float maxx = xyz[0]; - float maxy = xyz[1]; - float maxz = xyz[2]; + bx::Vec3 xyz = bx::mulH(box[0], vp); + bx::Vec3 min = xyz; + bx::Vec3 max = xyz; for (uint32_t ii = 1; ii < 8; ++ii) { - bx::vec3MulMtxH(xyz, box[ii], vp); - minx = bx::min(minx, xyz[0]); - miny = bx::min(miny, xyz[1]); - maxx = bx::max(maxx, xyz[0]); - maxy = bx::max(maxy, xyz[1]); - maxz = bx::max(maxz, xyz[2]); + xyz = bx::mulH(box[ii], vp); + min = bx::min(min, xyz); + max = bx::max(max, xyz); } // Cull light if it's fully behind camera. - if (maxz >= 0.0f) + if (max.z >= 0.0f) { - float x0 = bx::clamp( (minx * 0.5f + 0.5f) * m_width, 0.0f, (float)m_width); - float y0 = bx::clamp( (miny * 0.5f + 0.5f) * m_height, 0.0f, (float)m_height); - float x1 = bx::clamp( (maxx * 0.5f + 0.5f) * m_width, 0.0f, (float)m_width); - float y1 = bx::clamp( (maxy * 0.5f + 0.5f) * m_height, 0.0f, (float)m_height); + const float x0 = bx::clamp( (min.x * 0.5f + 0.5f) * m_width, 0.0f, (float)m_width); + const float y0 = bx::clamp( (min.y * 0.5f + 0.5f) * m_height, 0.0f, (float)m_height); + const float x1 = bx::clamp( (max.x * 0.5f + 0.5f) * m_width, 0.0f, (float)m_width); + const float y1 = bx::clamp( (max.y * 0.5f + 0.5f) * m_height, 0.0f, (float)m_height); if (m_showScissorRects) { bgfx::TransientVertexBuffer tvb; bgfx::TransientIndexBuffer tib; - if (bgfx::allocTransientBuffers(&tvb, DebugVertex::ms_decl, 4, &tib, 8) ) + if (bgfx::allocTransientBuffers(&tvb, DebugVertex::ms_layout, 4, &tib, 8) ) { uint32_t abgr = 0x8000ff00; @@ -645,11 +787,11 @@ public: bgfx::setVertexBuffer(0, &tvb); bgfx::setIndexBuffer(&tib); bgfx::setState(0 - | BGFX_STATE_WRITE_RGB - | BGFX_STATE_PT_LINES - | BGFX_STATE_BLEND_ALPHA - ); - bgfx::submit(RENDER_PASS_DEBUG_LIGHTS_ID, m_lineProgram); + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_PT_LINES + | BGFX_STATE_BLEND_ALPHA + ); + bgfx::submit(kRenderPassDebugLights, m_lineProgram); } } @@ -671,45 +813,83 @@ public: bgfx::setTexture(0, s_normal, bgfx::getTexture(m_gbuffer, 1) ); bgfx::setTexture(1, s_depth, bgfx::getTexture(m_gbuffer, 2) ); bgfx::setState(0 - | BGFX_STATE_WRITE_RGB - | BGFX_STATE_WRITE_A - | BGFX_STATE_BLEND_ADD - ); + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_BLEND_ADD + ); screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, m_caps->originBottomLeft); - bgfx::submit(RENDER_PASS_LIGHT_ID, m_lightProgram); + + if (bgfx::isValid(m_lightTaProgram) + && m_useTArray) + { + bgfx::submit(kRenderPassLight, m_lightTaProgram); + } + else if (bgfx::isValid(m_lightUavProgram) + && m_useUav) + { + bgfx::setViewFrameBuffer(kRenderPassLight, BGFX_INVALID_HANDLE); + bgfx::setState(0); + bgfx::setImage(3, m_lightBufferTex, 0, bgfx::Access::ReadWrite, bgfx::TextureFormat::RGBA8); + bgfx::submit(kRenderPassLight, m_lightUavProgram); + } + else + { + bgfx::submit(kRenderPassLight, m_lightProgram); + } } } // Combine color and light buffers. - bgfx::setTexture(0, s_albedo, bgfx::getTexture(m_gbuffer, 0) ); - bgfx::setTexture(1, s_light, bgfx::getTexture(m_lightBuffer, 0) ); + bgfx::setTexture(0, s_albedo, bgfx::getTexture(m_gbuffer, 0) ); + bgfx::setTexture(1, s_light, m_lightBufferTex); bgfx::setState(0 - | BGFX_STATE_WRITE_RGB - | BGFX_STATE_WRITE_A - ); + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + ); screenSpaceQuad( (float)m_width, (float)m_height, s_texelHalf, m_caps->originBottomLeft); - bgfx::submit(RENDER_PASS_COMBINE_ID, m_combineProgram); + + if (bgfx::isValid(m_lightTaProgram) + && m_useTArray) + { + bgfx::submit(kRenderPassCombine, m_combineTaProgram); + } + else + { + bgfx::submit(kRenderPassCombine, m_combineProgram); + } if (m_showGBuffer) { const float aspectRatio = float(m_width)/float(m_height); // Draw m_debug m_gbuffer. - for (uint32_t ii = 0; ii < BX_COUNTOF(m_gbufferTex); ++ii) + for (uint8_t ii = 0; ii < BX_COUNTOF(m_gbufferTex); ++ii) { float mtx[16]; bx::mtxSRT(mtx - , aspectRatio, 1.0f, 1.0f - , 0.0f, 0.0f, 0.0f - , -7.9f - BX_COUNTOF(m_gbufferTex)*0.1f*0.5f + ii*2.1f*aspectRatio, 4.0f, 0.0f - ); + , aspectRatio, 1.0f, 1.0f + , 0.0f, 0.0f, 0.0f + , -7.9f - BX_COUNTOF(m_gbufferTex)*0.1f*0.5f + ii*2.1f*aspectRatio, 4.0f, 0.0f + ); bgfx::setTransform(mtx); bgfx::setVertexBuffer(0, m_vbh); bgfx::setIndexBuffer(m_ibh, 0, 6); - bgfx::setTexture(0, s_texColor, m_gbufferTex[ii]); + bgfx::setTexture(0, s_texColor, bgfx::getTexture(m_gbuffer, ii) ); bgfx::setState(BGFX_STATE_WRITE_RGB); - bgfx::submit(RENDER_PASS_DEBUG_GBUFFER_ID, m_debugProgram); + + if (ii != BX_COUNTOF(m_gbufferTex) - 1 + && bgfx::isValid(m_lightTaProgram) + && m_useTArray) + { + const float layer[4] = { float(ii) }; + bgfx::setUniform(u_layer, layer); + bgfx::submit(kRenderPassDebugGBuffer, m_debugTaProgram); + } + else + { + bgfx::submit(kRenderPassDebugGBuffer, m_debugProgram); + } } } } @@ -739,16 +919,23 @@ public: bgfx::UniformHandle u_mtx; bgfx::UniformHandle u_lightPosRadius; bgfx::UniformHandle u_lightRgbInnerR; + bgfx::UniformHandle u_layer; bgfx::ProgramHandle m_geomProgram; bgfx::ProgramHandle m_lightProgram; + bgfx::ProgramHandle m_lightTaProgram; + bgfx::ProgramHandle m_lightUavProgram; + bgfx::ProgramHandle m_clearUavProgram; bgfx::ProgramHandle m_combineProgram; + bgfx::ProgramHandle m_combineTaProgram; bgfx::ProgramHandle m_debugProgram; + bgfx::ProgramHandle m_debugTaProgram; bgfx::ProgramHandle m_lineProgram; bgfx::TextureHandle m_textureColor; bgfx::TextureHandle m_textureNormal; bgfx::TextureHandle m_gbufferTex[3]; + bgfx::TextureHandle m_lightBufferTex; bgfx::FrameBufferHandle m_gbuffer; bgfx::FrameBufferHandle m_lightBuffer; @@ -761,6 +948,12 @@ public: uint32_t m_oldHeight; uint32_t m_oldReset; + bool m_useTArray; + bool m_oldUseTArray; + + bool m_useUav; + bool m_oldUseUav; + int32_t m_scrollArea; int32_t m_numLights; float m_lightAnimationSpeed; @@ -776,4 +969,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleDeferred, "21-deferred", "MRT rendering and deferred shading."); +ENTRY_IMPLEMENT_MAIN( + ExampleDeferred + , "21-deferred" + , "MRT rendering and deferred shading." + , "https://bkaradzic.github.io/bgfx/examples.html#deferred" + ); diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_clear_uav.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_clear_uav.sc new file mode 100644 index 00000000000..bf355703e77 --- /dev/null +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_clear_uav.sc @@ -0,0 +1,16 @@ +$input v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include <bgfx_compute.sh> + +IMAGE2D_RW(i_light, rgba8, 2); + +void main() +{ + ivec2 coord = ivec2(gl_FragCoord.xy); + imageStore(i_light, coord, vec4(0.0, 0.0, 0.0, 0.0) ); +} diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_combine.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_combine.sc index 524732cc612..31318e33171 100644 --- a/3rdparty/bgfx/examples/21-deferred/fs_deferred_combine.sc +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_combine.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_combine_ta.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_combine_ta.sc new file mode 100644 index 00000000000..ce18dcc1e1c --- /dev/null +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_combine_ta.sc @@ -0,0 +1,18 @@ +$input v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +SAMPLER2DARRAY(s_albedo, 0); +SAMPLER2D(s_light, 1); + +void main() +{ + vec4 albedo = toLinear(texture2DArray(s_albedo, vec3(v_texcoord0, 0.0) ) ); + vec4 light = toLinear(texture2D(s_light, v_texcoord0) ); + gl_FragColor = toGamma(albedo*light); +} diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug.sc index 9dc1de09e31..1d3b0951a5a 100644 --- a/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug.sc +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug_line.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug_line.sc index 99ec64685ad..8ea959c83db 100644 --- a/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug_line.sc +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug_line.sc @@ -1,8 +1,8 @@ $input v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug_ta.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug_ta.sc new file mode 100644 index 00000000000..e69f2fcdab4 --- /dev/null +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_debug_ta.sc @@ -0,0 +1,17 @@ +$input v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +SAMPLER2DARRAY(s_texColor, 0); + +uniform vec4 u_layer; + +void main() +{ + gl_FragColor = texture2DArray(s_texColor, vec3(v_texcoord0, u_layer.x) ); +} diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_geom.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_geom.sc index 2026e7e8af3..0466d720a7a 100644 --- a/3rdparty/bgfx/examples/21-deferred/fs_deferred_geom.sc +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_geom.sc @@ -1,8 +1,8 @@ $input v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc index dac140d8e3d..680b5a8e0fc 100644 --- a/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc @@ -1,11 +1,11 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ -#include "../common/common.sh" +#include "common.sh" SAMPLER2D(s_normal, 0); SAMPLER2D(s_depth, 1); @@ -14,61 +14,6 @@ uniform vec4 u_lightPosRadius[1]; uniform vec4 u_lightRgbInnerR[1]; uniform mat4 u_mtx; -vec2 blinn(vec3 _lightDir, vec3 _normal, vec3 _viewDir) -{ - float ndotl = dot(_normal, _lightDir); - vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal); - float rdotv = dot(reflected, _viewDir); - return vec2(ndotl, rdotv); -} - -float fresnel(float _ndotl, float _bias, float _pow) -{ - float facing = (1.0 - _ndotl); - return max(_bias + (1.0 - _bias) * pow(facing, _pow), 0.0); -} - -vec4 lit(float _ndotl, float _rdotv, float _m) -{ - float diff = max(0.0, _ndotl); - float spec = step(0.0, _ndotl) * max(0.0, _rdotv * _m); - return vec4(1.0, diff, spec, 1.0); -} - -vec4 powRgba(vec4 _rgba, float _pow) -{ - vec4 result; - result.xyz = pow(_rgba.xyz, vec3_splat(_pow) ); - result.w = _rgba.w; - return result; -} - -vec3 calcLight(int _idx, vec3 _wpos, vec3 _normal, vec3 _view) -{ - vec3 lp = u_lightPosRadius[_idx].xyz - _wpos; - float attn = 1.0 - smoothstep(u_lightRgbInnerR[_idx].w, 1.0, length(lp) / u_lightPosRadius[_idx].w); - vec3 lightDir = normalize(lp); - vec2 bln = blinn(lightDir, _normal, _view); - vec4 lc = lit(bln.x, bln.y, 1.0); - vec3 rgb = u_lightRgbInnerR[_idx].xyz * saturate(lc.y) * attn; - return rgb; -} - -float toClipSpaceDepth(float _depthTextureZ) -{ -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL - return _depthTextureZ; -#else - return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL -} - -vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) -{ - vec4 wpos = mul(_invViewProj, vec4(_clipPos, 1.0) ); - return wpos.xyz / wpos.w; -} - void main() { vec3 normal = decodeNormalUint(texture2D(s_normal, v_texcoord0).xyz); @@ -76,16 +21,15 @@ void main() float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(v_texcoord0 * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL vec3 wpos = clipToWorld(u_mtx, clip); vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; view = -normalize(view); - vec3 lightColor; - lightColor = calcLight(0, wpos, normal, view); + vec3 lightColor = calcLight(wpos, normal, view, u_lightPosRadius[0].xyz, u_lightPosRadius[0].w, u_lightRgbInnerR[0].xyz, u_lightRgbInnerR[0].w); gl_FragColor.xyz = toGamma(lightColor.xyz); gl_FragColor.w = 1.0; } diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_light_ta.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light_ta.sc new file mode 100644 index 00000000000..19102eff09d --- /dev/null +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light_ta.sc @@ -0,0 +1,35 @@ +$input v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "common.sh" + +SAMPLER2DARRAY(s_normal, 0); +SAMPLER2D(s_depth, 1); + +uniform vec4 u_lightPosRadius[1]; +uniform vec4 u_lightRgbInnerR[1]; +uniform mat4 u_mtx; + +void main() +{ + vec3 normal = decodeNormalUint(texture2DArray(s_normal, vec3(v_texcoord0, 1.0) ).xyz); + float deviceDepth = texture2D(s_depth, v_texcoord0).x; + float depth = toClipSpaceDepth(deviceDepth); + + vec3 clip = vec3(v_texcoord0 * 2.0 - 1.0, depth); +#if !BGFX_SHADER_LANGUAGE_GLSL + clip.y = -clip.y; +#endif // !BGFX_SHADER_LANGUAGE_GLSL + vec3 wpos = clipToWorld(u_mtx, clip); + + vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; + view = -normalize(view); + + vec3 lightColor = calcLight(wpos, normal, view, u_lightPosRadius[0].xyz, u_lightPosRadius[0].w, u_lightRgbInnerR[0].xyz, u_lightRgbInnerR[0].w); + gl_FragColor.xyz = toGamma(lightColor.xyz); + gl_FragColor.w = 1.0; +} diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_light_uav.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light_uav.sc new file mode 100644 index 00000000000..08442333868 --- /dev/null +++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light_uav.sc @@ -0,0 +1,40 @@ +$input v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "common.sh" +#include <bgfx_compute.sh> + +SAMPLER2D(s_normal, 0); +SAMPLER2D(s_depth, 1); + +IMAGE2D_RW(i_light, rgba8, 3); + +uniform vec4 u_lightPosRadius[1]; +uniform vec4 u_lightRgbInnerR[1]; +uniform mat4 u_mtx; + +void main() +{ + vec3 normal = decodeNormalUint(texture2D(s_normal, v_texcoord0).xyz); + float deviceDepth = texture2D(s_depth, v_texcoord0).x; + float depth = toClipSpaceDepth(deviceDepth); + + vec3 clip = vec3(v_texcoord0 * 2.0 - 1.0, depth); +#if !BGFX_SHADER_LANGUAGE_GLSL + clip.y = -clip.y; +#endif // !BGFX_SHADER_LANGUAGE_GLSL + vec3 wpos = clipToWorld(u_mtx, clip); + + vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz; + view = -normalize(view); + + ivec2 coord = ivec2(gl_FragCoord.xy); + + vec3 lightColor = calcLight(wpos, normal, view, u_lightPosRadius[0].xyz, u_lightPosRadius[0].w, u_lightRgbInnerR[0].xyz, u_lightRgbInnerR[0].w); + vec4 color = imageLoad(i_light, coord); + imageStore(i_light, coord, color + vec4(toGamma(lightColor.xyz), 1.0)); +} diff --git a/3rdparty/bgfx/examples/21-deferred/makefile b/3rdparty/bgfx/examples/21-deferred/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/21-deferred/makefile +++ b/3rdparty/bgfx/examples/21-deferred/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/21-deferred/vs_deferred_combine.sc b/3rdparty/bgfx/examples/21-deferred/vs_deferred_combine.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/21-deferred/vs_deferred_combine.sc +++ b/3rdparty/bgfx/examples/21-deferred/vs_deferred_combine.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug.sc b/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug.sc +++ b/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug_line.sc b/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug_line.sc index 906372cb0f8..d80005d4652 100644 --- a/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug_line.sc +++ b/3rdparty/bgfx/examples/21-deferred/vs_deferred_debug_line.sc @@ -2,8 +2,8 @@ $input a_position, a_color0 $output v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/vs_deferred_geom.sc b/3rdparty/bgfx/examples/21-deferred/vs_deferred_geom.sc index 0b466d598ef..5c4e5bf3fed 100644 --- a/3rdparty/bgfx/examples/21-deferred/vs_deferred_geom.sc +++ b/3rdparty/bgfx/examples/21-deferred/vs_deferred_geom.sc @@ -2,8 +2,8 @@ $input a_position, a_normal, a_tangent, a_texcoord0 $output v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/21-deferred/vs_deferred_light.sc b/3rdparty/bgfx/examples/21-deferred/vs_deferred_light.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/21-deferred/vs_deferred_light.sc +++ b/3rdparty/bgfx/examples/21-deferred/vs_deferred_light.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/22-windows/windows.cpp b/3rdparty/bgfx/examples/22-windows/windows.cpp index cd2be08852e..da1742079a1 100644 --- a/3rdparty/bgfx/examples/22-windows/windows.cpp +++ b/3rdparty/bgfx/examples/22-windows/windows.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -26,17 +26,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; static PosColorVertex s_cubeVertices[8] = { @@ -69,8 +69,8 @@ static const uint16_t s_cubeIndices[36] = class ExampleWindows : public entry::AppI { public: - ExampleWindows(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleWindows(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -86,6 +86,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -126,7 +129,7 @@ public: m_vbh = bgfx::createVertexBuffer( // Static data can be passed with bgfx::makeRef bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); // Create static index buffer. @@ -157,6 +160,7 @@ public: } } + inputRemoveBindings("22-windows"); BX_FREE(entry::getAllocator(), m_bindings); // Cleanup. @@ -176,20 +180,6 @@ public: { entry::MouseState mouseState = m_state.m_mouse; - imguiBeginFrame(mouseState.m_mx - , mouseState.m_my - , (mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) - | (mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) - | (mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) - , mouseState.m_mz - , uint16_t(m_width) - , uint16_t(m_height) - ); - - showExampleDialog(this); - - imguiEndFrame(); - if (isValid(m_state.m_handle) ) { if (0 == m_state.m_handle.idx) @@ -214,6 +204,20 @@ public: m_fbh[viewId].idx = bgfx::kInvalidHandle; } + // Before we reattach a SwapChain to the window + // we must actually free up the previous one. + // The DestroyFrameBuffer command goes in the + // cmdPost CommandBuffer, which happens after + // the frame. The CreateFrameBuffer command goes + // int the cmdPre CommandBuffer, which happens + // at the beginning of the frame. Without this + // bgfx::frame() call, the creation would happen + // before it's destroyed, which would cause + // the platform window to have two SwapChains + // associated with it. + // Ideally, we have an operation of ResizeFrameBuffer. + bgfx::frame(); + win.m_nwh = m_state.m_nwh; win.m_width = m_state.m_width; win.m_height = m_state.m_height; @@ -230,6 +234,20 @@ public: } } + imguiBeginFrame(mouseState.m_mx + , mouseState.m_my + , (mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) + | (mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) + | (mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + imguiEndFrame(); + const bx::Vec3 at = { 0.0f, 0.0f, 0.0f }; const bx::Vec3 eye = { 0.0f, 0.0f, -35.0f }; @@ -272,6 +290,7 @@ public: int64_t now = bx::getHPCounter(); float time = (float)( (now-m_timeOffset)/double(bx::getHPFrequency() ) ); + bgfx::dbgTextClear(); if (NULL != m_bindings) { bgfx::dbgTextPrintf(0, 1, 0x2f, "Press 'c' to create or 'd' to destroy window."); @@ -377,7 +396,12 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleWindows, "22-windows", "Rendering into multiple windows."); +ENTRY_IMPLEMENT_MAIN( + ExampleWindows + , "22-windows" + , "Rendering into multiple windows." + , "https://bkaradzic.github.io/bgfx/examples.html#windows" + ); void cmdCreateWindow(const void* _userData) { diff --git a/3rdparty/bgfx/examples/23-vectordisplay/main.cpp b/3rdparty/bgfx/examples/23-vectordisplay/main.cpp index badeeccff9a..213f917b617 100644 --- a/3rdparty/bgfx/examples/23-vectordisplay/main.cpp +++ b/3rdparty/bgfx/examples/23-vectordisplay/main.cpp @@ -1,6 +1,6 @@ /* * Copyright 2014 Kai Jourdan. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE * */ @@ -22,23 +22,23 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; class ExampleVectorDisplay : public entry::AppI { public: - ExampleVectorDisplay(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleVectorDisplay(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -53,6 +53,8 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -218,4 +220,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleVectorDisplay, "23-vectordisplay", "Rendering lines as oldschool vectors."); +ENTRY_IMPLEMENT_MAIN( + ExampleVectorDisplay + , "23-vectordisplay" + , "Rendering lines as oldschool vectors." + , "https://bkaradzic.github.io/bgfx/examples.html#vectordisplay" + ); diff --git a/3rdparty/bgfx/examples/23-vectordisplay/makefile b/3rdparty/bgfx/examples/23-vectordisplay/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/23-vectordisplay/makefile +++ b/3rdparty/bgfx/examples/23-vectordisplay/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.cpp b/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.cpp index e63d156b966..719556a8996 100644 --- a/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.cpp +++ b/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.cpp @@ -1,14 +1,14 @@ /* * Copyright 2014 Kai Jourdan. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - * - * Based on code from Brian Luczkiewicz - * https://github.com/blucz/Vector - * - * Uses the SIMPLEX-Font which is a variant of the Hershey font (public domain) - * http://paulbourke.net/dataformats/hershey/ + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ +// Reference(s): +// - Based on code from Brian Luczkiewicz +// https://github.com/blucz/Vector +// - Uses the SIMPLEX-Font which is a variant of the Hershey font (public domain) +// https://web.archive.org/web/20120313001837/http://paulbourke.net/dataformats/hershey/ +// #include <float.h> // FLT_EPSILON #include <alloca.h> // alloca @@ -35,7 +35,7 @@ const int HALF_TEXTURE_SIZE = TEXTURE_SIZE / 2; void PosColorUvVertex::init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) @@ -43,7 +43,7 @@ void PosColorUvVertex::init() .end(); } -bgfx::VertexDecl PosColorUvVertex::ms_decl; +bgfx::VertexLayout PosColorUvVertex::ms_layout; inline float normalizef(float _a) { @@ -94,7 +94,7 @@ void VectorDisplay::setup(uint16_t _width, uint16_t _height, uint8_t _view) m_blitShader = loadProgram("vs_vectordisplay_fb", "fs_vectordisplay_blit"); u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); genLinetex(); @@ -161,7 +161,7 @@ void VectorDisplay::endFrame() // advance step m_currentDrawStep = (m_currentDrawStep + 1) % m_numberDecaySteps; - BX_CHECK(m_points.size() < MAX_NUMBER_VERTICES, ""); + BX_ASSERT(m_points.size() < MAX_NUMBER_VERTICES, ""); bgfx::update( m_vertexBuffers[m_currentDrawStep] @@ -315,7 +315,7 @@ void VectorDisplay::endFrame() void VectorDisplay::beginDraw(float _x, float _y) { - BX_CHECK(0 == m_pendingPoints.size(), "Begin draw on already filled buffer!"); + BX_ASSERT(0 == m_pendingPoints.size(), "Begin draw on already filled buffer!"); PendingPoint point; point.x = _x * m_drawScale + m_drawOffsetX; @@ -737,7 +737,7 @@ bool VectorDisplay::setDecaySteps(int _steps) for (int i = 0; i < m_numberDecaySteps; ++i) { - m_vertexBuffers.push_back(bgfx::createDynamicVertexBuffer(MAX_NUMBER_VERTICES, PosColorUvVertex::ms_decl) ); + m_vertexBuffers.push_back(bgfx::createDynamicVertexBuffer(MAX_NUMBER_VERTICES, PosColorUvVertex::ms_layout) ); m_vertexBuffersSize.push_back(0); } @@ -769,10 +769,10 @@ void VectorDisplay::getSize(float* _outWidth, float* _outHeight) void VectorDisplay::screenSpaceQuad(float _textureWidth, float _textureHeight, float _width, float _height) { - if (3 == getAvailTransientVertexBuffer(3, PosColorUvVertex::ms_decl) ) + if (3 == getAvailTransientVertexBuffer(3, PosColorUvVertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosColorUvVertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosColorUvVertex::ms_layout); PosColorUvVertex* vertex = (PosColorUvVertex*)vb.data; const float zz = 0.0f; diff --git a/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.h b/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.h index 3dfe15732d9..3cfc57fa525 100644 --- a/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.h +++ b/3rdparty/bgfx/examples/23-vectordisplay/vectordisplay.h @@ -1,12 +1,6 @@ /* * Copyright 2014 Kai Jourdan. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - * - * Based on code from Brian Luczkiewicz - * https://github.com/blucz/Vector - * - * Uses the SIMPLEX-Font which is a variant of the Hershey font (public domain) - * http://paulbourke.net/dataformats/hershey/ + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef __VECTORDISPLAY_H__ @@ -28,7 +22,7 @@ struct PosColorUvVertex uint32_t m_abgr; static void init(); - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; class VectorDisplay @@ -41,7 +35,7 @@ public: } void init(bool _originBottomLeft, float _texelHalf); - + void setup(uint16_t _width, uint16_t _height, uint8_t _view = 2); void resize(uint16_t _width, uint16_t _height); void teardown(); @@ -70,10 +64,10 @@ public: // Set the number of frames of decay/fade to apply to the scene. bool setDecaySteps(int _steps); - // Set the brightness multipler applied on each decay frame after the first. + // Set the brightness multiplier applied on each decay frame after the first. bool setDecay(float _decay); - // Set the brightness multipler applied on the first decay frame. + // Set the brightness multiplier applied on the first decay frame. bool setInitialDecay(float _initialDecay); // Set a 2d transformation for the display. diff --git a/3rdparty/bgfx/examples/24-nbody/cs_indirect.sc b/3rdparty/bgfx/examples/24-nbody/cs_indirect.sc index 87b6b1859cf..e06802f4f05 100644 --- a/3rdparty/bgfx/examples/24-nbody/cs_indirect.sc +++ b/3rdparty/bgfx/examples/24-nbody/cs_indirect.sc @@ -1,6 +1,6 @@ /* * Copyright 2014 Stanlo Slasinski. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "bgfx_compute.sh" diff --git a/3rdparty/bgfx/examples/24-nbody/cs_init_instances.sc b/3rdparty/bgfx/examples/24-nbody/cs_init_instances.sc index cc824b19332..0844979d17b 100644 --- a/3rdparty/bgfx/examples/24-nbody/cs_init_instances.sc +++ b/3rdparty/bgfx/examples/24-nbody/cs_init_instances.sc @@ -1,6 +1,6 @@ /* * Copyright 2014 Stanlo Slasinski. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "bgfx_compute.sh" diff --git a/3rdparty/bgfx/examples/24-nbody/cs_update_instances.sc b/3rdparty/bgfx/examples/24-nbody/cs_update_instances.sc index 612a7b95376..7031cb5729f 100644 --- a/3rdparty/bgfx/examples/24-nbody/cs_update_instances.sc +++ b/3rdparty/bgfx/examples/24-nbody/cs_update_instances.sc @@ -1,6 +1,6 @@ /* * Copyright 2014 Stanlo Slasinski. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "bgfx_compute.sh" diff --git a/3rdparty/bgfx/examples/24-nbody/fs_particle.sc b/3rdparty/bgfx/examples/24-nbody/fs_particle.sc index 6dfca6d3889..2f4bb4f81f9 100644 --- a/3rdparty/bgfx/examples/24-nbody/fs_particle.sc +++ b/3rdparty/bgfx/examples/24-nbody/fs_particle.sc @@ -2,7 +2,7 @@ $input v_texCoord /* * Copyright 2014 Stanlo Slasinski. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/24-nbody/makefile b/3rdparty/bgfx/examples/24-nbody/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/24-nbody/makefile +++ b/3rdparty/bgfx/examples/24-nbody/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/24-nbody/nbody.cpp b/3rdparty/bgfx/examples/24-nbody/nbody.cpp index ae675c35512..b47469d8c04 100644 --- a/3rdparty/bgfx/examples/24-nbody/nbody.cpp +++ b/3rdparty/bgfx/examples/24-nbody/nbody.cpp @@ -1,6 +1,6 @@ /* * Copyright 2014 Stanlo Slasinski. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -113,8 +113,8 @@ const uint32_t kMaxParticleCount = 32 * 1024; class ExampleNbody : public entry::AppI { public: - ExampleNbody(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleNbody(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -130,6 +130,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -154,8 +157,8 @@ public: if (m_computeSupported) { - bgfx::VertexDecl quadVertexDecl; - quadVertexDecl.begin() + bgfx::VertexLayout quadVertexLayout; + quadVertexLayout.begin() .add(bgfx::Attrib::Position, 2, bgfx::AttribType::Float) .end(); @@ -163,7 +166,7 @@ public: m_vbh = bgfx::createVertexBuffer( // Static data can be passed with bgfx::makeRef bgfx::makeRef(s_quadVertices, sizeof(s_quadVertices) ) - , quadVertexDecl + , quadVertexLayout ); // Create static index buffer. @@ -176,15 +179,15 @@ public: m_particleProgram = loadProgram("vs_particle", "fs_particle"); // Setup compute buffers - bgfx::VertexDecl computeVertexDecl; - computeVertexDecl.begin() + bgfx::VertexLayout computeVertexLayout; + computeVertexLayout.begin() .add(bgfx::Attrib::TexCoord0, 4, bgfx::AttribType::Float) .end(); - m_currPositionBuffer0 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexDecl, BGFX_BUFFER_COMPUTE_READ_WRITE); - m_currPositionBuffer1 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexDecl, BGFX_BUFFER_COMPUTE_READ_WRITE); - m_prevPositionBuffer0 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexDecl, BGFX_BUFFER_COMPUTE_READ_WRITE); - m_prevPositionBuffer1 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexDecl, BGFX_BUFFER_COMPUTE_READ_WRITE); + m_currPositionBuffer0 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexLayout, BGFX_BUFFER_COMPUTE_READ_WRITE); + m_currPositionBuffer1 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexLayout, BGFX_BUFFER_COMPUTE_READ_WRITE); + m_prevPositionBuffer0 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexLayout, BGFX_BUFFER_COMPUTE_READ_WRITE); + m_prevPositionBuffer1 = bgfx::createDynamicVertexBuffer(1 << 15, computeVertexLayout, BGFX_BUFFER_COMPUTE_READ_WRITE); u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, 3); @@ -207,9 +210,8 @@ public: bgfx::setBuffer(1, m_currPositionBuffer0, bgfx::Access::Write); bgfx::dispatch(0, m_initInstancesProgram, kMaxParticleCount / kThreadGroupUpdateSize, 1, 1); - float initialPos[3] = { 0.0f, 0.0f, -45.0f }; cameraCreate(); - cameraSetPosition(initialPos); + cameraSetPosition({ 0.0f, 0.0f, -45.0f }); cameraSetVerticalAngle(0.0f); m_useIndirect = false; @@ -369,7 +371,7 @@ public: bx::swap(m_prevPositionBuffer0, m_prevPositionBuffer1); // Update camera. - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); float view[16]; cameraGetViewMtx(view); @@ -459,4 +461,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleNbody, "24-nbody", "N-body simulation with compute shaders using buffers."); +ENTRY_IMPLEMENT_MAIN( + ExampleNbody + , "24-nbody" + , "N-body simulation with compute shaders using buffers." + , "https://bkaradzic.github.io/bgfx/examples.html#nbody" + ); diff --git a/3rdparty/bgfx/examples/24-nbody/uniforms.sh b/3rdparty/bgfx/examples/24-nbody/uniforms.sh index a27545fbae0..cdecc49d68d 100644 --- a/3rdparty/bgfx/examples/24-nbody/uniforms.sh +++ b/3rdparty/bgfx/examples/24-nbody/uniforms.sh @@ -1,6 +1,6 @@ /* * Copyright 2014 Stanlo Slasinski. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ uniform vec4 u_params[3]; diff --git a/3rdparty/bgfx/examples/24-nbody/vs_particle.sc b/3rdparty/bgfx/examples/24-nbody/vs_particle.sc index f6bf524a4c1..2d3a2e8aa9b 100644 --- a/3rdparty/bgfx/examples/24-nbody/vs_particle.sc +++ b/3rdparty/bgfx/examples/24-nbody/vs_particle.sc @@ -3,7 +3,7 @@ $output v_texCoord /* * Copyright 2014 Stanlo Slasinski. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/25-c99/helloworld.c b/3rdparty/bgfx/examples/25-c99/helloworld.c index 5175730059d..5954684ab9e 100644 --- a/3rdparty/bgfx/examples/25-c99/helloworld.c +++ b/3rdparty/bgfx/examples/25-c99/helloworld.c @@ -7,6 +7,9 @@ #include "../00-helloworld/logo.h" extern bool entry_process_events(uint32_t* _width, uint32_t* _height, uint32_t* _debug, uint32_t* _reset); +extern void* entry_get_default_native_window_handle(); +extern void* entry_get_native_display_handle(); +extern bgfx_native_window_handle_type_t entry_get_native_window_handle_type(void); uint16_t uint16_max(uint16_t _a, uint16_t _b) { @@ -25,6 +28,10 @@ int32_t _main_(int32_t _argc, char** _argv) bgfx_init_t init; bgfx_init_ctor(&init); + init.platformData.nwh = entry_get_default_native_window_handle(); + init.platformData.ndt = entry_get_native_display_handle(); + init.platformData.type = entry_get_native_window_handle_type(); + bgfx_init(&init); bgfx_reset(width, height, reset, init.resolution.format); @@ -45,7 +52,9 @@ int32_t _main_(int32_t _argc, char** _argv) // This dummy draw call is here to make sure that view 0 is cleared // if no other draw calls are submitted to view 0. - bgfx_touch(0); + bgfx_encoder_t* encoder = bgfx_encoder_begin(true); + bgfx_encoder_touch(encoder, 0); + bgfx_encoder_end(encoder); // Use debug font to print information about this example. bgfx_dbg_text_clear(0, false); @@ -57,8 +66,14 @@ int32_t _main_(int32_t _argc, char** _argv) , s_logo , 160 ); - bgfx_dbg_text_printf(0, 1, 0x4f, "bgfx/examples/25-c99"); - bgfx_dbg_text_printf(0, 2, 0x6f, "Description: Initialization and debug text with C99 API."); + + bgfx_dbg_text_printf(0, 1, 0x0f, "Color can be changed with ANSI \x1b[9;me\x1b[10;ms\x1b[11;mc\x1b[12;ma\x1b[13;mp\x1b[14;me\x1b[0m code too."); + + bgfx_dbg_text_printf(80, 1, 0x0f, "\x1b[;0m \x1b[;1m \x1b[; 2m \x1b[; 3m \x1b[; 4m \x1b[; 5m \x1b[; 6m \x1b[; 7m \x1b[0m"); + bgfx_dbg_text_printf(80, 2, 0x0f, "\x1b[;8m \x1b[;9m \x1b[;10m \x1b[;11m \x1b[;12m \x1b[;13m \x1b[;14m \x1b[;15m \x1b[0m"); + + bgfx_dbg_text_printf(0, 3, 0x1f, "bgfx/examples/25-c99"); + bgfx_dbg_text_printf(0, 4, 0x3f, "Description: Initialization and debug text with C99 API."); // Advance to next frame. Rendering thread will be kicked to // process submitted rendering primitives. diff --git a/3rdparty/bgfx/examples/26-occlusion/occlusion.cpp b/3rdparty/bgfx/examples/26-occlusion/occlusion.cpp index 55970a4019b..f30dc44cf7b 100644 --- a/3rdparty/bgfx/examples/26-occlusion/occlusion.cpp +++ b/3rdparty/bgfx/examples/26-occlusion/occlusion.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -22,17 +22,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; static PosColorVertex s_cubeVertices[8] = { @@ -65,8 +65,8 @@ static const uint16_t s_cubeIndices[36] = class ExampleOcclusion : public entry::AppI { public: - ExampleOcclusion(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleOcclusion(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -82,6 +82,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -112,7 +115,7 @@ public: m_vbh = bgfx::createVertexBuffer( // Static data can be passed with bgfx::makeRef bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); // Create static index buffer. @@ -137,8 +140,7 @@ public: cameraCreate(); - const float initialPos[3] = { 15.5f, 0.0f, -15.5f }; - cameraSetPosition(initialPos); + cameraSetPosition({ 15.5f, 0.0f, -15.5f }); cameraSetHorizontalAngle(bx::toRad(-45.0f) ); m_timeOffset = bx::getHPCounter(); @@ -204,8 +206,9 @@ public: const float deltaTime = float(frameTime/freq); // Update camera. + cameraUpdate(deltaTime, m_state.m_mouse, ImGui::MouseOverArea() ); + float view[16]; - cameraUpdate(deltaTime, m_state.m_mouse); cameraGetViewMtx(view); // Set view and projection matrix for view 0. @@ -312,4 +315,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleOcclusion, "26-occlusion", "Using occlusion query for conditional rendering."); +ENTRY_IMPLEMENT_MAIN( + ExampleOcclusion + , "26-occlusion" + , "Using occlusion query for conditional rendering." + , "https://bkaradzic.github.io/bgfx/examples.html#occlusion" + ); diff --git a/3rdparty/bgfx/examples/27-terrain/fs_terrain.sc b/3rdparty/bgfx/examples/27-terrain/fs_terrain.sc index 0b5aa82555d..aff04bea065 100644 --- a/3rdparty/bgfx/examples/27-terrain/fs_terrain.sc +++ b/3rdparty/bgfx/examples/27-terrain/fs_terrain.sc @@ -2,7 +2,7 @@ $input v_position, v_texcoord0 /* * Copyright 2015 Andrew Mac. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/27-terrain/makefile b/3rdparty/bgfx/examples/27-terrain/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/27-terrain/makefile +++ b/3rdparty/bgfx/examples/27-terrain/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/27-terrain/terrain.cpp b/3rdparty/bgfx/examples/27-terrain/terrain.cpp index 8ae06d56833..77053b45d1d 100644 --- a/3rdparty/bgfx/examples/27-terrain/terrain.cpp +++ b/3rdparty/bgfx/examples/27-terrain/terrain.cpp @@ -1,16 +1,15 @@ /* * Copyright 2015 Andrew Mac. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ +#include <bx/allocator.h> +#include <bx/debug.h> +#include <bx/math.h> #include "common.h" #include "bgfx_utils.h" #include "imgui/imgui.h" #include "camera.h" -#include "bounds.h" -#include <bx/allocator.h> -#include <bx/debug.h> -#include <bx/math.h> namespace { @@ -27,17 +26,17 @@ struct PosTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; struct TerrainData { @@ -62,8 +61,8 @@ struct BrushData class ExampleTerrain : public entry::AppI { public: - ExampleTerrain(const char* _name, const char* _description) - : entry::AppI(_name, _description) +ExampleTerrain(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -79,6 +78,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -112,7 +114,7 @@ public: m_dvbh.idx = bgfx::kInvalidHandle; m_dibh.idx = bgfx::kInvalidHandle; m_heightTexture.idx = bgfx::kInvalidHandle; - s_heightTexture = bgfx::createUniform("s_heightTexture", bgfx::UniformType::Int1); + s_heightTexture = bgfx::createUniform("s_heightTexture", bgfx::UniformType::Sampler); m_oldWidth = 0; m_oldHeight = 0; @@ -135,9 +137,8 @@ public: cameraCreate(); - const float initialPos[3] = { s_terrainSize/2.0f, 100.0f, 0.0f }; - cameraSetPosition(initialPos); - cameraSetVerticalAngle(-bx::kPi/4.0f); + cameraSetPosition({ s_terrainSize/2.0f, 100.0f, 0.0f }); + cameraSetVerticalAngle(-bx::kPiQuarter); } virtual int shutdown() override @@ -242,7 +243,7 @@ public: } mem = bgfx::makeRef(&m_terrain.m_vertices[0], sizeof(PosTexCoord0Vertex) * m_terrain.m_vertexCount); - m_vbh = bgfx::createVertexBuffer(mem, PosTexCoord0Vertex::ms_decl); + m_vbh = bgfx::createVertexBuffer(mem, PosTexCoord0Vertex::ms_layout); if (bgfx::isValid(m_ibh) ) { bgfx::destroy(m_ibh); @@ -257,7 +258,7 @@ public: if (!bgfx::isValid(m_dvbh) ) { - m_dvbh = bgfx::createDynamicVertexBuffer(m_terrain.m_vertexCount, PosTexCoord0Vertex::ms_decl); + m_dvbh = bgfx::createDynamicVertexBuffer(m_terrain.m_vertexCount, PosTexCoord0Vertex::ms_layout); } mem = bgfx::makeRef(&m_terrain.m_vertices[0], sizeof(PosTexCoord0Vertex) * m_terrain.m_vertexCount); @@ -278,7 +279,7 @@ public: updateTerrainMesh(); mem = bgfx::makeRef(&m_terrain.m_vertices[0], sizeof(PosTexCoord0Vertex) * m_terrain.m_vertexCount); - m_vbh = bgfx::createVertexBuffer(mem, PosTexCoord0Vertex::ms_decl); + m_vbh = bgfx::createVertexBuffer(mem, PosTexCoord0Vertex::ms_layout); mem = bgfx::makeRef(&m_terrain.m_indices[0], sizeof(uint16_t) * m_terrain.m_indexCount); m_ibh = bgfx::createIndexBuffer(mem); @@ -357,30 +358,25 @@ public: float ray_world[4]; bx::vec4MulMtx(ray_world, ray_eye, invViewMtx); - float ray_dir[3]; - bx::vec3Norm(ray_dir, ray_world); - ray_dir[0] *= -1.0; - ray_dir[1] *= -1.0; - ray_dir[2] *= -1.0; + const bx::Vec3 rayDir = bx::mul(bx::normalize(bx::load<bx::Vec3>(ray_world) ), -1.0f); - float pos[3]; - cameraGetPosition(pos); + bx::Vec3 pos = cameraGetPosition(); for (int i = 0; i < 1000; ++i) { - bx::vec3Add(pos, pos, ray_dir); + pos = bx::add(pos, rayDir); - if (pos[0] < 0 - || pos[0] >= s_terrainSize - || pos[2] < 0 - || pos[2] >= s_terrainSize) + if (pos.x < 0 + || pos.x >= s_terrainSize + || pos.z < 0 + || pos.z >= s_terrainSize) { continue; } - uint32_t heightMapPos = ( (uint32_t)pos[2] * s_terrainSize) + (uint32_t)pos[0]; - if ( pos[1] < m_terrain.m_heightMap[heightMapPos] ) + uint32_t heightMapPos = ( (uint32_t)pos.z * s_terrainSize) + (uint32_t)pos.x; + if (pos.y < m_terrain.m_heightMap[heightMapPos]) { - paintTerrainHeight( (uint32_t)pos[0], (uint32_t)pos[2]); + paintTerrainHeight( (uint32_t)pos.x, (uint32_t)pos.z); return; } } @@ -438,11 +434,11 @@ public: ImGui::End(); imguiEndFrame(); + // Update camera. + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); + if (!ImGui::MouseOverArea() ) { - // Update camera. - cameraUpdate(deltaTime, m_mouseState); - if (!!m_mouseState.m_buttons[entry::MouseButton::Left]) { mousePickTerrain(); @@ -528,4 +524,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleTerrain, "27-terrain", "Terrain painting example."); +ENTRY_IMPLEMENT_MAIN( + ExampleTerrain + , "27-terrain" + , "Terrain painting example." + , "https://bkaradzic.github.io/bgfx/examples.html#terrain" + ); diff --git a/3rdparty/bgfx/examples/27-terrain/vs_terrain.sc b/3rdparty/bgfx/examples/27-terrain/vs_terrain.sc index 4cea23e2d30..6fde83db33f 100644 --- a/3rdparty/bgfx/examples/27-terrain/vs_terrain.sc +++ b/3rdparty/bgfx/examples/27-terrain/vs_terrain.sc @@ -3,7 +3,7 @@ $output v_position, v_texcoord0 /* * Copyright 2015 Andrew Mac. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/27-terrain/vs_terrain_height_texture.sc b/3rdparty/bgfx/examples/27-terrain/vs_terrain_height_texture.sc index f3451aa0328..c15a357766b 100644 --- a/3rdparty/bgfx/examples/27-terrain/vs_terrain_height_texture.sc +++ b/3rdparty/bgfx/examples/27-terrain/vs_terrain_height_texture.sc @@ -3,7 +3,7 @@ $output v_position, v_texcoord0 /* * Copyright 2015 Andrew Mac. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/28-wireframe/fs_wf_mesh.sc b/3rdparty/bgfx/examples/28-wireframe/fs_wf_mesh.sc index 4a68b1472e1..c5f8e458715 100644 --- a/3rdparty/bgfx/examples/28-wireframe/fs_wf_mesh.sc +++ b/3rdparty/bgfx/examples/28-wireframe/fs_wf_mesh.sc @@ -2,7 +2,7 @@ $input v_view, v_bc, v_normal /* * Copyright 2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/28-wireframe/fs_wf_wireframe.sc b/3rdparty/bgfx/examples/28-wireframe/fs_wf_wireframe.sc index e2ff1420011..c60b7246da8 100644 --- a/3rdparty/bgfx/examples/28-wireframe/fs_wf_wireframe.sc +++ b/3rdparty/bgfx/examples/28-wireframe/fs_wf_wireframe.sc @@ -2,7 +2,7 @@ $input v_view, v_bc /* * Copyright 2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/28-wireframe/makefile b/3rdparty/bgfx/examples/28-wireframe/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/28-wireframe/makefile +++ b/3rdparty/bgfx/examples/28-wireframe/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/28-wireframe/uniforms.sh b/3rdparty/bgfx/examples/28-wireframe/uniforms.sh index 330555ee50d..934c41c6a12 100644 --- a/3rdparty/bgfx/examples/28-wireframe/uniforms.sh +++ b/3rdparty/bgfx/examples/28-wireframe/uniforms.sh @@ -1,6 +1,6 @@ /* * Copyright 2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ uniform vec4 u_params[3]; diff --git a/3rdparty/bgfx/examples/28-wireframe/vs_wf_mesh.sc b/3rdparty/bgfx/examples/28-wireframe/vs_wf_mesh.sc index 3f51abc59ad..77d4f60be00 100644 --- a/3rdparty/bgfx/examples/28-wireframe/vs_wf_mesh.sc +++ b/3rdparty/bgfx/examples/28-wireframe/vs_wf_mesh.sc @@ -3,7 +3,7 @@ $output v_view, v_bc, v_normal /* * Copyright 2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/28-wireframe/vs_wf_wireframe.sc b/3rdparty/bgfx/examples/28-wireframe/vs_wf_wireframe.sc index 1956b0d64ef..2a63a30a3e7 100644 --- a/3rdparty/bgfx/examples/28-wireframe/vs_wf_wireframe.sc +++ b/3rdparty/bgfx/examples/28-wireframe/vs_wf_wireframe.sc @@ -3,7 +3,7 @@ $output v_view, v_bc /* * Copyright 2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/28-wireframe/wireframe.cpp b/3rdparty/bgfx/examples/28-wireframe/wireframe.cpp index d19ee8b8c74..98bef8aedb5 100644 --- a/3rdparty/bgfx/examples/28-wireframe/wireframe.cpp +++ b/3rdparty/bgfx/examples/28-wireframe/wireframe.cpp @@ -1,6 +1,6 @@ /* * Copyright 2016 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -29,19 +29,11 @@ struct Camera void reset() { - m_target.curr[0] = 0.0f; - m_target.curr[1] = 0.0f; - m_target.curr[2] = 0.0f; - m_target.dest[0] = 0.0f; - m_target.dest[1] = 0.0f; - m_target.dest[2] = 0.0f; - - m_pos.curr[0] = 0.0f; - m_pos.curr[1] = 0.0f; - m_pos.curr[2] = -2.0f; - m_pos.dest[0] = 0.0f; - m_pos.dest[1] = 0.0f; - m_pos.dest[2] = -2.0f; + m_target.curr = bx::init::Zero; + m_target.dest = bx::init::Zero; + + m_pos.curr = { 0.0f, 0.0f, -2.0f }; + m_pos.dest = { 0.0f, 0.0f, -2.0f }; m_orbit[0] = 0.0f; m_orbit[1] = 0.0f; @@ -49,7 +41,7 @@ struct Camera void mtxLookAt(float* _outViewMtx) { - bx::mtxLookAt(_outViewMtx, bx::load(m_pos.curr), bx::load(m_target.curr) ); + bx::mtxLookAt(_outViewMtx, m_pos.curr, m_target.curr); } void orbit(float _dx, float _dy) @@ -60,98 +52,91 @@ struct Camera void dolly(float _dz) { - const float cnear = 0.01f; - const float cfar = 10.0f; + const float cnear = 1.0f; + const float cfar = 100.0f; - const float toTarget[3] = - { - m_target.dest[0] - m_pos.dest[0], - m_target.dest[1] - m_pos.dest[1], - m_target.dest[2] - m_pos.dest[2], - }; - const float toTargetLen = bx::vec3Length(toTarget); - const float invToTargetLen = 1.0f/(toTargetLen+FLT_MIN); - const float toTargetNorm[3] = - { - toTarget[0]*invToTargetLen, - toTarget[1]*invToTargetLen, - toTarget[2]*invToTargetLen, - }; + const bx::Vec3 toTarget = bx::sub(m_target.dest, m_pos.dest); + const float toTargetLen = bx::length(toTarget); + const float invToTargetLen = 1.0f / (toTargetLen + bx::kFloatSmallest); + const bx::Vec3 toTargetNorm = bx::mul(toTarget, invToTargetLen); - float delta = toTargetLen*_dz; + float delta = toTargetLen * _dz; float newLen = toTargetLen + delta; - if ( (cnear < newLen || _dz < 0.0f) - && (newLen < cfar || _dz > 0.0f) ) + if ( (cnear < newLen || _dz < 0.0f) + && (newLen < cfar || _dz > 0.0f) ) { - m_pos.dest[0] += toTargetNorm[0]*delta; - m_pos.dest[1] += toTargetNorm[1]*delta; - m_pos.dest[2] += toTargetNorm[2]*delta; + m_pos.dest = bx::mad(toTargetNorm, delta, m_pos.dest); } } void consumeOrbit(float _amount) { float consume[2]; - consume[0] = m_orbit[0]*_amount; - consume[1] = m_orbit[1]*_amount; + consume[0] = m_orbit[0] * _amount; + consume[1] = m_orbit[1] * _amount; m_orbit[0] -= consume[0]; m_orbit[1] -= consume[1]; - const float toPos[3] = - { - m_pos.curr[0] - m_target.curr[0], - m_pos.curr[1] - m_target.curr[1], - m_pos.curr[2] - m_target.curr[2], - }; - const float toPosLen = bx::vec3Length(toPos); - const float invToPosLen = 1.0f/(toPosLen+FLT_MIN); - const float toPosNorm[3] = - { - toPos[0]*invToPosLen, - toPos[1]*invToPosLen, - toPos[2]*invToPosLen, - }; + const bx::Vec3 toPos = bx::sub(m_pos.curr, m_target.curr); + const float toPosLen = bx::length(toPos); + const float invToPosLen = 1.0f / (toPosLen + bx::kFloatSmallest); + const bx::Vec3 toPosNorm = bx::mul(toPos, invToPosLen); float ll[2]; - bx::vec3ToLatLong(&ll[0], &ll[1], toPosNorm); + bx::toLatLong(&ll[0], &ll[1], toPosNorm); ll[0] += consume[0]; ll[1] -= consume[1]; ll[1] = bx::clamp(ll[1], 0.02f, 0.98f); - float tmp[3]; - bx::vec3FromLatLong(tmp, ll[0], ll[1]); - - float diff[3]; - diff[0] = (tmp[0]-toPosNorm[0])*toPosLen; - diff[1] = (tmp[1]-toPosNorm[1])*toPosLen; - diff[2] = (tmp[2]-toPosNorm[2])*toPosLen; + const bx::Vec3 tmp = bx::fromLatLong(ll[0], ll[1]); + const bx::Vec3 diff = bx::mul(bx::sub(tmp, toPosNorm), toPosLen); - m_pos.curr[0] += diff[0]; - m_pos.curr[1] += diff[1]; - m_pos.curr[2] += diff[2]; - m_pos.dest[0] += diff[0]; - m_pos.dest[1] += diff[1]; - m_pos.dest[2] += diff[2]; + m_pos.curr = bx::add(m_pos.curr, diff); + m_pos.dest = bx::add(m_pos.dest, diff); } void update(float _dt) { - const float amount = bx::min(_dt/0.12f, 1.0f); + const float amount = bx::min(_dt / 0.12f, 1.0f); consumeOrbit(amount); - m_target.curr[0] = bx::lerp(m_target.curr[0], m_target.dest[0], amount); - m_target.curr[1] = bx::lerp(m_target.curr[1], m_target.dest[1], amount); - m_target.curr[2] = bx::lerp(m_target.curr[2], m_target.dest[2], amount); - m_pos.curr[0] = bx::lerp(m_pos.curr[0], m_pos.dest[0], amount); - m_pos.curr[1] = bx::lerp(m_pos.curr[1], m_pos.dest[1], amount); - m_pos.curr[2] = bx::lerp(m_pos.curr[2], m_pos.dest[2], amount); + m_target.curr = bx::lerp(m_target.curr, m_target.dest, amount); + m_pos.curr = bx::lerp(m_pos.curr, m_pos.dest, amount); + } + + void envViewMtx(float* _mtx) + { + const bx::Vec3 toTarget = bx::sub(m_target.curr, m_pos.curr); + const float toTargetLen = bx::length(toTarget); + const float invToTargetLen = 1.0f / (toTargetLen + bx::kFloatSmallest); + const bx::Vec3 toTargetNorm = bx::mul(toTarget, invToTargetLen); + + const bx::Vec3 right = bx::normalize(bx::cross({ 0.0f, 1.0f, 0.0f }, toTargetNorm) ); + const bx::Vec3 up = bx::normalize(bx::cross(toTargetNorm, right) ); + + _mtx[ 0] = right.x; + _mtx[ 1] = right.y; + _mtx[ 2] = right.z; + _mtx[ 3] = 0.0f; + _mtx[ 4] = up.x; + _mtx[ 5] = up.y; + _mtx[ 6] = up.z; + _mtx[ 7] = 0.0f; + _mtx[ 8] = toTargetNorm.x; + _mtx[ 9] = toTargetNorm.y; + _mtx[10] = toTargetNorm.z; + _mtx[11] = 0.0f; + _mtx[12] = 0.0f; + _mtx[13] = 0.0f; + _mtx[14] = 0.0f; + _mtx[15] = 1.0f; } struct Interp3f { - float curr[3]; - float dest[3]; + bx::Vec3 curr = bx::init::None; + bx::Vec3 dest = bx::init::None; }; Interp3f m_target; @@ -286,8 +271,8 @@ struct Uniforms class ExampleWireframe : public entry::AppI { public: - ExampleWireframe(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleWireframe(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -306,6 +291,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -469,7 +457,7 @@ public: float view[16]; float proj[16]; m_camera.update(deltaTimeSec); - bx::memCopy(m_uniforms.m_camPos, m_camera.m_pos.curr, 3*sizeof(float)); + bx::memCopy(m_uniforms.m_camPos, &m_camera.m_pos.curr.x, 3*sizeof(float)); m_camera.mtxLookAt(view); bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, bgfx::getCaps()->homogeneousDepth); bgfx::setViewTransform(0, view, proj); @@ -536,4 +524,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleWireframe, "28-wirefame", "Drawing wireframe mesh."); +ENTRY_IMPLEMENT_MAIN( + ExampleWireframe + , "28-wirefame" + , "Drawing wireframe mesh." + , "https://bkaradzic.github.io/bgfx/examples.html#wireframe" + ); diff --git a/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp b/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp index f2e2cfddd82..64a21d858c6 100644 --- a/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp +++ b/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -464,6 +464,287 @@ static const uint16_t s_bunnyTriList[] = 146, 72, 147, }; +struct Shape +{ + struct Type + { + enum Enum + { + Sphere, + Aabb, + Triangle, + Capsule, + Plane, + Disk, + Obb, + Cone, + Cylinder, + + Count + }; + }; + + Shape() : type(uint8_t(Type::Count) ) {} + Shape(const bx::Aabb & _a) : type(uint8_t(Type::Aabb ) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Capsule & _a) : type(uint8_t(Type::Capsule ) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Cone & _a) : type(uint8_t(Type::Cone ) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Cylinder & _a) : type(uint8_t(Type::Cylinder) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Disk & _a) : type(uint8_t(Type::Disk ) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Obb & _a) : type(uint8_t(Type::Obb ) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Plane & _a) : type(uint8_t(Type::Plane ) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Sphere & _a) : type(uint8_t(Type::Sphere ) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + Shape(const bx::Triangle & _a) : type(uint8_t(Type::Triangle) ) { bx::memCopy(data, &_a, sizeof(_a) ); } + + uint8_t data[64]; + uint8_t type; +}; + +#define OVERLAP(_shapeType) \ + bool overlap(const _shapeType& _shapeA, const Shape& _shapeB) \ + { \ + switch (_shapeB.type) \ + { \ + case Shape::Type::Aabb: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Aabb *>(_shapeB.data) ); \ + case Shape::Type::Capsule: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Capsule *>(_shapeB.data) ); \ + case Shape::Type::Cone: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Cone *>(_shapeB.data) ); \ + case Shape::Type::Cylinder: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Cylinder *>(_shapeB.data) ); \ + case Shape::Type::Disk: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Disk *>(_shapeB.data) ); \ + case Shape::Type::Obb: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Obb *>(_shapeB.data) ); \ + case Shape::Type::Plane: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Plane *>(_shapeB.data) ); \ + case Shape::Type::Sphere: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Sphere *>(_shapeB.data) ); \ + case Shape::Type::Triangle: return bx::overlap(_shapeA, *reinterpret_cast<const bx::Triangle *>(_shapeB.data) ); \ + } \ + return false; \ + } + +OVERLAP(bx::Aabb); +OVERLAP(bx::Capsule); +OVERLAP(bx::Cone); +OVERLAP(bx::Cylinder); +OVERLAP(bx::Disk); +OVERLAP(bx::Obb); +OVERLAP(bx::Plane); +OVERLAP(bx::Sphere); +OVERLAP(bx::Triangle); + +#undef OVERLAP + +void initA(Shape& _outShape, Shape::Type::Enum _type, bx::Vec3 _pos) +{ + switch (_type) + { + case Shape::Type::Aabb: + { + bx::Aabb aabb; + toAabb(aabb, _pos, { 0.5f, 0.5f, 0.5f }); + _outShape = Shape(aabb); + } + break; + + case Shape::Type::Capsule: + _outShape = Shape(bx::Capsule + { + { bx::add(_pos, {0.0f, -1.0f, 0.0f}) }, + { bx::add(_pos, {0.0f, 1.0f, 0.0f}) }, + 0.5f, + }); + break; + + case Shape::Type::Cone: + _outShape = Shape(bx::Cone + { + { bx::add(_pos, {0.0f, -1.0f, 0.0f}) }, + { bx::add(_pos, {0.0f, 1.0f, 0.0f}) }, + 0.5f, + }); + break; + + case Shape::Type::Cylinder: + _outShape = Shape(bx::Cylinder + { + { bx::add(_pos, {0.0f, -1.0f, 0.0f}) }, + { bx::add(_pos, {0.0f, 1.0f, 0.0f}) }, + 0.5f, + }); + break; + + case Shape::Type::Disk: + _outShape = Shape(bx::Disk + { + _pos, + bx::normalize(bx::Vec3{0.0f, 1.0f, 1.0f}), + 0.5f, + }); + break; + + case Shape::Type::Obb: + { + bx::Obb obb; + bx::mtxSRT(obb.mtx + , 0.25f + , 1.0f + , 0.25f + , bx::toRad(50.0f) + , bx::toRad(15.0f) + , bx::toRad(45.0f) + , _pos.x + , _pos.y + , _pos.z + ); + _outShape = Shape(obb); + } + break; + + case Shape::Type::Sphere: + _outShape = Shape(bx::Sphere{_pos, 0.5f}); + break; + + case Shape::Type::Plane: + { + bx::Plane plane(bx::init::None); + bx::calcPlane(plane, bx::normalize(bx::Vec3{0.0f, 1.0f, 1.0f}), _pos); + _outShape = Shape(plane); + } + break; + + case Shape::Type::Triangle: + _outShape = Shape(bx::Triangle + { + { bx::add(_pos, {-0.4f, 0.0f, -0.4f}) }, + { bx::add(_pos, { 0.0f, -0.3f, 0.5f}) }, + { bx::add(_pos, { 0.0f, 0.5f, 0.3f}) }, + }); + break; + + default: break; + } +} + +void initB(Shape& _outShape, Shape::Type::Enum _type, bx::Vec3 _pos) +{ + switch (_type) + { + case Shape::Type::Aabb: + { + bx::Aabb aabb; + toAabb(aabb, _pos, { 0.5f, 0.5f, 0.5f }); + _outShape = Shape(aabb); + } + break; + + case Shape::Type::Capsule: + _outShape = Shape(bx::Capsule + { + { bx::add(_pos, {0.0f, -1.0f, 0.1f}) }, + { bx::add(_pos, {0.0f, 1.0f, 0.0f}) }, + 0.2f, + }); + break; + + case Shape::Type::Cone: + _outShape = Shape(bx::Cone + { + { bx::add(_pos, {0.0f, -1.0f, 0.1f}) }, + { bx::add(_pos, {0.0f, 1.0f, 0.0f}) }, + 0.2f, + }); + break; + + case Shape::Type::Cylinder: + _outShape = Shape(bx::Cylinder + { + { bx::add(_pos, {0.0f, -1.0f, 0.1f}) }, + { bx::add(_pos, {0.0f, 1.0f, 0.0f}) }, + 0.2f, + }); + break; + + case Shape::Type::Disk: + _outShape = Shape(bx::Disk + { + _pos, + bx::normalize(bx::Vec3{1.0f, 1.0f, 0.0f}), + 0.5f, + }); + break; + + case Shape::Type::Obb: + { + bx::Obb obb; + bx::mtxSRT(obb.mtx + , 1.0f + , 0.25f + , 0.25f + , bx::toRad(10.0f) + , bx::toRad(30.0f) + , bx::toRad(70.0f) + , _pos.x + , _pos.y + , _pos.z + ); + _outShape = Shape(obb); + } + break; + + case Shape::Type::Plane: + { + bx::Plane plane(bx::init::None); + bx::calcPlane(plane, bx::normalize(bx::Vec3{1.0f, 1.0f, 0.0f}), _pos); + _outShape = Shape(plane); + } + break; + + case Shape::Type::Sphere: + _outShape = Shape(bx::Sphere{_pos, 0.5f}); + break; + + case Shape::Type::Triangle: + _outShape = Shape(bx::Triangle + { + { bx::add(_pos, {-0.4f, 0.0f, -0.4f}) }, + { bx::add(_pos, {-0.5f, -0.3f, 0.0f}) }, + { bx::add(_pos, { 0.3f, 0.5f, 0.0f}) }, + }); + break; + + default: break; + } +} + +int32_t overlap(const Shape& _shapeA, const Shape& _shapeB) +{ + switch (_shapeA.type) + { + case Shape::Type::Aabb: return ::overlap(*reinterpret_cast<const bx::Aabb *>(_shapeA.data), _shapeB); + case Shape::Type::Capsule: return ::overlap(*reinterpret_cast<const bx::Capsule *>(_shapeA.data), _shapeB); + case Shape::Type::Cone: return ::overlap(*reinterpret_cast<const bx::Cone *>(_shapeA.data), _shapeB); + case Shape::Type::Cylinder: return ::overlap(*reinterpret_cast<const bx::Cylinder *>(_shapeA.data), _shapeB); + case Shape::Type::Disk: return ::overlap(*reinterpret_cast<const bx::Disk *>(_shapeA.data), _shapeB); + case Shape::Type::Obb: return ::overlap(*reinterpret_cast<const bx::Obb *>(_shapeA.data), _shapeB); + case Shape::Type::Plane: return ::overlap(*reinterpret_cast<const bx::Plane *>(_shapeA.data), _shapeB); + case Shape::Type::Sphere: return ::overlap(*reinterpret_cast<const bx::Sphere *>(_shapeA.data), _shapeB); + case Shape::Type::Triangle: return ::overlap(*reinterpret_cast<const bx::Triangle *>(_shapeA.data), _shapeB); + } + + return 2; +} + +void draw(DebugDrawEncoder& _dde, const Shape& _shape, const bx::Vec3 _pos) +{ + switch (_shape.type) + { + case Shape::Type::Aabb: _dde.draw (*reinterpret_cast<const bx::Aabb *>(_shape.data) ); break; + case Shape::Type::Capsule: _dde.draw (*reinterpret_cast<const bx::Capsule *>(_shape.data) ); break; + case Shape::Type::Cone: _dde.draw (*reinterpret_cast<const bx::Cone *>(_shape.data) ); break; + case Shape::Type::Cylinder: _dde.draw (*reinterpret_cast<const bx::Cylinder *>(_shape.data) ); break; + case Shape::Type::Disk: _dde.draw (*reinterpret_cast<const bx::Disk *>(_shape.data) ); break; + case Shape::Type::Obb: _dde.draw (*reinterpret_cast<const bx::Obb *>(_shape.data) ); break; + case Shape::Type::Plane: { _dde.drawGrid( reinterpret_cast<const bx::Plane *>(_shape.data)->normal, _pos, 9, 0.3f); } break; + case Shape::Type::Sphere: _dde.draw (*reinterpret_cast<const bx::Sphere *>(_shape.data) ); break; + case Shape::Type::Triangle: _dde.draw (*reinterpret_cast<const bx::Triangle *>(_shape.data) ); break; + } +} + void imageCheckerboard(void* _dst, uint32_t _width, uint32_t _height, uint32_t _step, uint32_t _0, uint32_t _1) { uint32_t* dst = (uint32_t*)_dst; @@ -480,8 +761,8 @@ void imageCheckerboard(void* _dst, uint32_t _width, uint32_t _height, uint32_t _ class ExampleDebugDraw : public entry::AppI { public: - ExampleDebugDraw(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleDebugDraw(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -497,6 +778,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -517,8 +801,7 @@ public: cameraCreate(); - const float initialPos[3] = { 0.0f, 2.0f, -12.0f }; - cameraSetPosition(initialPos); + cameraSetPosition({ 0.0f, 2.0f, -12.0f }); cameraSetVerticalAngle(0.0f); ddInit(); @@ -555,10 +838,10 @@ public: } template<typename Ty> - bool intersect(DebugDrawEncoder* _dde, const Ray& _ray, const Ty& _shape) + bool intersect(DebugDrawEncoder* _dde, const bx::Ray& _ray, const Ty& _shape) { - Hit hit; - if (::intersect(_ray, _shape, &hit) ) + bx::Hit hit; + if (bx::intersect(_ray, _shape, &hit) ) { _dde->push(); @@ -566,10 +849,7 @@ public: _dde->setColor(0xff0000ff); - const bx::Vec3 tmp = bx::mul(hit.m_normal, 0.7f); - const bx::Vec3 end = bx::add(hit.m_pos, tmp); - - _dde->drawCone(&hit.m_pos.x, &end.x, 0.1f); + _dde->drawCone(hit.pos, bx::mad(hit.plane.normal, 0.7f, hit.pos), 0.1f); _dde->pop(); @@ -596,6 +876,27 @@ public: showExampleDialog(this); + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 3.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + static float amplitudeMul = 0.0f; + ImGui::SliderFloat("Amplitude", &litudeMul, 0.0f, 1.0f); + + static float timeScale = 1.0f; + ImGui::SliderFloat("T scale", &timeScale, -1.0f, 1.0f); + + ImGui::End(); + imguiEndFrame(); int64_t now = bx::getHPCounter() - m_timeOffset; @@ -606,7 +907,7 @@ public: const float deltaTime = float(frameTime/freq); // Update camera. - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); float view[16]; cameraGetViewMtx(view); @@ -633,13 +934,15 @@ public: bx::mtxProj(proj, 45.0f, float(m_width)/float(m_height), 1.0f, 15.0f, bgfx::getCaps()->homogeneousDepth); bx::mtxMul(mtxVp, view, proj); - Ray ray = makeRay( + bx::Ray ray = bx::makeRay( (float(m_mouseState.m_mx)/float(m_width) * 2.0f - 1.0f) , -(float(m_mouseState.m_my)/float(m_height) * 2.0f - 1.0f) , mtxInvVp ); - const uint32_t selected = 0xff80ffff; + constexpr uint32_t kSelected = 0xff80ffff; + constexpr uint32_t kOverlapA = 0xff0000ff; + constexpr uint32_t kOverlapB = 0xff8080ff; DebugDrawEncoder dde; @@ -647,35 +950,36 @@ public: dde.drawAxis(0.0f, 0.0f, 0.0f); dde.push(); - Aabb aabb = + bx::Aabb aabb = { { 5.0f, 1.0f, 1.0f }, { 10.0f, 5.0f, 5.0f }, }; dde.setWireframe(true); - dde.setColor(intersect(&dde, ray, aabb) ? selected : 0xff00ff00); + dde.setColor(intersect(&dde, ray, aabb) ? kSelected : 0xff00ff00); dde.draw(aabb); dde.pop(); - float time = float(now/freq); + static float time = 0.0f; + time += deltaTime*timeScale; - Obb obb; - bx::mtxRotateX(obb.m_mtx, time); + bx::Obb obb; + bx::mtxRotateX(obb.mtx, time); dde.setWireframe(true); - dde.setColor(intersect(&dde, ray, obb) ? selected : 0xffffffff); + dde.setColor(intersect(&dde, ray, obb) ? kSelected : 0xffffffff); dde.draw(obb); - bx::mtxSRT(obb.m_mtx, 1.0f, 1.0f, 1.0f, time*0.23f, time, 0.0f, 3.0f, 0.0f, 0.0f); + bx::mtxSRT(obb.mtx, 1.0f, 1.0f, 1.0f, time*0.23f, time, 0.0f, 3.0f, 0.0f, 0.0f); dde.push(); - toAabb(aabb, obb); + bx::toAabb(aabb, obb); dde.setWireframe(true); dde.setColor(0xff0000ff); dde.draw(aabb); dde.pop(); dde.setWireframe(false); - dde.setColor(intersect(&dde, ray, obb) ? selected : 0xffffffff); + dde.setColor(intersect(&dde, ray, obb) ? kSelected : 0xffffffff); dde.draw(obb); dde.setColor(0xffffffff); @@ -695,43 +999,43 @@ public: dde.pop(); { - const float normal[] = { 0.0f, 1.0f, 0.0f }; - const float pos[] = { 0.0f, -2.0f, 0.0f }; + const bx::Vec3 normal = { 0.0f, 1.0f, 0.0f }; + const bx::Vec3 pos = { 0.0f, -2.0f, 0.0f }; - Plane plane; - bx::calcPlane(&plane.m_normal.x, normal, pos); + bx::Plane plane(bx::init::None); + bx::calcPlane(plane, normal, pos); dde.setColor(false || intersect(&dde, ray, plane) - ? selected + ? kSelected : 0xffffffff ); - dde.drawGrid(Axis::Y, pos, 20, 1.0f); + dde.drawGrid(Axis::Y, pos, 128, 1.0f); } dde.drawFrustum(mtxVp); dde.push(); - Sphere sphere = { { 0.0f, 5.0f, 0.0f }, 1.0f }; - dde.setColor(intersect(&dde, ray, sphere) ? selected : 0xfff0c0ff); + bx::Sphere sphere = { { 0.0f, 5.0f, 0.0f }, 1.0f }; + dde.setColor(intersect(&dde, ray, sphere) ? kSelected : 0xfff0c0ff); dde.setWireframe(true); dde.setLod(3); dde.draw(sphere); dde.setWireframe(false); - sphere.m_center.x = -2.0f; - dde.setColor(intersect(&dde, ray, sphere) ? selected : 0xc0ffc0ff); + sphere.center.x = -2.0f; + dde.setColor(intersect(&dde, ray, sphere) ? kSelected : 0xc0ffc0ff); dde.setLod(2); dde.draw(sphere); - sphere.m_center.x = -4.0f; - dde.setColor(intersect(&dde, ray, sphere) ? selected : 0xa0f0ffff); + sphere.center.x = -4.0f; + dde.setColor(intersect(&dde, ray, sphere) ? kSelected : 0xa0f0ffff); dde.setLod(1); dde.draw(sphere); - sphere.m_center.x = -6.0f; - dde.setColor(intersect(&dde, ray, sphere) ? selected : 0xffc0ff00); + sphere.center.x = -6.0f; + dde.setColor(intersect(&dde, ray, sphere) ? kSelected : 0xffc0ff00); dde.setLod(0); dde.draw(sphere); dde.pop(); @@ -740,8 +1044,8 @@ public: dde.push(); { - float normal[3] = { 0.0f, 0.0f, 1.0f }; - float center[3] = { -8.0f, 0.0f, 0.0f }; + const bx::Vec3 normal = { 0.0f, 0.0f, 1.0f }; + const bx::Vec3 center = { -8.0f, 0.0f, 0.0f }; dde.push(); dde.setStipple(true, 1.0f, time*0.1f); dde.setColor(0xff0000ff); @@ -764,14 +1068,14 @@ public: dde.push(); dde.setSpin(time*0.3f); { - Cone cone = + bx::Cone cone = { { -11.0f, 4.0f, 0.0f }, { -13.0f, 6.0f, 1.0f }, 1.0f }; - Cylinder cylinder = + bx::Cylinder cylinder = { { -9.0f, 2.0f, -1.0f }, { -11.0f, 4.0f, 0.0f }, @@ -781,7 +1085,7 @@ public: dde.setColor(false || intersect(&dde, ray, cone) || intersect(&dde, ray, cylinder) - ? selected + ? kSelected : 0xffffffff ); @@ -792,13 +1096,13 @@ public: { dde.setLod(0); - Capsule capsule = + bx::Capsule capsule = { { 0.0f, 7.0f, 0.0f }, { -6.0f, 7.0f, 0.0f }, 0.5f }; - dde.setColor(intersect(&dde, ray, capsule) ? selected : 0xffffffff); + dde.setColor(intersect(&dde, ray, capsule) ? kSelected : 0xffffffff); dde.draw(capsule); } dde.pop(); @@ -812,16 +1116,15 @@ public: , -10.0f, 1.0f, 10.0f ); - Cylinder cylinder = + bx::Cylinder cylinder = { { -10.0f, 1.0f, 10.0f }, - { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, 1.0f }; - float up[3] = { 0.0f, 4.0f, 0.0f }; - bx::vec3MulMtx(&cylinder.m_end.x, up, mtx); - dde.setColor(intersect(&dde, ray, cylinder) ? selected : 0xffffffff); + cylinder.end = bx::mul({ 0.0f, 4.0f, 0.0f }, mtx); + dde.setColor(intersect(&dde, ray, cylinder) ? kSelected : 0xffffffff); dde.draw(cylinder); dde.push(); @@ -835,6 +1138,68 @@ public: dde.drawOrb(-11.0f, 0.0f, 0.0f, 1.0f); + dde.push(); + { + constexpr uint32_t colorA[] = + { + 0xffffffff, + kOverlapA, + 0xff666666, + 0xff6666ff, + }; + + constexpr uint32_t colorB[] = + { + 0xffffffff, + kOverlapB, + 0xff888888, + 0xff8888ff, + }; + + constexpr float kStep = 3.0f; + + bx::Vec3 posA = + { + -4.5f*kStep, + 1.0f, + 20.0f, + }; + + for (uint32_t ii = 0; ii < Shape::Type::Count; ++ii) + { + const bx::Vec3 posB = bx::add(posA, + { + amplitudeMul*bx::sin(time*0.39f) * 1.03f, + amplitudeMul*bx::cos(time*0.79f) * 1.03f, + amplitudeMul*bx::cos(time) * 1.03f, + }); + + for (uint32_t jj = 0; jj < Shape::Type::Count; ++jj) + { + const bx::Vec3 pa = bx::add(posA, {jj*kStep, 0.0f, 0.0f}); + const bx::Vec3 pb = bx::add(posB, {jj*kStep, 0.0f, 0.0f}); + + Shape shapeA, shapeB; + initA(shapeA, Shape::Type::Enum(ii), pa); + initB(shapeB, Shape::Type::Enum(jj), pb); + + int32_t olp = overlap(shapeA, shapeB); + + dde.setColor(colorA[olp]); + dde.setWireframe(false); + draw(dde, shapeA, pa); + + dde.setColor(colorB[olp]); + dde.setWireframe(true); + draw(dde, shapeB, pb); + } + + posA = bx::add(posA, {0.0f, 0.0f, kStep}); + } + } + + dde.pop(); + dde.end(); // Advance to next frame. Rendering thread will be kicked to @@ -862,4 +1227,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleDebugDraw, "29-debugdraw", "Debug draw."); +ENTRY_IMPLEMENT_MAIN( + ExampleDebugDraw + , "29-debugdraw" + , "Debug draw." + , "https://bkaradzic.github.io/bgfx/examples.html#debugdraw" + ); diff --git a/3rdparty/bgfx/examples/30-picking/fs_picking_id.sc b/3rdparty/bgfx/examples/30-picking/fs_picking_id.sc index 603eab3019d..8a229310078 100644 --- a/3rdparty/bgfx/examples/30-picking/fs_picking_id.sc +++ b/3rdparty/bgfx/examples/30-picking/fs_picking_id.sc @@ -1,8 +1,8 @@ $input v_pos, v_view, v_normal, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc b/3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc index 7939b6ab9a1..05c873e9676 100644 --- a/3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc +++ b/3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc @@ -1,8 +1,8 @@ $input v_pos, v_view, v_normal, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/30-picking/makefile b/3rdparty/bgfx/examples/30-picking/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/30-picking/makefile +++ b/3rdparty/bgfx/examples/30-picking/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/30-picking/picking.cpp b/3rdparty/bgfx/examples/30-picking/picking.cpp index 7847e1ba406..9a5c36d8fd8 100644 --- a/3rdparty/bgfx/examples/30-picking/picking.cpp +++ b/3rdparty/bgfx/examples/30-picking/picking.cpp @@ -1,6 +1,6 @@ /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -21,8 +21,8 @@ namespace class ExamplePicking : public entry::AppI { public: - ExamplePicking(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExamplePicking(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -38,6 +38,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -54,7 +57,7 @@ public: , 0 ); - // ID buffer clears to black, which represnts clicking on nothing (background) + // ID buffer clears to black, which represents clicking on nothing (background) bgfx::setViewClear(RENDER_PASS_ID , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH , 0x000000ff @@ -124,7 +127,7 @@ public: | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP ); - m_pickingRTDepth = bgfx::createTexture2D(ID_DIM, ID_DIM, false, 1, bgfx::TextureFormat::D24S8, 0 + m_pickingRTDepth = bgfx::createTexture2D(ID_DIM, ID_DIM, false, 1, bgfx::TextureFormat::D32F, 0 | BGFX_TEXTURE_RT | BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT @@ -268,17 +271,12 @@ public: float mouseXNDC = ( m_mouseState.m_mx / (float)m_width ) * 2.0f - 1.0f; float mouseYNDC = ((m_height - m_mouseState.m_my) / (float)m_height) * 2.0f - 1.0f; - float pickEye[3]; - float mousePosNDC[3] = { mouseXNDC, mouseYNDC, 0.0f }; - bx::vec3MulMtxH(pickEye, mousePosNDC, invViewProj); - - float pickAt[3]; - float mousePosNDCEnd[3] = { mouseXNDC, mouseYNDC, 1.0f }; - bx::vec3MulMtxH(pickAt, mousePosNDCEnd, invViewProj); + const bx::Vec3 pickEye = bx::mulH({ mouseXNDC, mouseYNDC, 0.0f }, invViewProj); + const bx::Vec3 pickAt = bx::mulH({ mouseXNDC, mouseYNDC, 1.0f }, invViewProj); // Look at our unprojected point float pickView[16]; - bx::mtxLookAt(pickView, bx::load(pickEye), bx::load(pickAt) ); + bx::mtxLookAt(pickView, pickEye, pickAt); // Tight FOV is best for picking float pickProj[16]; @@ -447,4 +445,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExamplePicking, "30-picking", "Mouse picking via GPU texture readback."); +ENTRY_IMPLEMENT_MAIN( + ExamplePicking + , "30-picking" + , "Mouse picking via GPU texture readback." + , "https://bkaradzic.github.io/bgfx/examples.html#picking" + ); diff --git a/3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc b/3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc index fb54484949d..f4ba4f35f3b 100644 --- a/3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc +++ b/3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc @@ -2,8 +2,8 @@ $input a_position, a_normal $output v_pos, v_view, v_normal, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc index 352dbb02ee7..6640c0945f8 100644 --- a/3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" @@ -65,22 +65,6 @@ float PCF(sampler2DShadow _sampler, vec4 _shadowCoord, float _bias, vec2 _texelS return result / 16.0; } - -float toClipSpaceDepth(float _depthTextureZ) -{ -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL - return _depthTextureZ; -#else - return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL -} - -vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) -{ - vec4 wpos = mul(_invViewProj, vec4(_clipPos, 1.0) ); - return wpos.xyz / wpos.w; -} - void main() { vec3 n = texture2D(s_normal, v_texcoord0).xyz; @@ -97,18 +81,18 @@ void main() float deviceDepth = texture2D(s_depth, texCoord).x; float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL vec3 wpos = clipToWorld(u_invMvp, clip); const float shadowMapOffset = 0.003; vec3 posOffset = wpos + n.xyz * shadowMapOffset; vec4 shadowCoord = mul(u_lightMtx, vec4(posOffset, 1.0) ); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL shadowCoord.y *= -1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL float shadowMapBias = 0.001; vec2 texelSize = vec2_splat(u_shadowDimsInv.x); diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc index a220ecf9dc3..c17b87615fb 100644 --- a/3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc @@ -2,7 +2,7 @@ $input v_normal /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc index bbcc51d1fdc..cef4c4861cd 100644 --- a/3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc @@ -2,7 +2,7 @@ $input v_lightCenterScale, v_color0 /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" @@ -12,24 +12,9 @@ SAMPLER2D(s_depth, 1); // Depth output from gbuffer uniform mat4 u_invMvp; -float toClipSpaceDepth(float _depthTextureZ) -{ -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL - return _depthTextureZ; -#else - return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL -} - -vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) -{ - vec4 wpos = mul(_invViewProj, vec4(_clipPos, 1.0) ); - return wpos.xyz / wpos.w; -} - void main() { -#if BGFX_SHADER_LANGUAGE_HLSL && (BGFX_SHADER_LANGUAGE_HLSL < 4) +#if BGFX_SHADER_LANGUAGE_HLSL && (BGFX_SHADER_LANGUAGE_HLSL < 400) vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy + u_viewTexel.xy * vec2_splat(0.5); #else vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy; @@ -40,9 +25,9 @@ void main() float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL vec3 wpos = clipToWorld(u_invMvp, clip); // Get normal from its map, and decompress diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc index 56026da168a..a63655b9359 100644 --- a/3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc @@ -2,7 +2,7 @@ $input v_normal /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" @@ -11,7 +11,7 @@ uniform vec4 u_tint; void main() { -#if BGFX_SHADER_LANGUAGE_HLSL && (BGFX_SHADER_LANGUAGE_HLSL < 4) +#if BGFX_SHADER_LANGUAGE_HLSL && (BGFX_SHADER_LANGUAGE_HLSL < 400) vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy + u_viewTexel.xy * vec2_splat(0.5); #else vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy; diff --git a/3rdparty/bgfx/examples/31-rsm/makefile b/3rdparty/bgfx/examples/31-rsm/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/31-rsm/makefile +++ b/3rdparty/bgfx/examples/31-rsm/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp b/3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp index 8a0ca30a2d7..65dfe345c2e 100644 --- a/3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp +++ b/3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp @@ -1,6 +1,6 @@ /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <common.h> @@ -105,7 +105,7 @@ static const float s_meshScale[] = 0.05f }; -// Vertex decl for our screen space quad (used in deferred rendering) +// Vertex layout for our screen space quad (used in deferred rendering) struct PosTexCoord0Vertex { float m_x; @@ -116,24 +116,24 @@ struct PosTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; // Utility function to draw a screen space quad for deferred rendering void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) { - if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_decl) ) + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; const float minx = -_width; @@ -186,8 +186,8 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf class ExampleRSM : public entry::AppI { public: - ExampleRSM(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleRSM(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) , m_reading(0) , m_currFrame(UINT32_MAX) , m_cameraSpin(false) @@ -211,6 +211,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -258,12 +261,12 @@ public: u_rsmAmount = bgfx::createUniform("u_rsmAmount", bgfx::UniformType::Vec4); // How much RSM to use vs directional light // Create texture sampler uniforms (used when we bind textures) - s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Int1); // Normal gbuffer - s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Int1); // Normal gbuffer - s_color = bgfx::createUniform("s_color", bgfx::UniformType::Int1); // Color (albedo) gbuffer - s_light = bgfx::createUniform("s_light", bgfx::UniformType::Int1); // Light buffer - s_shadowMap = bgfx::createUniform("s_shadowMap", bgfx::UniformType::Int1); // Shadow map - s_rsm = bgfx::createUniform("s_rsm", bgfx::UniformType::Int1); // Reflective shadow map + s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Sampler); // Normal gbuffer + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler); // Normal gbuffer + s_color = bgfx::createUniform("s_color", bgfx::UniformType::Sampler); // Color (albedo) gbuffer + s_light = bgfx::createUniform("s_light", bgfx::UniformType::Sampler); // Light buffer + s_shadowMap = bgfx::createUniform("s_shadowMap", bgfx::UniformType::Sampler); // Shadow map + s_rsm = bgfx::createUniform("s_rsm", bgfx::UniformType::Sampler); // Reflective shadow map // Create program from shaders. m_gbufferProgram = loadProgram("vs_rsm_gbuffer", "fs_rsm_gbuffer"); // Gbuffer @@ -311,10 +314,9 @@ public: | BGFX_SAMPLER_V_CLAMP ; - // Make gbuffer and related textures m_gbufferTex[GBUFFER_RT_NORMAL] = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, false, 1, bgfx::TextureFormat::BGRA8, tsFlags); m_gbufferTex[GBUFFER_RT_COLOR] = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, false, 1, bgfx::TextureFormat::BGRA8, tsFlags); - m_gbufferTex[GBUFFER_RT_DEPTH] = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, false, 1, bgfx::TextureFormat::D24, tsFlags); + m_gbufferTex[GBUFFER_RT_DEPTH] = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, false, 1, bgfx::TextureFormat::D32F, tsFlags); m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_gbufferTex), m_gbufferTex, true); // Make light buffer @@ -351,21 +353,20 @@ public: , false , 1 , bgfx::TextureFormat::D16 - , BGFX_TEXTURE_RT /* | BGFX_TEXTURE_COMPARE_LEQUAL*/ - ); // Note I'm not setting BGFX_TEXTURE_COMPARE_LEQUAL. Why? + , BGFX_TEXTURE_RT /* | BGFX_SAMPLER_COMPARE_LEQUAL*/ + ); // Note I'm not setting BGFX_SAMPLER_COMPARE_LEQUAL. Why? // Normally a PCF shadow map such as this requires a compare. However, this sample also - // reads from this texture in the lighting pass, and only uses the PCF capabilites in the - // combine pass, so the flag is disabled by default. + // reads from this texture in the lighting pass, and only uses the PCF capabilities in + // the combine pass, so the flag is disabled by default. m_shadowBuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_shadowBufferTex), m_shadowBufferTex, true); - // Vertex decl + // Vertex layout PosTexCoord0Vertex::init(); // Init camera cameraCreate(); - float camPos[] = {0.0f, 1.5f, 0.0f}; - cameraSetPosition(camPos); + cameraSetPosition({0.0f, 1.5f, 0.0f}); cameraSetVerticalAngle(-0.3f); // Init directional light @@ -448,7 +449,7 @@ public: const float deltaTime = float(frameTime/freq); // Update camera - cameraUpdate(deltaTime*0.15f, m_mouseState); + cameraUpdate(deltaTime*0.15f, m_mouseState, ImGui::MouseOverArea() ); // Set up matrices for gbuffer float view[16]; @@ -476,7 +477,7 @@ public: lightAt[1] = 0.0f; lightAt[2] = 0.0f; - bx::mtxLookAt(smView, bx::load(lightEye), bx::load(lightAt) ); + bx::mtxLookAt(smView, bx::load<bx::Vec3>(lightEye), bx::load<bx::Vec3>(lightAt) ); const float area = 10.0f; const bgfx::Caps* caps = bgfx::getCaps(); bx::mtxOrtho(smProj, -area, area, -area, area, -100.0f, 100.0f, 0.0f, caps->homogeneousDepth); @@ -759,4 +760,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleRSM, "31-rsm", "Global Illumination with Reflective Shadow Map."); +ENTRY_IMPLEMENT_MAIN( + ExampleRSM + , "31-rsm" + , "Global Illumination with Reflective Shadow Map." + , "https://bkaradzic.github.io/bgfx/examples.html#rsm" + ); diff --git a/3rdparty/bgfx/examples/31-rsm/vs_rsm_combine.sc b/3rdparty/bgfx/examples/31-rsm/vs_rsm_combine.sc index be7032c2be5..9df8597805d 100644 --- a/3rdparty/bgfx/examples/31-rsm/vs_rsm_combine.sc +++ b/3rdparty/bgfx/examples/31-rsm/vs_rsm_combine.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/31-rsm/vs_rsm_gbuffer.sc b/3rdparty/bgfx/examples/31-rsm/vs_rsm_gbuffer.sc index 123e4fbf4af..a7ac4108a11 100644 --- a/3rdparty/bgfx/examples/31-rsm/vs_rsm_gbuffer.sc +++ b/3rdparty/bgfx/examples/31-rsm/vs_rsm_gbuffer.sc @@ -3,7 +3,7 @@ $output v_normal /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ diff --git a/3rdparty/bgfx/examples/31-rsm/vs_rsm_lbuffer.sc b/3rdparty/bgfx/examples/31-rsm/vs_rsm_lbuffer.sc index eed5b732cec..7cdea3c3421 100644 --- a/3rdparty/bgfx/examples/31-rsm/vs_rsm_lbuffer.sc +++ b/3rdparty/bgfx/examples/31-rsm/vs_rsm_lbuffer.sc @@ -3,7 +3,7 @@ $output v_lightCenterScale, v_color0 /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" @@ -16,21 +16,6 @@ uniform mat4 u_invMvpShadow; SAMPLER2D(s_shadowMap, 2); // Used to reconstruct 3d position for lights SAMPLER2D(s_rsm, 3); // Reflective shadow map, used to scale/color light -float toClipSpaceDepth(float _depthTextureZ) -{ -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL - return _depthTextureZ; -#else - return _depthTextureZ * 2.0 - 1.0; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL -} - -vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) -{ - vec4 wpos = mul(_invViewProj, vec4(_clipPos, 1.0) ); - return wpos.xyz / wpos.w; -} - void main() { // Calculate vertex position @@ -41,9 +26,9 @@ void main() float deviceDepth = texture2DLod(s_shadowMap, texCoord, 0).x; float depth = toClipSpaceDepth(deviceDepth); vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); -#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#if !BGFX_SHADER_LANGUAGE_GLSL clip.y = -clip.y; -#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL +#endif // !BGFX_SHADER_LANGUAGE_GLSL vec3 wPos = clipToWorld(u_invMvpShadow, clip); wPos.y -= 0.001; // Would be much better to perturb in normal direction, but I didn't do that. diff --git a/3rdparty/bgfx/examples/31-rsm/vs_rsm_shadow.sc b/3rdparty/bgfx/examples/31-rsm/vs_rsm_shadow.sc index 41bf8ab118d..942e1c3e3a6 100644 --- a/3rdparty/bgfx/examples/31-rsm/vs_rsm_shadow.sc +++ b/3rdparty/bgfx/examples/31-rsm/vs_rsm_shadow.sc @@ -3,7 +3,7 @@ $output v_normal // RSM shadow /* * Copyright 2016 Joseph Cherlin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/32-particles/particles.cpp b/3rdparty/bgfx/examples/32-particles/particles.cpp index 4736a5da095..b9815ea7ea1 100644 --- a/3rdparty/bgfx/examples/32-particles/particles.cpp +++ b/3rdparty/bgfx/examples/32-particles/particles.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -229,8 +229,8 @@ struct Emitter class ExampleParticles : public entry::AppI { public: - ExampleParticles(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleParticles(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -246,6 +246,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -290,8 +293,7 @@ public: cameraCreate(); - const float initialPos[3] = { 0.0f, 2.0f, -12.0f }; - cameraSetPosition(initialPos); + cameraSetPosition({ 0.0f, 2.0f, -12.0f }); cameraSetVerticalAngle(0.0f); m_timeOffset = bx::getHPCounter(); @@ -334,7 +336,7 @@ public: const double freq = double(bx::getHPFrequency() ); const float deltaTime = float(frameTime/freq); - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); float view[16]; cameraGetViewMtx(view); @@ -407,20 +409,18 @@ public: DebugDrawEncoder dde; dde.begin(0); - float center[3] = { 0.0f, 0.0f, 0.0f }; - dde.drawGrid(Axis::Y, center); + dde.drawGrid(Axis::Y, { 0.0f, 0.0f, 0.0f }); - float eye[3]; - cameraGetPosition(eye); + const bx::Vec3 eye = cameraGetPosition(); m_emitter[currentEmitter].update(); psUpdate(deltaTime * timeScale); - psRender(0, view, bx::load(eye) ); + psRender(0, view, eye); if (showBounds) { - Aabb aabb; + bx::Aabb aabb; psGetAabb(m_emitter[currentEmitter].m_handle, aabb); dde.push(); dde.setWireframe(true); @@ -455,4 +455,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleParticles, "32-particles", "Particles."); +ENTRY_IMPLEMENT_MAIN( + ExampleParticles + , "32-particles" + , "Particles." + , "https://bkaradzic.github.io/bgfx/examples.html#particles" + ); diff --git a/3rdparty/bgfx/examples/33-pom/makefile b/3rdparty/bgfx/examples/33-pom/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/33-pom/makefile +++ b/3rdparty/bgfx/examples/33-pom/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/33-pom/pom.cpp b/3rdparty/bgfx/examples/33-pom/pom.cpp index 4148c32129d..2e07a1957eb 100644 --- a/3rdparty/bgfx/examples/33-pom/pom.cpp +++ b/3rdparty/bgfx/examples/33-pom/pom.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -23,7 +23,7 @@ struct PosTangentBitangentTexcoordVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Tangent, 4, bgfx::AttribType::Uint8, true, true) @@ -32,10 +32,10 @@ struct PosTangentBitangentTexcoordVertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosTangentBitangentTexcoordVertex::ms_decl; +bgfx::VertexLayout PosTangentBitangentTexcoordVertex::ms_layout; uint32_t packUint32(uint8_t _x, uint8_t _y, uint8_t _z, uint8_t _w) { @@ -111,8 +111,8 @@ static const uint16_t s_cubeIndices[36] = class ExamplePom : public entry::AppI { public: - ExamplePom(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExamplePom(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -128,6 +128,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -149,15 +152,15 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer(bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ), - PosTangentBitangentTexcoordVertex::ms_decl); + PosTangentBitangentTexcoordVertex::ms_layout); // Create static index buffer. m_ibh = bgfx::createIndexBuffer(bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ) ); // Create texture sampler uniforms. - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); - s_texNormal = bgfx::createUniform("s_texNormal", bgfx::UniformType::Int1); - s_texDepth = bgfx::createUniform("s_texDepth", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + s_texNormal = bgfx::createUniform("s_texNormal", bgfx::UniformType::Sampler); + s_texDepth = bgfx::createUniform("s_texDepth", bgfx::UniformType::Sampler); u_light_pos = bgfx::createUniform("u_light_pos", bgfx::UniformType::Vec4); @@ -385,4 +388,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExamplePom, "33-pom", "Parallax mapping."); +ENTRY_IMPLEMENT_MAIN( + ExamplePom + , "33-pom" + , "Parallax mapping." + , "https://bkaradzic.github.io/bgfx/examples.html#pom" + ); diff --git a/3rdparty/bgfx/examples/34-mvs/mvs.cpp b/3rdparty/bgfx/examples/34-mvs/mvs.cpp index 87144356f8f..731a08f1bbc 100644 --- a/3rdparty/bgfx/examples/34-mvs/mvs.cpp +++ b/3rdparty/bgfx/examples/34-mvs/mvs.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -18,16 +18,16 @@ struct PosVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosVertex::ms_decl; +bgfx::VertexLayout PosVertex::ms_layout; struct ColorVertex { @@ -35,16 +35,16 @@ struct ColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl ColorVertex::ms_decl; +bgfx::VertexLayout ColorVertex::ms_layout; static PosVertex s_cubePosVertices[] = { @@ -105,8 +105,8 @@ static const uint16_t s_cubeTriStrip[] = class ExampleMvs : public entry::AppI { public: - ExampleMvs(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleMvs(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -124,6 +124,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -148,13 +151,13 @@ public: m_vbh[0] = bgfx::createVertexBuffer( // Static data can be passed with bgfx::makeRef bgfx::makeRef(s_cubePosVertices, sizeof(s_cubePosVertices) ) - , PosVertex::ms_decl + , PosVertex::ms_layout ); m_vbh[1] = bgfx::createVertexBuffer( // Static data can be passed with bgfx::makeRef bgfx::makeRef(s_cubeColorVertices, sizeof(s_cubeColorVertices) ) - , ColorVertex::ms_decl + , ColorVertex::ms_layout ); // Create static index buffer. @@ -281,4 +284,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleMvs, "34-mvs", "Multiple vertex streams."); +ENTRY_IMPLEMENT_MAIN( + ExampleMvs + , "34-mvs" + , "Multiple vertex streams." + , "https://bkaradzic.github.io/bgfx/examples.html#mvs" + ); diff --git a/3rdparty/bgfx/examples/35-dynamic/dynamic.cpp b/3rdparty/bgfx/examples/35-dynamic/dynamic.cpp index 0bcbf110257..0c82aca2457 100644 --- a/3rdparty/bgfx/examples/35-dynamic/dynamic.cpp +++ b/3rdparty/bgfx/examples/35-dynamic/dynamic.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -24,17 +24,17 @@ struct PosColorVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorVertex::ms_decl; +bgfx::VertexLayout PosColorVertex::ms_layout; static PosColorVertex s_cubeVertices[] = { @@ -83,8 +83,8 @@ static const uint16_t s_cubeTriStrip[] = class ExampleDynamic : public entry::AppI { public: - ExampleDynamic(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleDynamic(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -102,6 +102,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -129,7 +132,7 @@ public: m_vbh[yy*kDimWidth+xx] = bgfx::createDynamicVertexBuffer( // Static data can be passed with bgfx::makeRef bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosColorVertex::ms_decl + , PosColorVertex::ms_layout ); } } @@ -220,7 +223,7 @@ public: const uint32_t abgr = m_mwc.gen(); for (uint32_t ii = 0; ii < BX_COUNTOF(s_cubeVertices); ++ii) { - bx::vec3MulMtx(&vertex[ii].m_x, &s_cubeVertices[ii].m_x, mtx); + bx::store(&vertex[ii].m_x, bx::mul(bx::load<bx::Vec3>(&s_cubeVertices[ii].m_x), mtx) ); vertex[ii].m_abgr = abgr; } @@ -282,4 +285,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleDynamic, "35-dynamic", "Dynamic buffers update."); +ENTRY_IMPLEMENT_MAIN( + ExampleDynamic + , "35-dynamic" + , "Dynamic buffers update." + , "https://bkaradzic.github.io/bgfx/examples.html#dynamic" + ); diff --git a/3rdparty/bgfx/examples/36-sky/fs_sky.sc b/3rdparty/bgfx/examples/36-sky/fs_sky.sc index 7c53d5018c7..1b3481838a6 100644 --- a/3rdparty/bgfx/examples/36-sky/fs_sky.sc +++ b/3rdparty/bgfx/examples/36-sky/fs_sky.sc @@ -2,7 +2,7 @@ $input v_skyColor, v_screenPos, v_viewDir /* * Copyright 2017 Stanislav Pidhorskyi. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ uniform vec4 u_parameters; // x - sun size, y - sun bloom, z - exposition, w - time diff --git a/3rdparty/bgfx/examples/36-sky/fs_sky_color_banding_fix.sc b/3rdparty/bgfx/examples/36-sky/fs_sky_color_banding_fix.sc index 6782e03e310..de96f218043 100644 --- a/3rdparty/bgfx/examples/36-sky/fs_sky_color_banding_fix.sc +++ b/3rdparty/bgfx/examples/36-sky/fs_sky_color_banding_fix.sc @@ -2,7 +2,7 @@ $input v_skyColor, v_screenPos, v_viewDir /* * Copyright 2017 Stanislav Pidhorskyi. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ diff --git a/3rdparty/bgfx/examples/36-sky/fs_sky_landscape.sc b/3rdparty/bgfx/examples/36-sky/fs_sky_landscape.sc index 088b03c70a5..0ce045e577e 100644 --- a/3rdparty/bgfx/examples/36-sky/fs_sky_landscape.sc +++ b/3rdparty/bgfx/examples/36-sky/fs_sky_landscape.sc @@ -2,7 +2,7 @@ $input v_normal, v_texcoord0 /* * Copyright 2017 Stanislav Pidhorskyi. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/36-sky/makefile b/3rdparty/bgfx/examples/36-sky/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/36-sky/makefile +++ b/3rdparty/bgfx/examples/36-sky/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/36-sky/sky.cpp b/3rdparty/bgfx/examples/36-sky/sky.cpp index f529e0eb8a1..c82c9e502a1 100644 --- a/3rdparty/bgfx/examples/36-sky/sky.cpp +++ b/3rdparty/bgfx/examples/36-sky/sky.cpp @@ -1,6 +1,6 @@ -/* +/* * Copyright 2017 Stanislav Pidhorskyi. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ /* @@ -37,11 +37,11 @@ * ========== * * [1] R. Perez, R. Seals, and J. Michalsky."An All-Weather Model for Sky Luminance Distribution". - * Solar Energy, Volume 50, Number 3 (March 1993), pp. 235–245. + * Solar Energy, Volume 50, Number 3 (March 1993), pp. 235-245. * * [2] A. J. Preetham, Peter Shirley, and Brian Smits. "A Practical Analytic Model for Daylight", * Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques, - * 1999, pp. 91–100. + * 1999, pp. 91-100. * https://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf * * [3] E. Lengyel, Game Engine Gems, Volume One. Jones & Bartlett Learning, 2010. pp. 219 - 234 @@ -52,617 +52,619 @@ #include "bgfx_utils.h" #include "imgui/imgui.h" #include "camera.h" -#include "bounds.h" #include <map> namespace { - // Represents color. Color-space depends on context. - // In the code below, used to represent color in XYZ, and RGB color-space - typedef bx::Vec3 Color; - - // HDTV rec. 709 matrix. - static float M_XYZ2RGB[] = - { - 3.240479f, -0.969256f, 0.055648f, - -1.53715f, 1.875991f, -0.204043f, - -0.49853f, 0.041556f, 1.057311f, - }; - - // Converts color repesentation from CIE XYZ to RGB color-space. - Color xyzToRgb(const Color& xyz) - { - Color rgb; - rgb.x = M_XYZ2RGB[0] * xyz.x + M_XYZ2RGB[3] * xyz.y + M_XYZ2RGB[6] * xyz.z; - rgb.y = M_XYZ2RGB[1] * xyz.x + M_XYZ2RGB[4] * xyz.y + M_XYZ2RGB[7] * xyz.z; - rgb.z = M_XYZ2RGB[2] * xyz.x + M_XYZ2RGB[5] * xyz.y + M_XYZ2RGB[8] * xyz.z; - return rgb; - }; +// Represents color. Color-space depends on context. +// In the code below, used to represent color in XYZ, and RGB color-space +typedef bx::Vec3 Color; +// HDTV rec. 709 matrix. +static constexpr float M_XYZ2RGB[] = +{ + 3.240479f, -0.969256f, 0.055648f, + -1.53715f, 1.875991f, -0.204043f, + -0.49853f, 0.041556f, 1.057311f, +}; - // Precomputed luminance of sunlight in XYZ colorspace. - // Computed using code from Game Engine Gems, Volume One, chapter 15. Implementation based on Dr. Richard Bird model. - // This table is used for piecewise linear interpolation. Transitions from and to 0.0 at sunset and sunrise are highly inaccurate - static std::map<float, Color> sunLuminanceXYZTable = { - { 5.0f, { 0.000000f, 0.000000f, 0.000000f } }, - { 7.0f, { 12.703322f, 12.989393f, 9.100411f } }, - { 8.0f, { 13.202644f, 13.597814f, 11.524929f } }, - { 9.0f, { 13.192974f, 13.597458f, 12.264488f } }, - { 10.0f, { 13.132943f, 13.535914f, 12.560032f } }, - { 11.0f, { 13.088722f, 13.489535f, 12.692996f } }, - { 12.0f, { 13.067827f, 13.467483f, 12.745179f } }, - { 13.0f, { 13.069653f, 13.469413f, 12.740822f } }, - { 14.0f, { 13.094319f, 13.495428f, 12.678066f } }, - { 15.0f, { 13.142133f, 13.545483f, 12.526785f } }, - { 16.0f, { 13.201734f, 13.606017f, 12.188001f } }, - { 17.0f, { 13.182774f, 13.572725f, 11.311157f } }, - { 18.0f, { 12.448635f, 12.672520f, 8.267771f } }, - { 20.0f, { 0.000000f, 0.000000f, 0.000000f } }, - }; +// Converts color representation from CIE XYZ to RGB color-space. +Color xyzToRgb(const Color& xyz) +{ + Color rgb(bx::init::None); + rgb.x = M_XYZ2RGB[0] * xyz.x + M_XYZ2RGB[3] * xyz.y + M_XYZ2RGB[6] * xyz.z; + rgb.y = M_XYZ2RGB[1] * xyz.x + M_XYZ2RGB[4] * xyz.y + M_XYZ2RGB[7] * xyz.z; + rgb.z = M_XYZ2RGB[2] * xyz.x + M_XYZ2RGB[5] * xyz.y + M_XYZ2RGB[8] * xyz.z; + return rgb; +}; + +// Precomputed luminance of sunlight in XYZ colorspace. +// Computed using code from Game Engine Gems, Volume One, chapter 15. Implementation based on Dr. Richard Bird model. +// This table is used for piecewise linear interpolation. Transitions from and to 0.0 at sunset and sunrise are highly inaccurate +static std::map<float, Color> sunLuminanceXYZTable = +{ + { 5.0f, { 0.000000f, 0.000000f, 0.000000f } }, + { 7.0f, { 12.703322f, 12.989393f, 9.100411f } }, + { 8.0f, { 13.202644f, 13.597814f, 11.524929f } }, + { 9.0f, { 13.192974f, 13.597458f, 12.264488f } }, + { 10.0f, { 13.132943f, 13.535914f, 12.560032f } }, + { 11.0f, { 13.088722f, 13.489535f, 12.692996f } }, + { 12.0f, { 13.067827f, 13.467483f, 12.745179f } }, + { 13.0f, { 13.069653f, 13.469413f, 12.740822f } }, + { 14.0f, { 13.094319f, 13.495428f, 12.678066f } }, + { 15.0f, { 13.142133f, 13.545483f, 12.526785f } }, + { 16.0f, { 13.201734f, 13.606017f, 12.188001f } }, + { 17.0f, { 13.182774f, 13.572725f, 11.311157f } }, + { 18.0f, { 12.448635f, 12.672520f, 8.267771f } }, + { 20.0f, { 0.000000f, 0.000000f, 0.000000f } }, +}; + + +// Precomputed luminance of sky in the zenith point in XYZ colorspace. +// Computed using code from Game Engine Gems, Volume One, chapter 15. Implementation based on Dr. Richard Bird model. +// This table is used for piecewise linear interpolation. Day/night transitions are highly inaccurate. +// The scale of luminance change in Day/night transitions is not preserved. +// Luminance at night was increased to eliminate need the of HDR render. +static std::map<float, Color> skyLuminanceXYZTable = +{ + { 0.0f, { 0.308f, 0.308f, 0.411f } }, + { 1.0f, { 0.308f, 0.308f, 0.410f } }, + { 2.0f, { 0.301f, 0.301f, 0.402f } }, + { 3.0f, { 0.287f, 0.287f, 0.382f } }, + { 4.0f, { 0.258f, 0.258f, 0.344f } }, + { 5.0f, { 0.258f, 0.258f, 0.344f } }, + { 7.0f, { 0.962851f, 1.000000f, 1.747835f } }, + { 8.0f, { 0.967787f, 1.000000f, 1.776762f } }, + { 9.0f, { 0.970173f, 1.000000f, 1.788413f } }, + { 10.0f, { 0.971431f, 1.000000f, 1.794102f } }, + { 11.0f, { 0.972099f, 1.000000f, 1.797096f } }, + { 12.0f, { 0.972385f, 1.000000f, 1.798389f } }, + { 13.0f, { 0.972361f, 1.000000f, 1.798278f } }, + { 14.0f, { 0.972020f, 1.000000f, 1.796740f } }, + { 15.0f, { 0.971275f, 1.000000f, 1.793407f } }, + { 16.0f, { 0.969885f, 1.000000f, 1.787078f } }, + { 17.0f, { 0.967216f, 1.000000f, 1.773758f } }, + { 18.0f, { 0.961668f, 1.000000f, 1.739891f } }, + { 20.0f, { 0.264f, 0.264f, 0.352f } }, + { 21.0f, { 0.264f, 0.264f, 0.352f } }, + { 22.0f, { 0.290f, 0.290f, 0.386f } }, + { 23.0f, { 0.303f, 0.303f, 0.404f } }, +}; + + +// Turbidity tables. Taken from: +// A. J. Preetham, P. Shirley, and B. Smits. A Practical Analytic Model for Daylight. SIGGRAPH '99 +// Coefficients correspond to xyY colorspace. +static constexpr Color ABCDE[] = +{ + { -0.2592f, -0.2608f, -1.4630f }, + { 0.0008f, 0.0092f, 0.4275f }, + { 0.2125f, 0.2102f, 5.3251f }, + { -0.8989f, -1.6537f, -2.5771f }, + { 0.0452f, 0.0529f, 0.3703f }, +}; + +static constexpr Color ABCDE_t[] = +{ + { -0.0193f, -0.0167f, 0.1787f }, + { -0.0665f, -0.0950f, -0.3554f }, + { -0.0004f, -0.0079f, -0.0227f }, + { -0.0641f, -0.0441f, 0.1206f }, + { -0.0033f, -0.0109f, -0.0670f }, +}; - // Precomputed luminance of sky in the zenith point in XYZ colorspace. - // Computed using code from Game Engine Gems, Volume One, chapter 15. Implementation based on Dr. Richard Bird model. - // This table is used for piecewise linear interpolation. Day/night transitions are highly inaccurate. - // The scale of luminance change in Day/night transitions is not preserved. - // Luminance at night was increased to eliminate need the of HDR render. - static std::map<float, Color> skyLuminanceXYZTable = { - { 0.0f, { 0.308f, 0.308f, 0.411f } }, - { 1.0f, { 0.308f, 0.308f, 0.410f } }, - { 2.0f, { 0.301f, 0.301f, 0.402f } }, - { 3.0f, { 0.287f, 0.287f, 0.382f } }, - { 4.0f, { 0.258f, 0.258f, 0.344f } }, - { 5.0f, { 0.258f, 0.258f, 0.344f } }, - { 7.0f, { 0.962851f, 1.000000f, 1.747835f } }, - { 8.0f, { 0.967787f, 1.000000f, 1.776762f } }, - { 9.0f, { 0.970173f, 1.000000f, 1.788413f } }, - { 10.0f, { 0.971431f, 1.000000f, 1.794102f } }, - { 11.0f, { 0.972099f, 1.000000f, 1.797096f } }, - { 12.0f, { 0.972385f, 1.000000f, 1.798389f } }, - { 13.0f, { 0.972361f, 1.000000f, 1.798278f } }, - { 14.0f, { 0.972020f, 1.000000f, 1.796740f } }, - { 15.0f, { 0.971275f, 1.000000f, 1.793407f } }, - { 16.0f, { 0.969885f, 1.000000f, 1.787078f } }, - { 17.0f, { 0.967216f, 1.000000f, 1.773758f } }, - { 18.0f, { 0.961668f, 1.000000f, 1.739891f } }, - { 20.0f, { 0.264f, 0.264f, 0.352f } }, - { 21.0f, { 0.264f, 0.264f, 0.352f } }, - { 22.0f, { 0.290f, 0.290f, 0.386f } }, - { 23.0f, { 0.303f, 0.303f, 0.404f } }, - }; - +// Performs piecewise linear interpolation of a Color parameter. +class DynamicValueController +{ + typedef Color ValueType; + typedef std::map<float, ValueType> KeyMap; - // Turbidity tables. Taken from: - // A. J. Preetham, P. Shirley, and B. Smits. A Practical Analytic Model for Daylight. SIGGRAPH ’99 - // Coefficients correspond to xyY colorspace. - static Color ABCDE[] = +public: + DynamicValueController() { - { -0.2592f, -0.2608f, -1.4630f }, - { 0.0008f, 0.0092f, 0.4275f }, - { 0.2125f, 0.2102f, 5.3251f }, - { -0.8989f, -1.6537f, -2.5771f }, - { 0.0452f, 0.0529f, 0.3703f }, - }; - static Color ABCDE_t[] = + } + + ~DynamicValueController() { - { -0.0193f, -0.0167f, 0.1787f }, - { -0.0665f, -0.0950f, -0.3554f }, - { -0.0004f, -0.0079f, -0.0227f }, - { -0.0641f, -0.0441f, 0.1206f }, - { -0.0033f, -0.0109f, -0.0670f }, - }; + } + void SetMap(const KeyMap& keymap) + { + m_keyMap = keymap; + } - // Performs piecewise linear interpolation of a Color parameter. - class DynamicValueController + ValueType GetValue(float time) const { - typedef Color ValueType; - typedef std::map<float, ValueType> KeyMap; + typename KeyMap::const_iterator itUpper = m_keyMap.upper_bound(time + 1e-6f); + typename KeyMap::const_iterator itLower = itUpper; + --itLower; - public: - DynamicValueController() + if (itLower == m_keyMap.end()) { + return itUpper->second; } - ~DynamicValueController() + if (itUpper == m_keyMap.end()) { + return itLower->second; } - void SetMap(const KeyMap& keymap) - { - m_keyMap = keymap; - } + float lowerTime = itLower->first; + const ValueType& lowerVal = itLower->second; + float upperTime = itUpper->first; + const ValueType& upperVal = itUpper->second; - ValueType GetValue(float time) const + if (lowerTime == upperTime) { - typename KeyMap::const_iterator itUpper = m_keyMap.upper_bound(time + 1e-6f); - typename KeyMap::const_iterator itLower = itUpper; - --itLower; - - if (itLower == m_keyMap.end()) - { - return itUpper->second; - } - - if (itUpper == m_keyMap.end()) - { - return itLower->second; - } - - float lowerTime = itLower->first; - const ValueType& lowerVal = itLower->second; - float upperTime = itUpper->first; - const ValueType& upperVal = itUpper->second; - - if (lowerTime == upperTime) - { - return lowerVal; - } - - return interpolate(lowerTime, lowerVal, upperTime, upperVal, time); - }; - - void Clear() - { - m_keyMap.clear(); - }; + return lowerVal; + } - private: - ValueType interpolate(float lowerTime, const ValueType& lowerVal, float upperTime, const ValueType& upperVal, float time) const - { - const float tt = (time - lowerTime) / (upperTime - lowerTime); - const ValueType result = bx::lerp(lowerVal, upperVal, tt); - return result; - }; + return interpolate(lowerTime, lowerVal, upperTime, upperVal, time); + }; - KeyMap m_keyMap; + void Clear() + { + m_keyMap.clear(); }; - // Controls sun position according to time, month, and observer's latitude. - // Sun position computation based on Earth's orbital elements: https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html - class SunController +private: + ValueType interpolate(float lowerTime, const ValueType& lowerVal, float upperTime, const ValueType& upperVal, float time) const { - public: - enum Month : int - { - January = 0, - February, - March, - April, - May, - June, - July, - August, - September, - October, - November, - December - }; + const float tt = (time - lowerTime) / (upperTime - lowerTime); + const ValueType result = bx::lerp(lowerVal, upperVal, tt); + return result; + }; - SunController() - : m_latitude(50.0f) - , m_month(June) - , m_eclipticObliquity(bx::toRad(23.4f) ) - , m_delta(0.0f) - { - m_northDirection[0] = 1.0; - m_northDirection[1] = 0.0; - m_northDirection[2] = 0.0; - m_upvector[0] = 0.0f; - m_upvector[1] = 1.0f; - m_upvector[2] = 0.0f; - } + KeyMap m_keyMap; +}; - void Update(float _time) - { - CalculateSunOrbit(); - UpdateSunPosition(_time - 12.0f); - } +// Controls sun position according to time, month, and observer's latitude. +// Sun position computation based on Earth's orbital elements: https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html +class SunController +{ +public: + enum Month : int + { + January = 0, + February, + March, + April, + May, + June, + July, + August, + September, + October, + November, + December + }; - float m_northDirection[3]; - float m_sunDirection[4]; - float m_upvector[3]; - float m_latitude; - Month m_month; + SunController() + : m_northDir(1.0f, 0.0f, 0.0f) + , m_sunDir(0.0f, -1.0f, 0.0f) + , m_upDir(0.0f, 1.0f, 0.0f) + , m_latitude(50.0f) + , m_month(June) + , m_eclipticObliquity(bx::toRad(23.4f) ) + , m_delta(0.0f) + { + } - private: - void CalculateSunOrbit() - { - float day = 30.0f * m_month + 15.0f; - float lambda = 280.46f + 0.9856474f * day; - lambda = bx::toRad(lambda); - m_delta = bx::asin(bx::sin(m_eclipticObliquity) * bx::sin(lambda) ); - } + void Update(float _time) + { + CalculateSunOrbit(); + UpdateSunPosition(_time - 12.0f); + } + + bx::Vec3 m_northDir; + bx::Vec3 m_sunDir; + bx::Vec3 m_upDir; + float m_latitude; + Month m_month; + +private: + void CalculateSunOrbit() + { + const float day = 30.0f * float(m_month) + 15.0f; + float lambda = 280.46f + 0.9856474f * day; + lambda = bx::toRad(lambda); + m_delta = bx::asin(bx::sin(m_eclipticObliquity) * bx::sin(lambda) ); + } - void UpdateSunPosition(float _hour) - { - float latitude = bx::toRad(m_latitude); - float hh = _hour * bx::kPi / 12.0f; - float azimuth = bx::atan2( - bx::sin(hh) - , bx::cos(hh) * bx::sin(latitude) - bx::tan(m_delta) * bx::cos(latitude) - ); + void UpdateSunPosition(float _hour) + { + const float latitude = bx::toRad(m_latitude); + const float hh = _hour * bx::kPi / 12.0f; + const float azimuth = bx::atan2( + bx::sin(hh) + , bx::cos(hh) * bx::sin(latitude) - bx::tan(m_delta) * bx::cos(latitude) + ); - float altitude = bx::asin( - bx::sin(latitude) * bx::sin(m_delta) + bx::cos(latitude) * bx::cos(m_delta) * bx::cos(hh) - ); + const float altitude = bx::asin( + bx::sin(latitude) * bx::sin(m_delta) + bx::cos(latitude) * bx::cos(m_delta) * bx::cos(hh) + ); - float rotation[4]; - bx::quatRotateAxis(rotation, m_upvector, -azimuth); + const bx::Quaternion rot0 = bx::fromAxisAngle(m_upDir, -azimuth); + const bx::Vec3 dir = bx::mul(m_northDir, rot0); + const bx::Vec3 uxd = bx::cross(m_upDir, dir); - float direction[3]; - bx::vec3MulQuat(direction, m_northDirection, rotation); + const bx::Quaternion rot1 = bx::fromAxisAngle(uxd, altitude); + m_sunDir = bx::mul(dir, rot1); + } - float v[3]; - bx::vec3Cross(v, m_upvector, direction); - bx::quatRotateAxis(rotation, v, altitude); - bx::vec3MulQuat(m_sunDirection, direction, rotation); - } + float m_eclipticObliquity; + float m_delta; +}; - float m_eclipticObliquity; - float m_delta; - }; +struct ScreenPosVertex +{ + float m_x; + float m_y; - struct ScreenPosVertex + static void init() { - float m_x; - float m_y; + ms_layout + .begin() + .add(bgfx::Attrib::Position, 2, bgfx::AttribType::Float) + .end(); + } - static void init() - { - ms_decl - .begin() - .add(bgfx::Attrib::Position, 2, bgfx::AttribType::Float) - .end(); - } + static bgfx::VertexLayout ms_layout; +}; - static bgfx::VertexDecl ms_decl; - }; - - bgfx::VertexDecl ScreenPosVertex::ms_decl; +bgfx::VertexLayout ScreenPosVertex::ms_layout; - // Renders a screen-space grid of triangles. - // Because of performance reasons, and because sky color is smooth, sky color is computed in vertex shader. - // 32x32 is a reasonable size for the grid to have smooth enough colors. - struct ProceduralSky +// Renders a screen-space grid of triangles. +// Because of performance reasons, and because sky color is smooth, sky color is computed in vertex shader. +// 32x32 is a reasonable size for the grid to have smooth enough colors. +struct ProceduralSky +{ + void init(int verticalCount, int horizontalCount) { - void init(int verticalCount, int horizontalCount) - { - // Create vertex stream declaration. - ScreenPosVertex::init(); + // Create vertex stream declaration. + ScreenPosVertex::init(); - m_skyProgram = loadProgram("vs_sky", "fs_sky"); - m_skyProgram_colorBandingFix = loadProgram("vs_sky", "fs_sky_color_banding_fix"); + m_skyProgram = loadProgram("vs_sky", "fs_sky"); + m_skyProgram_colorBandingFix = loadProgram("vs_sky", "fs_sky_color_banding_fix"); - m_preventBanding = true; + m_preventBanding = true; - bx::AllocatorI* allocator = entry::getAllocator(); + bx::AllocatorI* allocator = entry::getAllocator(); - ScreenPosVertex* vertices = (ScreenPosVertex*)BX_ALLOC(allocator - , verticalCount * horizontalCount * sizeof(ScreenPosVertex) - ); + ScreenPosVertex* vertices = (ScreenPosVertex*)BX_ALLOC(allocator + , verticalCount * horizontalCount * sizeof(ScreenPosVertex) + ); - for (int i = 0; i < verticalCount; i++) + for (int i = 0; i < verticalCount; i++) + { + for (int j = 0; j < horizontalCount; j++) { - for (int j = 0; j < horizontalCount; j++) - { - ScreenPosVertex& v = vertices[i * verticalCount + j]; - v.m_x = float(j) / (horizontalCount - 1) * 2.0f - 1.0f; - v.m_y = float(i) / (verticalCount - 1) * 2.0f - 1.0f; - } + ScreenPosVertex& v = vertices[i * verticalCount + j]; + v.m_x = float(j) / (horizontalCount - 1) * 2.0f - 1.0f; + v.m_y = float(i) / (verticalCount - 1) * 2.0f - 1.0f; } + } - uint16_t* indices = (uint16_t*)BX_ALLOC(allocator - , (verticalCount - 1) * (horizontalCount - 1) * 6 * sizeof(uint16_t) - ); + uint16_t* indices = (uint16_t*)BX_ALLOC(allocator + , (verticalCount - 1) * (horizontalCount - 1) * 6 * sizeof(uint16_t) + ); - int k = 0; - for (int i = 0; i < verticalCount - 1; i++) + int k = 0; + for (int i = 0; i < verticalCount - 1; i++) + { + for (int j = 0; j < horizontalCount - 1; j++) { - for (int j = 0; j < horizontalCount - 1; j++) - { - indices[k++] = (uint16_t)(j + 0 + horizontalCount * (i + 0)); - indices[k++] = (uint16_t)(j + 1 + horizontalCount * (i + 0)); - indices[k++] = (uint16_t)(j + 0 + horizontalCount * (i + 1)); - - indices[k++] = (uint16_t)(j + 1 + horizontalCount * (i + 0)); - indices[k++] = (uint16_t)(j + 1 + horizontalCount * (i + 1)); - indices[k++] = (uint16_t)(j + 0 + horizontalCount * (i + 1)); - } + indices[k++] = (uint16_t)(j + 0 + horizontalCount * (i + 0)); + indices[k++] = (uint16_t)(j + 1 + horizontalCount * (i + 0)); + indices[k++] = (uint16_t)(j + 0 + horizontalCount * (i + 1)); + + indices[k++] = (uint16_t)(j + 1 + horizontalCount * (i + 0)); + indices[k++] = (uint16_t)(j + 1 + horizontalCount * (i + 1)); + indices[k++] = (uint16_t)(j + 0 + horizontalCount * (i + 1)); } + } - m_vbh = bgfx::createVertexBuffer(bgfx::copy(vertices, sizeof(ScreenPosVertex) * verticalCount * horizontalCount), ScreenPosVertex::ms_decl); - m_ibh = bgfx::createIndexBuffer(bgfx::copy(indices, sizeof(uint16_t) * k)); + m_vbh = bgfx::createVertexBuffer(bgfx::copy(vertices, sizeof(ScreenPosVertex) * verticalCount * horizontalCount), ScreenPosVertex::ms_layout); + m_ibh = bgfx::createIndexBuffer(bgfx::copy(indices, sizeof(uint16_t) * k)); - BX_FREE(allocator, indices); - BX_FREE(allocator, vertices); - } + BX_FREE(allocator, indices); + BX_FREE(allocator, vertices); + } - void shutdown() - { - bgfx::destroy(m_ibh); - bgfx::destroy(m_vbh); - bgfx::destroy(m_skyProgram); - bgfx::destroy(m_skyProgram_colorBandingFix); - } + void shutdown() + { + bgfx::destroy(m_ibh); + bgfx::destroy(m_vbh); + bgfx::destroy(m_skyProgram); + bgfx::destroy(m_skyProgram_colorBandingFix); + } - void draw() - { - bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_DEPTH_TEST_EQUAL); - bgfx::setIndexBuffer(m_ibh); - bgfx::setVertexBuffer(0, m_vbh); - bgfx::submit(0, m_preventBanding ? m_skyProgram_colorBandingFix : m_skyProgram); - } + void draw() + { + bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_DEPTH_TEST_EQUAL); + bgfx::setIndexBuffer(m_ibh); + bgfx::setVertexBuffer(0, m_vbh); + bgfx::submit(0, m_preventBanding ? m_skyProgram_colorBandingFix : m_skyProgram); + } - bgfx::VertexBufferHandle m_vbh; - bgfx::IndexBufferHandle m_ibh; + bgfx::VertexBufferHandle m_vbh; + bgfx::IndexBufferHandle m_ibh; - bgfx::ProgramHandle m_skyProgram; - bgfx::ProgramHandle m_skyProgram_colorBandingFix; + bgfx::ProgramHandle m_skyProgram; + bgfx::ProgramHandle m_skyProgram_colorBandingFix; - bool m_preventBanding; - }; + bool m_preventBanding; +}; - class ExampleProceduralSky : public entry::AppI +class ExampleProceduralSky : public entry::AppI +{ +public: + ExampleProceduralSky(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { - public: - ExampleProceduralSky(const char* _name, const char* _description): entry::AppI(_name, _description) - {} + } - void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override - { - Args args(_argc, _argv); - - m_width = _width; - m_height = _height; - m_debug = BGFX_DEBUG_NONE; - m_reset = BGFX_RESET_VSYNC; - - bgfx::Init init; - init.type = args.m_type; - init.vendorId = args.m_pciId; - init.resolution.width = m_width; - init.resolution.height = m_height; - init.resolution.reset = m_reset; - bgfx::init(init); - - // Enable m_debug text. - bgfx::setDebug(m_debug); - - // Set view 0 clear state. - bgfx::setViewClear(0 - , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH - , 0x000000ff - , 1.0f - , 0 + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable m_debug text. + bgfx::setDebug(m_debug); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x000000ff + , 1.0f + , 0 ); - m_sunLuminanceXYZ.SetMap(sunLuminanceXYZTable); - m_skyLuminanceXYZ.SetMap(skyLuminanceXYZTable); + m_sunLuminanceXYZ.SetMap(sunLuminanceXYZTable); + m_skyLuminanceXYZ.SetMap(skyLuminanceXYZTable); - m_mesh = meshLoad("meshes/test_scene.bin"); + m_mesh = meshLoad("meshes/test_scene.bin"); - m_lightmapTexture = loadTexture("textures/lightmap.ktx"); + m_lightmapTexture = loadTexture("textures/lightmap.ktx"); - // Imgui. - imguiCreate(); + // Imgui. + imguiCreate(); - m_timeOffset = bx::getHPCounter(); - m_time = 0.0f; - m_timeScale = 1.0f; + m_timeOffset = bx::getHPCounter(); + m_time = 0.0f; + m_timeScale = 1.0f; - s_texLightmap = bgfx::createUniform("s_texLightmap", bgfx::UniformType::Int1); - u_sunLuminance = bgfx::createUniform("u_sunLuminance", bgfx::UniformType::Vec4); - u_skyLuminanceXYZ = bgfx::createUniform("u_skyLuminanceXYZ", bgfx::UniformType::Vec4); - u_skyLuminance = bgfx::createUniform("u_skyLuminance", bgfx::UniformType::Vec4); - u_sunDirection = bgfx::createUniform("u_sunDirection", bgfx::UniformType::Vec4); - u_parameters = bgfx::createUniform("u_parameters", bgfx::UniformType::Vec4); - u_perezCoeff = bgfx::createUniform("u_perezCoeff", bgfx::UniformType::Vec4, 5); + s_texLightmap = bgfx::createUniform("s_texLightmap", bgfx::UniformType::Sampler); + u_sunLuminance = bgfx::createUniform("u_sunLuminance", bgfx::UniformType::Vec4); + u_skyLuminanceXYZ = bgfx::createUniform("u_skyLuminanceXYZ", bgfx::UniformType::Vec4); + u_skyLuminance = bgfx::createUniform("u_skyLuminance", bgfx::UniformType::Vec4); + u_sunDirection = bgfx::createUniform("u_sunDirection", bgfx::UniformType::Vec4); + u_parameters = bgfx::createUniform("u_parameters", bgfx::UniformType::Vec4); + u_perezCoeff = bgfx::createUniform("u_perezCoeff", bgfx::UniformType::Vec4, 5); - m_landscapeProgram = loadProgram("vs_sky_landscape", "fs_sky_landscape"); + m_landscapeProgram = loadProgram("vs_sky_landscape", "fs_sky_landscape"); - m_sky.init(32, 32); + m_sky.init(32, 32); - m_sun.Update(0); + m_sun.Update(0); - cameraCreate(); + cameraCreate(); - const float initialPos[3] = { 5.0f, 3.0, 0.0f }; - cameraSetPosition(initialPos); - cameraSetVerticalAngle(bx::kPi / 8.0f); - cameraSetHorizontalAngle(-bx::kPi / 3.0f); + cameraSetPosition({ 5.0f, 3.0, 0.0f }); + cameraSetVerticalAngle(bx::kPi / 8.0f); + cameraSetHorizontalAngle(-bx::kPi / 3.0f); - m_turbidity = 2.15f; - } + m_turbidity = 2.15f; + } - virtual int shutdown() override - { - // Cleanup. - cameraDestroy(); - imguiDestroy(); + virtual int shutdown() override + { + // Cleanup. + cameraDestroy(); + imguiDestroy(); - meshUnload(m_mesh); + meshUnload(m_mesh); - m_sky.shutdown(); + m_sky.shutdown(); - bgfx::destroy(s_texLightmap); - bgfx::destroy(u_sunLuminance); - bgfx::destroy(u_skyLuminanceXYZ); - bgfx::destroy(u_skyLuminance); - bgfx::destroy(u_sunDirection); - bgfx::destroy(u_parameters); - bgfx::destroy(u_perezCoeff); + bgfx::destroy(s_texLightmap); + bgfx::destroy(u_sunLuminance); + bgfx::destroy(u_skyLuminanceXYZ); + bgfx::destroy(u_skyLuminance); + bgfx::destroy(u_sunDirection); + bgfx::destroy(u_parameters); + bgfx::destroy(u_perezCoeff); - bgfx::destroy(m_lightmapTexture); - bgfx::destroy(m_landscapeProgram); + bgfx::destroy(m_lightmapTexture); + bgfx::destroy(m_landscapeProgram); - bgfx::frame(); + bgfx::frame(); - // Shutdown bgfx. - bgfx::shutdown(); + // Shutdown bgfx. + bgfx::shutdown(); - return 0; - } + return 0; + } - void imgui(float _width) + void imgui(float _width) + { + ImGui::Begin("ProceduralSky"); + ImGui::SetWindowSize(ImVec2(_width, 200.0f) ); + ImGui::SliderFloat("Time scale", &m_timeScale, 0.0f, 1.0f); + ImGui::SliderFloat("Time", &m_time, 0.0f, 24.0f); + ImGui::SliderFloat("Latitude", &m_sun.m_latitude, -90.0f, 90.0f); + ImGui::SliderFloat("Turbidity", &m_turbidity, 1.9f, 10.0f); + ImGui::Checkbox("Prevent color banding", &m_sky.m_preventBanding); + + const char* items[] = { - ImGui::Begin("ProceduralSky"); - ImGui::SetWindowSize(ImVec2(_width, 200.0f) ); - ImGui::SliderFloat("Time scale", &m_timeScale, 0.0f, 1.0f); - ImGui::SliderFloat("Time", &m_time, 0.0f, 24.0f); - ImGui::SliderFloat("Latitude", &m_sun.m_latitude, -90.0f, 90.0f); - ImGui::SliderFloat("Turbidity", &m_turbidity, 1.9f, 10.0f); - ImGui::Checkbox("Prevent color banding", &m_sky.m_preventBanding); - - const char* items[] = { - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - }; - ImGui::Combo("Month", (int*)&m_sun.m_month, items, 12); - - ImGui::End(); - } + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + }; - bool update() override - { - if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState)) - { - int64_t now = bx::getHPCounter(); - static int64_t last = now; - const int64_t frameTime = now - last; - last = now; - const double freq = double(bx::getHPFrequency()); - const float deltaTime = float(frameTime / freq); - m_time += m_timeScale * deltaTime; - m_time = bx::mod(m_time, 24.0f); - m_sun.Update(m_time); + ImGui::Combo("Month", (int*)&m_sun.m_month, items, 12); - imguiBeginFrame(m_mouseState.m_mx - , m_mouseState.m_my - , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) - | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) - | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) - , m_mouseState.m_mz - , uint16_t(m_width) - , uint16_t(m_height) - ); + ImGui::End(); + } - showExampleDialog(this); + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState)) + { + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const float deltaTime = float(frameTime / freq); + m_time += m_timeScale * deltaTime; + m_time = bx::mod(m_time, 24.0f); + m_sun.Update(m_time); + + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); - ImGui::SetNextWindowPos( - ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) - , ImGuiCond_FirstUseEver - ); + showExampleDialog(this); - imgui(m_width / 5.0f - 10.0f); + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); - imguiEndFrame(); + imgui(m_width / 5.0f - 10.0f); - if (!ImGui::MouseOverArea()) - { - // Update camera. - cameraUpdate(deltaTime, m_mouseState); - } + imguiEndFrame(); - // Set view 0 default viewport. - bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height)); + // Update camera. + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); - float view[16]; - cameraGetViewMtx(view); + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height)); - float proj[16]; - bx::mtxProj(proj, 60.0f, float(m_width) / float(m_height), 0.1f, 2000.0f, bgfx::getCaps()->homogeneousDepth); + float view[16]; + cameraGetViewMtx(view); - bgfx::setViewTransform(0, view, proj); + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width) / float(m_height), 0.1f, 2000.0f, bgfx::getCaps()->homogeneousDepth); - Color sunLuminanceXYZ = m_sunLuminanceXYZ.GetValue(m_time); - Color sunLuminanceRGB = xyzToRgb(sunLuminanceXYZ); + bgfx::setViewTransform(0, view, proj); - Color skyLuminanceXYZ = m_skyLuminanceXYZ.GetValue(m_time); - Color skyLuminanceRGB = xyzToRgb(skyLuminanceXYZ); + Color sunLuminanceXYZ = m_sunLuminanceXYZ.GetValue(m_time); + Color sunLuminanceRGB = xyzToRgb(sunLuminanceXYZ); - bgfx::setUniform(u_sunLuminance, &sunLuminanceRGB.x); - bgfx::setUniform(u_skyLuminanceXYZ, &skyLuminanceXYZ.x); - bgfx::setUniform(u_skyLuminance, &skyLuminanceRGB.x); + Color skyLuminanceXYZ = m_skyLuminanceXYZ.GetValue(m_time); + Color skyLuminanceRGB = xyzToRgb(skyLuminanceXYZ); - bgfx::setUniform(u_sunDirection, m_sun.m_sunDirection); + bgfx::setUniform(u_sunLuminance, &sunLuminanceRGB.x); + bgfx::setUniform(u_skyLuminanceXYZ, &skyLuminanceXYZ.x); + bgfx::setUniform(u_skyLuminance, &skyLuminanceRGB.x); - float exposition[4] = { 0.02f, 3.0f, 0.1f, m_time }; - bgfx::setUniform(u_parameters, exposition); + bgfx::setUniform(u_sunDirection, &m_sun.m_sunDir.x); - float perezCoeff[4 * 5]; - computePerezCoeff(m_turbidity, perezCoeff); - bgfx::setUniform(u_perezCoeff, perezCoeff, 5); + float exposition[4] = { 0.02f, 3.0f, 0.1f, m_time }; + bgfx::setUniform(u_parameters, exposition); - bgfx::setTexture(0, s_texLightmap, m_lightmapTexture); - meshSubmit(m_mesh, 0, m_landscapeProgram, NULL); + float perezCoeff[4 * 5]; + computePerezCoeff(m_turbidity, perezCoeff); + bgfx::setUniform(u_perezCoeff, perezCoeff, 5); - m_sky.draw(); + bgfx::setTexture(0, s_texLightmap, m_lightmapTexture); + meshSubmit(m_mesh, 0, m_landscapeProgram, NULL); - bgfx::frame(); + m_sky.draw(); - return true; - } + bgfx::frame(); - return false; + return true; } - void computePerezCoeff(float _turbidity, float* _outPerezCoeff) + return false; + } + + void computePerezCoeff(float _turbidity, float* _outPerezCoeff) + { + const bx::Vec3 turbidity = { _turbidity, _turbidity, _turbidity }; + for (uint32_t ii = 0; ii < 5; ++ii) { - const bx::Vec3 turbidity = { _turbidity, _turbidity, _turbidity }; - for (uint32_t ii = 0; ii < 5; ++ii) - { - const bx::Vec3 tmp = bx::mad(ABCDE_t[ii], turbidity, ABCDE[ii]); - float* out = _outPerezCoeff + 4 * ii; - bx::store(out, tmp); - out[3] = 0.0f; - } + const bx::Vec3 tmp = bx::mad(ABCDE_t[ii], turbidity, ABCDE[ii]); + float* out = _outPerezCoeff + 4 * ii; + bx::store(out, tmp); + out[3] = 0.0f; } + } - bgfx::ProgramHandle m_landscapeProgram; - bgfx::UniformHandle s_texLightmap; - bgfx::TextureHandle m_lightmapTexture; + bgfx::ProgramHandle m_landscapeProgram; + bgfx::UniformHandle s_texLightmap; + bgfx::TextureHandle m_lightmapTexture; - bgfx::UniformHandle u_sunLuminance; - bgfx::UniformHandle u_skyLuminanceXYZ; - bgfx::UniformHandle u_skyLuminance; - bgfx::UniformHandle u_sunDirection; - bgfx::UniformHandle u_parameters; - bgfx::UniformHandle u_perezCoeff; + bgfx::UniformHandle u_sunLuminance; + bgfx::UniformHandle u_skyLuminanceXYZ; + bgfx::UniformHandle u_skyLuminance; + bgfx::UniformHandle u_sunDirection; + bgfx::UniformHandle u_parameters; + bgfx::UniformHandle u_perezCoeff; - ProceduralSky m_sky; - SunController m_sun; + ProceduralSky m_sky; + SunController m_sun; - DynamicValueController m_sunLuminanceXYZ; - DynamicValueController m_skyLuminanceXYZ; + DynamicValueController m_sunLuminanceXYZ; + DynamicValueController m_skyLuminanceXYZ; - uint32_t m_width; - uint32_t m_height; - uint32_t m_debug; - uint32_t m_reset; + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; - Mesh* m_mesh; + Mesh* m_mesh; - entry::MouseState m_mouseState; + entry::MouseState m_mouseState; - float m_time; - float m_timeScale; - int64_t m_timeOffset; + float m_time; + float m_timeScale; + int64_t m_timeOffset; - float m_turbidity; - }; + float m_turbidity; +}; } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleProceduralSky, "36-sky", "Perez dynamic sky model."); +ENTRY_IMPLEMENT_MAIN( + ExampleProceduralSky + , "36-sky" + , "Perez dynamic sky model." + , "https://bkaradzic.github.io/bgfx/examples.html#sky" + ); diff --git a/3rdparty/bgfx/examples/36-sky/vs_sky.sc b/3rdparty/bgfx/examples/36-sky/vs_sky.sc index 10751bd1f5e..919b92dbfbb 100644 --- a/3rdparty/bgfx/examples/36-sky/vs_sky.sc +++ b/3rdparty/bgfx/examples/36-sky/vs_sky.sc @@ -3,7 +3,7 @@ $output v_skyColor, v_screenPos, v_viewDir /* * Copyright 2017 Stanislav Pidhorskyi. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ diff --git a/3rdparty/bgfx/examples/36-sky/vs_sky_landscape.sc b/3rdparty/bgfx/examples/36-sky/vs_sky_landscape.sc index 8fe13cc33bb..8a22e90e060 100644 --- a/3rdparty/bgfx/examples/36-sky/vs_sky_landscape.sc +++ b/3rdparty/bgfx/examples/36-sky/vs_sky_landscape.sc @@ -2,8 +2,8 @@ $input a_position, a_normal, a_texcoord0 $output v_normal, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_copy_z.sc b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_copy_z.sc new file mode 100644 index 00000000000..c5732156b49 --- /dev/null +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_copy_z.sc @@ -0,0 +1,26 @@ +/* + * Copyright 2018 Kostas Anagnostou. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" + +SAMPLER2D(s_texOcclusionDepth, 0); +IMAGE2D_WR(s_texOcclusionDepthOut, r32f, 1); + +uniform vec4 u_inputRTSize; + +NUM_THREADS(16, 16, 1) +void main() +{ + // this shader can be used to both copy a mip over to the output and downscale it. + + ivec2 coord = ivec2(gl_GlobalInvocationID.xy); + + if (all(lessThan(coord.xy, u_inputRTSize.xy) ) ) + { + float maxDepth = texelFetch(s_texOcclusionDepth, coord.xy, 0).x; + + imageStore(s_texOcclusionDepthOut, coord, vec4(maxDepth,0,0,1) ); + } +} diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_downscale_hi_z.sc b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_downscale_hi_z.sc index aecd7e416ee..cb3941638d5 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_downscale_hi_z.sc +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_downscale_hi_z.sc @@ -1,6 +1,6 @@ /* * Copyright 2018 Kostas Anagnostou. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "bgfx_compute.sh" @@ -21,26 +21,18 @@ void main() { float maxDepth = 1.0; - if (u_inputRTSize.z > 1) - { - vec4 depths = vec4( - imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy ) ).x - , imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy + ivec2(1.0, 0.0) ) ).x - , imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy + ivec2(0.0, 1.0) ) ).x - , imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy + ivec2(1.0, 1.0) ) ).x - ); - - // find and return max depth - maxDepth = max( - max(depths.x, depths.y) - , max(depths.z, depths.w) - ); - } - else - { - // do not downscale, just copy the value over to the output rendertarget - maxDepth = imageLoad(s_texOcclusionDepthIn, coord.xy).x; - } + vec4 depths = vec4( + imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy ) ).x + , imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy + ivec2(1.0, 0.0) ) ).x + , imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy + ivec2(0.0, 1.0) ) ).x + , imageLoad(s_texOcclusionDepthIn, ivec2(u_inputRTSize.zw * coord.xy + ivec2(1.0, 1.0) ) ).x + ); + + // find and return max depth + maxDepth = max( + max(depths.x, depths.y) + , max(depths.z, depths.w) + ); imageStore(s_texOcclusionDepthOut, coord, vec4(maxDepth,0,0,1) ); } diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_occlude_props.sc b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_occlude_props.sc index aced7da3c44..fd4ae946ffd 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_occlude_props.sc +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_occlude_props.sc @@ -1,6 +1,6 @@ /* * Copyright 2018 Kostas Anagnostou. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "bgfx_compute.sh" @@ -51,6 +51,9 @@ void main() //transform World space aaBox to NDC vec4 clipPos = mul( u_viewProj, vec4(boxCorners[i], 1) ); +#if BGFX_SHADER_LANGUAGE_GLSL + clipPos.z = 0.5 * ( clipPos.z + clipPos.w ); +#endif clipPos.z = max(clipPos.z, 0); clipPos.xyz = clipPos.xyz / clipPos.w; @@ -83,6 +86,10 @@ void main() if (dims.x <= 2 && dims.y <= 2) mip = level_lower; +#if BGFX_SHADER_LANGUAGE_GLSL + boxUVs.y = 1.0 - boxUVs.y; + boxUVs.w = 1.0 - boxUVs.w; +#endif //load depths from high z buffer vec4 depth = { diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_stream_compaction.sc b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_stream_compaction.sc index 3c35acdc7e8..058d1eafb92 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_stream_compaction.sc +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/cs_gdr_stream_compaction.sc @@ -1,6 +1,6 @@ /* * Copyright 2018 Kostas Anagnostou. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "bgfx_compute.sh" @@ -32,8 +32,11 @@ void main() int NoofDrawcalls = int(u_cullingConfig.w); int offset = 1; - temp[2 * tID ] = uint(instancePredicates[2 * tID ]); // load input into shared memory - temp[2 * tID + 1] = uint(instancePredicates[2 * tID + 1]); + bool predicate = instancePredicates[2 * tID]; + temp[2 * tID] = uint(predicate ? 1 : 0); + + predicate = instancePredicates[2 * tID + 1]; + temp[2 * tID + 1] = uint(predicate ? 1 : 0); int d; @@ -80,7 +83,8 @@ void main() int index = int(2 * tID); // scatter results - if (instancePredicates[index]) + predicate = instancePredicates[index]; + if (predicate) { instanceDataOut[4 * temp[index] ] = instanceDataIn[4 * index ]; instanceDataOut[4 * temp[index] + 1] = instanceDataIn[4 * index + 1]; @@ -90,7 +94,8 @@ void main() index = int(2 * tID + 1); - if (instancePredicates[index]) + predicate = instancePredicates[index]; + if (predicate) { instanceDataOut[4 * temp[index] ] = instanceDataIn[4 * index ]; instanceDataOut[4 * temp[index] + 1] = instanceDataIn[4 * index + 1]; diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/fs_gdr_instanced_indirect_rendering.sc b/3rdparty/bgfx/examples/37-gpudrivenrendering/fs_gdr_instanced_indirect_rendering.sc index 14f48499180..a6e410406dc 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/fs_gdr_instanced_indirect_rendering.sc +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/fs_gdr_instanced_indirect_rendering.sc @@ -2,7 +2,7 @@ $input v_materialID /* * Copyright 2018 Kostas Anagnostou. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/gpudrivenrendering.cpp b/3rdparty/bgfx/examples/37-gpudrivenrendering/gpudrivenrendering.cpp index 9a3bb3a6b6a..56f0141887a 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/gpudrivenrendering.cpp +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/gpudrivenrendering.cpp @@ -1,6 +1,6 @@ /* * Copyright 2018 Kostas Anagnostou. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ /* @@ -33,19 +33,11 @@ struct Camera void reset() { - m_target.curr[0] = 0.0f; - m_target.curr[1] = 0.0f; - m_target.curr[2] = 0.0f; - m_target.dest[0] = 0.0f; - m_target.dest[1] = 0.0f; - m_target.dest[2] = 0.0f; - - m_pos.curr[0] = 55.0f; - m_pos.curr[1] = 20.0f; - m_pos.curr[2] = 65.0f; - m_pos.dest[0] = 55.0f; - m_pos.dest[1] = 20.0f; - m_pos.dest[2] = 65.0f; + m_target.curr = { 0.0f, 0.0f, 0.0f }; + m_target.dest = { 0.0f, 0.0f, 0.0f }; + + m_pos.curr = { 55.0f, 20.0f, 65.0f }; + m_pos.dest = { 55.0f, 20.0f, 65.0f }; m_orbit[0] = 0.0f; m_orbit[1] = 0.0f; @@ -53,7 +45,7 @@ struct Camera void mtxLookAt(float* _outViewMtx) { - bx::mtxLookAt(_outViewMtx, bx::load(m_pos.curr), bx::load(m_target.curr) ); + bx::mtxLookAt(_outViewMtx, m_pos.curr, m_target.curr); } void orbit(float _dx, float _dy) @@ -65,31 +57,19 @@ struct Camera void dolly(float _dz) { const float cnear = 1.0f; - const float cfar = 100.0f; + const float cfar = 100.0f; - const float toTarget[3] = - { - m_target.dest[0] - m_pos.dest[0], - m_target.dest[1] - m_pos.dest[1], - m_target.dest[2] - m_pos.dest[2], - }; - const float toTargetLen = bx::vec3Length(toTarget); - const float invToTargetLen = 1.0f / (toTargetLen + FLT_MIN); - const float toTargetNorm[3] = - { - toTarget[0] * invToTargetLen, - toTarget[1] * invToTargetLen, - toTarget[2] * invToTargetLen, - }; + const bx::Vec3 toTarget = bx::sub(m_target.dest, m_pos.dest); + const float toTargetLen = bx::length(toTarget); + const float invToTargetLen = 1.0f / (toTargetLen + bx::kFloatSmallest); + const bx::Vec3 toTargetNorm = bx::mul(toTarget, invToTargetLen); - float delta = toTargetLen*_dz; + float delta = toTargetLen * _dz; float newLen = toTargetLen + delta; - if ((cnear < newLen || _dz < 0.0f) - && (newLen < cfar || _dz > 0.0f)) + if ( (cnear < newLen || _dz < 0.0f) + && (newLen < cfar || _dz > 0.0f) ) { - m_pos.dest[0] += toTargetNorm[0] * delta; - m_pos.dest[1] += toTargetNorm[1] * delta; - m_pos.dest[2] += toTargetNorm[2] * delta; + m_pos.dest = bx::mad(toTargetNorm, delta, m_pos.dest); } } @@ -101,41 +81,22 @@ struct Camera m_orbit[0] -= consume[0]; m_orbit[1] -= consume[1]; - const float toPos[3] = - { - m_pos.curr[0] - m_target.curr[0], - m_pos.curr[1] - m_target.curr[1], - m_pos.curr[2] - m_target.curr[2], - }; - const float toPosLen = bx::vec3Length(toPos); - const float invToPosLen = 1.0f / (toPosLen + FLT_MIN); - const float toPosNorm[3] = - { - toPos[0] * invToPosLen, - toPos[1] * invToPosLen, - toPos[2] * invToPosLen, - }; + const bx::Vec3 toPos = bx::sub(m_pos.curr, m_target.curr); + const float toPosLen = bx::length(toPos); + const float invToPosLen = 1.0f / (toPosLen + bx::kFloatSmallest); + const bx::Vec3 toPosNorm = bx::mul(toPos, invToPosLen); float ll[2]; - latLongFromVec(ll[0], ll[1], toPosNorm); + bx::toLatLong(&ll[0], &ll[1], toPosNorm); ll[0] += consume[0]; ll[1] -= consume[1]; - ll[1] = bx::clamp(ll[1], 0.02f, 0.98f); - - float tmp[3]; - vecFromLatLong(tmp, ll[0], ll[1]); - - float diff[3]; - diff[0] = (tmp[0] - toPosNorm[0])*toPosLen; - diff[1] = (tmp[1] - toPosNorm[1])*toPosLen; - diff[2] = (tmp[2] - toPosNorm[2])*toPosLen; - - m_pos.curr[0] += diff[0]; - m_pos.curr[1] += diff[1]; - m_pos.curr[2] += diff[2]; - m_pos.dest[0] += diff[0]; - m_pos.dest[1] += diff[1]; - m_pos.dest[2] += diff[2]; + ll[1] = bx::clamp(ll[1], 0.02f, 0.98f); + + const bx::Vec3 tmp = bx::fromLatLong(ll[0], ll[1]); + const bx::Vec3 diff = bx::mul(bx::sub(tmp, toPosNorm), toPosLen); + + m_pos.curr = bx::add(m_pos.curr, diff); + m_pos.dest = bx::add(m_pos.dest, diff); } void update(float _dt) @@ -144,54 +105,31 @@ struct Camera consumeOrbit(amount); - m_target.curr[0] = bx::lerp(m_target.curr[0], m_target.dest[0], amount); - m_target.curr[1] = bx::lerp(m_target.curr[1], m_target.dest[1], amount); - m_target.curr[2] = bx::lerp(m_target.curr[2], m_target.dest[2], amount); - m_pos.curr[0] = bx::lerp(m_pos.curr[0], m_pos.dest[0], amount); - m_pos.curr[1] = bx::lerp(m_pos.curr[1], m_pos.dest[1], amount); - m_pos.curr[2] = bx::lerp(m_pos.curr[2], m_pos.dest[2], amount); + m_target.curr = bx::lerp(m_target.curr, m_target.dest, amount); + m_pos.curr = bx::lerp(m_pos.curr, m_pos.dest, amount); } void envViewMtx(float* _mtx) { - const float toTarget[3] = - { - m_target.curr[0] - m_pos.curr[0], - m_target.curr[1] - m_pos.curr[1], - m_target.curr[2] - m_pos.curr[2], - }; - - const float toTargetLen = bx::vec3Length(toTarget); - const float invToTargetLen = 1.0f / (toTargetLen + FLT_MIN); - const float toTargetNorm[3] = - { - toTarget[0] * invToTargetLen, - toTarget[1] * invToTargetLen, - toTarget[2] * invToTargetLen, - }; - - float tmp[3]; - const float fakeUp[3] = { 0.0f, 1.0f, 0.0f }; - - float right[3]; - bx::vec3Cross(tmp, fakeUp, toTargetNorm); - bx::vec3Norm(right, tmp); - - float up[3]; - bx::vec3Cross(tmp, toTargetNorm, right); - bx::vec3Norm(up, tmp); - - _mtx[0] = right[0]; - _mtx[1] = right[1]; - _mtx[2] = right[2]; - _mtx[3] = 0.0f; - _mtx[4] = up[0]; - _mtx[5] = up[1]; - _mtx[6] = up[2]; - _mtx[7] = 0.0f; - _mtx[8] = toTargetNorm[0]; - _mtx[9] = toTargetNorm[1]; - _mtx[10] = toTargetNorm[2]; + const bx::Vec3 toTarget = bx::sub(m_target.curr, m_pos.curr); + const float toTargetLen = bx::length(toTarget); + const float invToTargetLen = 1.0f / (toTargetLen + bx::kFloatSmallest); + const bx::Vec3 toTargetNorm = bx::mul(toTarget, invToTargetLen); + + const bx::Vec3 right = bx::normalize(bx::cross({ 0.0f, 1.0f, 0.0f }, toTargetNorm) ); + const bx::Vec3 up = bx::normalize(bx::cross(toTargetNorm, right) ); + + _mtx[ 0] = right.x; + _mtx[ 1] = right.y; + _mtx[ 2] = right.z; + _mtx[ 3] = 0.0f; + _mtx[ 4] = up.x; + _mtx[ 5] = up.y; + _mtx[ 6] = up.z; + _mtx[ 7] = 0.0f; + _mtx[ 8] = toTargetNorm.x; + _mtx[ 9] = toTargetNorm.y; + _mtx[10] = toTargetNorm.z; _mtx[11] = 0.0f; _mtx[12] = 0.0f; _mtx[13] = 0.0f; @@ -199,34 +137,10 @@ struct Camera _mtx[15] = 1.0f; } - static inline void vecFromLatLong(float _vec[3], float _u, float _v) - { - const float phi = _u * 2.0f*bx::kPi; - const float theta = _v * bx::kPi; - - const float st = bx::sin(theta); - const float sp = bx::sin(phi); - const float ct = bx::cos(theta); - const float cp = bx::cos(phi); - - _vec[0] = -st*sp; - _vec[1] = ct; - _vec[2] = -st*cp; - } - - static inline void latLongFromVec(float& _u, float& _v, const float _vec[3]) - { - const float phi = bx::atan2(_vec[0], _vec[2]); - const float theta = bx::acos(_vec[1]); - - _u = (bx::kPi + phi)*bx::kInvPi*0.5f; - _v = theta*bx::kInvPi; - } - struct Interp3f { - float curr[3]; - float dest[3]; + bx::Vec3 curr = bx::init::None; + bx::Vec3 dest = bx::init::None; }; Interp3f m_target; @@ -279,16 +193,16 @@ struct PosVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .end(); }; - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosVertex::ms_decl; +bgfx::VertexLayout PosVertex::ms_layout; static PosVertex s_cubeVertices[8] = { @@ -373,12 +287,12 @@ void createCubeMesh(Prop& prop) prop.m_vertices = new PosVertex[prop.m_noofVertices]; prop.m_indices = new uint16_t[prop.m_noofIndices]; - bx::memCopy(prop.m_vertices, s_cubeVertices, prop.m_noofVertices * PosVertex::ms_decl.getStride()); + bx::memCopy(prop.m_vertices, s_cubeVertices, prop.m_noofVertices * PosVertex::ms_layout.getStride()); bx::memCopy(prop.m_indices, s_cubeIndices, prop.m_noofIndices * sizeof(uint16_t)); prop.m_vertexbufferHandle = bgfx::createVertexBuffer( - bgfx::makeRef(prop.m_vertices, prop.m_noofVertices * PosVertex::ms_decl.getStride()), - PosVertex::ms_decl); + bgfx::makeRef(prop.m_vertices, prop.m_noofVertices * PosVertex::ms_layout.getStride()), + PosVertex::ms_layout); prop.m_indexbufferHandle = bgfx::createIndexBuffer(bgfx::makeRef(prop.m_indices, prop.m_noofIndices * sizeof(uint16_t))); } @@ -392,8 +306,8 @@ float rand01() class GPUDrivenRendering : public entry::AppI { public: - GPUDrivenRendering(const char* _name, const char* _description) - : entry::AppI(_name, _description) + GPUDrivenRendering(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -414,6 +328,9 @@ public: bgfx::Init init; init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -426,7 +343,7 @@ public: u_inputRTSize = bgfx::createUniform("u_inputRTSize", bgfx::UniformType::Vec4); u_cullingConfig = bgfx::createUniform("u_cullingConfig", bgfx::UniformType::Vec4); u_color = bgfx::createUniform("u_color", bgfx::UniformType::Vec4, 32); - s_texOcclusionDepth = bgfx::createUniform("s_texOcclusionDepth", bgfx::UniformType::Int1); + s_texOcclusionDepth = bgfx::createUniform("s_texOcclusionDepth", bgfx::UniformType::Sampler); //create props { @@ -596,7 +513,7 @@ public: ; // Create buffers for the HiZ pass - m_hiZDepthBuffer = bgfx::createFrameBuffer(uint16_t(m_hiZwidth), uint16_t(m_hiZheight), bgfx::TextureFormat::D32, tsFlags); + m_hiZDepthBuffer = bgfx::createFrameBuffer(uint16_t(m_hiZwidth), uint16_t(m_hiZheight), bgfx::TextureFormat::D32F, tsFlags); bgfx::TextureHandle buffer = bgfx::createTexture2D(uint16_t(m_hiZwidth), uint16_t(m_hiZheight), true, 1, bgfx::TextureFormat::R32F, BGFX_TEXTURE_COMPUTE_WRITE | tsFlags); m_hiZBuffer = bgfx::createFrameBuffer(1, &buffer, true); @@ -614,8 +531,8 @@ public: //bounding box for each instance, will be fed to the compute shader to calculate occlusion { - bgfx::VertexDecl computeVertexDecl; - computeVertexDecl.begin() + bgfx::VertexLayout computeVertexLayout; + computeVertexLayout.begin() .add(bgfx::Attrib::TexCoord0, 4, bgfx::AttribType::Float) .end(); @@ -643,13 +560,13 @@ public: const bgfx::Memory* mem = bgfx::makeRef(boundingBoxes, sizeof(float) * sizeOfBuffer); - m_instanceBoundingBoxes = bgfx::createDynamicVertexBuffer(mem, computeVertexDecl, BGFX_BUFFER_COMPUTE_READ); + m_instanceBoundingBoxes = bgfx::createDynamicVertexBuffer(mem, computeVertexLayout, BGFX_BUFFER_COMPUTE_READ); } //pre and post occlusion culling instance data buffers { - bgfx::VertexDecl instanceBufferVertexDecl; - instanceBufferVertexDecl.begin() + bgfx::VertexLayout instanceBufferVertexLayout; + instanceBufferVertexLayout.begin() .add(bgfx::Attrib::TexCoord0, 4, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord1, 4, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord2, 4, bgfx::AttribType::Float) @@ -679,10 +596,10 @@ public: const bgfx::Memory* mem = bgfx::makeRef(instanceData, sizeof(float) * sizeOfBuffer); //pre occlusion buffer - m_instanceBuffer = bgfx::createVertexBuffer(mem, instanceBufferVertexDecl, BGFX_BUFFER_COMPUTE_READ); + m_instanceBuffer = bgfx::createVertexBuffer(mem, instanceBufferVertexLayout, BGFX_BUFFER_COMPUTE_READ); //post occlusion buffer - m_culledInstanceBuffer = bgfx::createDynamicVertexBuffer(4 * m_totalInstancesCount, instanceBufferVertexDecl, BGFX_BUFFER_COMPUTE_WRITE); + m_culledInstanceBuffer = bgfx::createDynamicVertexBuffer(4 * m_totalInstancesCount, instanceBufferVertexLayout, BGFX_BUFFER_COMPUTE_WRITE); } //we use one "drawcall" per prop to render all its instances @@ -690,6 +607,7 @@ public: // Create programs from shaders for occlusion pass. m_programOcclusionPass = loadProgram("vs_gdr_render_occlusion", NULL); + m_programCopyZ = loadProgram("cs_gdr_copy_z", NULL); m_programDownscaleHiZ = loadProgram("cs_gdr_downscale_hi_z", NULL); m_programOccludeProps = loadProgram("cs_gdr_occlude_props", NULL); m_programStreamCompaction = loadProgram("cs_gdr_stream_compaction", NULL); @@ -762,8 +680,8 @@ public: // Create master vertex buffer m_allPropsVertexbufferHandle = bgfx::createVertexBuffer( - bgfx::makeRef(m_allPropVerticesDataCPU, totalNoofVertices * PosVertex::ms_decl.getStride()) - , PosVertex::ms_decl + bgfx::makeRef(m_allPropVerticesDataCPU, totalNoofVertices * PosVertex::ms_layout.getStride()) + , PosVertex::ms_layout ); // Create master index buffer. @@ -780,6 +698,7 @@ public: m_timeOffset = bx::getHPCounter(); m_useIndirect = true; + m_firstFrame = true; imguiCreate(); } @@ -792,6 +711,7 @@ public: bgfx::destroy(m_programMainPass); bgfx::destroy(m_programOcclusionPass); + bgfx::destroy(m_programCopyZ); bgfx::destroy(m_programDownscaleHiZ); bgfx::destroy(m_programOccludeProps); bgfx::destroy(m_programStreamCompaction); @@ -899,29 +819,29 @@ public: uint32_t width = m_hiZwidth; uint32_t height = m_hiZheight; - for (uint8_t lod = 0; lod < m_noofHiZMips; ++lod) + // copy mip zero over to the hi Z buffer. + // We can't currently use blit as it requires same format and CopyResource is not exposed. { - float coordinateScale = lod > 0 ? 2.0f : 1.0f; + float inputRendertargetSize[4] = { (float)width, (float)height, 0.0f, 0.0f }; + bgfx::setUniform(u_inputRTSize, inputRendertargetSize); - float inputRendertargetSize[4] = { (float)width, (float)height, coordinateScale, coordinateScale }; + bgfx::setTexture(0, s_texOcclusionDepth, getTexture(m_hiZDepthBuffer, 0)); + bgfx::setImage(1, getTexture(m_hiZBuffer, 0), 0, bgfx::Access::Write); + + bgfx::dispatch(RENDER_PASS_HIZ_DOWNSCALE_ID, m_programCopyZ, width/16, height/16); + } + + for (uint8_t lod = 1; lod < m_noofHiZMips; ++lod) + { + float inputRendertargetSize[4] = { (float)width, (float)height, 2.0f, 2.0f }; bgfx::setUniform(u_inputRTSize, inputRendertargetSize); - if (lod > 0) - { - // down scale mip 1 onwards - width /= 2; - height /= 2; + // down scale mip 1 onwards + width /= 2; + height /= 2; - bgfx::setImage(0, getTexture(m_hiZBuffer, 0), lod - 1, bgfx::Access::Read); - bgfx::setImage(1, getTexture(m_hiZBuffer, 0), lod, bgfx::Access::Write); - } - else - { - // copy mip zero over to the hi Z buffer. - // We can't currently use blit as it requires same format and CopyResource is not exposed. - bgfx::setImage(0, getTexture(m_hiZDepthBuffer, 0), 0, bgfx::Access::Read); - bgfx::setImage(1, getTexture(m_hiZBuffer, 0), 0, bgfx::Access::Write); - } + bgfx::setImage(0, getTexture(m_hiZBuffer, 0), lod - 1, bgfx::Access::Read); + bgfx::setImage(1, getTexture(m_hiZBuffer, 0), lod, bgfx::Access::Write); bgfx::dispatch(RENDER_PASS_HIZ_DOWNSCALE_ID, m_programDownscaleHiZ, width/16, height/16); } @@ -1000,7 +920,9 @@ public: // Set "material" data (currently a color only) bgfx::setUniform(u_color, &m_materials[0].m_color, m_noofMaterials); - if (m_useIndirect) + // We can't use indirect drawing for the first frame because the content of m_drawcallInstanceCounts + // is initially undefined. + if (m_useIndirect && !m_firstFrame) { // Set vertex and index buffer. bgfx::setVertexBuffer(0, m_allPropsVertexbufferHandle); @@ -1051,6 +973,7 @@ public: } } } + m_firstFrame = false; } bool update() override @@ -1172,6 +1095,7 @@ public: bgfx::ProgramHandle m_programMainPass; bgfx::ProgramHandle m_programOcclusionPass; + bgfx::ProgramHandle m_programCopyZ; bgfx::ProgramHandle m_programDownscaleHiZ; bgfx::ProgramHandle m_programOccludeProps; bgfx::ProgramHandle m_programStreamCompaction; @@ -1214,6 +1138,7 @@ public: uint8_t m_noofHiZMips; bool m_useIndirect; + bool m_firstFrame; Camera m_camera; Mouse m_mouse; @@ -1221,4 +1146,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(GPUDrivenRendering, "37-gpudrivenrendering", "GPU-Driven Rendering."); +ENTRY_IMPLEMENT_MAIN( + GPUDrivenRendering + , "37-gpudrivenrendering" + , "GPU-Driven Rendering." + , "https://bkaradzic.github.io/bgfx/examples.html#gpudrivenrendering" + ); diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/makefile b/3rdparty/bgfx/examples/37-gpudrivenrendering/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/makefile +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_instanced_indirect_rendering.sc b/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_instanced_indirect_rendering.sc index da5174d9f69..56e249dc8c0 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_instanced_indirect_rendering.sc +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_instanced_indirect_rendering.sc @@ -3,7 +3,7 @@ $output v_materialID /* * Copyright 2018 Kostas Anagnostou. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_render_occlusion.sc b/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_render_occlusion.sc index dcfe4b60635..496994d7a33 100644 --- a/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_render_occlusion.sc +++ b/3rdparty/bgfx/examples/37-gpudrivenrendering/vs_gdr_render_occlusion.sc @@ -2,7 +2,7 @@ $input a_position, i_data0, i_data1, i_data2, i_data3, i_data4 /* * Copyright 2018 Kostas Anagnostou. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/38-bloom/bloom.cpp b/3rdparty/bgfx/examples/38-bloom/bloom.cpp index 1de0111ca9b..99dcb730730 100644 --- a/3rdparty/bgfx/examples/38-bloom/bloom.cpp +++ b/3rdparty/bgfx/examples/38-bloom/bloom.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2018 Eric Arnebäck. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2018 Eric Arnebäck. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ /* @@ -13,7 +13,6 @@ #include "bgfx_utils.h" #include "imgui/imgui.h" #include "camera.h" -#include "bounds.h" namespace { @@ -43,16 +42,16 @@ struct PosVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosVertex::ms_decl; +bgfx::VertexLayout PosVertex::ms_layout; struct PosTexCoord0Vertex { @@ -64,17 +63,17 @@ struct PosTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; constexpr float cs = 0.29f; @@ -126,10 +125,10 @@ static const uint16_t s_cubeIndices[36] = void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) { - if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_decl) ) + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout) ) { bgfx::TransientVertexBuffer vb; - bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_decl); + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; const float minx = -_width; @@ -179,11 +178,11 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf } } -class ExampleDeferred : public entry::AppI +class ExampleBloom : public entry::AppI { public: - ExampleDeferred(const char* _name, const char* _description) - : entry::AppI(_name, _description) + ExampleBloom(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) { } @@ -197,9 +196,11 @@ public: m_reset = BGFX_RESET_VSYNC; bgfx::Init init; - init.type = args.m_type; init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); init.resolution.width = m_width; init.resolution.height = m_height; init.resolution.reset = m_reset; @@ -238,15 +239,15 @@ public: // Create static vertex buffer. m_vbh = bgfx::createVertexBuffer( bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ) - , PosVertex::ms_decl + , PosVertex::ms_layout ); m_ibh = bgfx::createIndexBuffer(bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ) ); - s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Int1); - s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Int1); - s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Int1); - s_light = bgfx::createUniform("s_light", bgfx::UniformType::Int1); + s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler); + s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Sampler); + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler); + s_light = bgfx::createUniform("s_light", bgfx::UniformType::Sampler); u_pixelSize = bgfx::createUniform("u_pixelSize", bgfx::UniformType::Vec4); u_intensity = bgfx::createUniform("u_intensity", bgfx::UniformType::Vec4); u_color = bgfx::createUniform("u_color", bgfx::UniformType::Vec4); @@ -283,8 +284,7 @@ public: cameraCreate(); - const float initialPos[3] = { 0.0f, 0.0f, -15.0f }; - cameraSetPosition(initialPos); + cameraSetPosition({ 0.0f, 0.0f, -15.0f }); cameraSetVerticalAngle(0.0f); } @@ -398,11 +398,9 @@ public: bgfx::destroy(m_texChainFb[ii]); } - const float dim = float(1 << ii); - m_texChainFb[ii] = bgfx::createFrameBuffer( - (uint16_t)(m_width / dim) - , (uint16_t)(m_height / dim) + (uint16_t)(m_width >> ii) + , (uint16_t)(m_height >> ii) , bgfx::TextureFormat::RGBA32F , tsFlags ); @@ -412,7 +410,7 @@ public: { bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::RGBA32F, tsFlags), bgfx::getTexture(m_texChainFb[0]), - bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::D24S8, tsFlags), + bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::D32F, tsFlags), }; m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(gbufferTex), gbufferTex, true); @@ -436,7 +434,7 @@ public: ImGui::End(); // Update camera. - cameraUpdate(deltaTime, m_mouseState); + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); float view[16]; cameraGetViewMtx(view); @@ -448,21 +446,19 @@ public: for (uint16_t ii = 0; ii < TEX_CHAIN_LEN-1; ++ii) { - const float dim = float(1 << (ii + 1) ); - + const uint16_t shift = ii + 1; bgfx::setViewRect(RENDER_PASS_DOWNSAMPLE0_ID + ii, 0, 0 - , uint16_t(m_width / dim) - , uint16_t(m_height / dim) + , uint16_t(m_width >> shift) + , uint16_t(m_height >> shift) ); } for (uint16_t ii = 0; ii < TEX_CHAIN_LEN-1; ++ii) { - const float dim = float(1 << (TEX_CHAIN_LEN - ii - 2) ); - + const uint16_t shift = TEX_CHAIN_LEN - ii - 2; bgfx::setViewRect(RENDER_PASS_UPSAMPLE0_ID + ii, 0, 0 - , uint16_t(m_width / dim) - , uint16_t(m_height / dim) + , uint16_t(m_width >> shift) + , uint16_t(m_height >> shift) ); } @@ -492,7 +488,9 @@ public: const uint32_t kNum = 9; const int kNumColors = 5; const float color[4*kNumColors] = - { // Palette: http://www.colourlovers.com/palette/3647908/RGB_Ice_Cream + { // Reference(s): + // - Palette + // https://web.archive.org/web/20180219034657/http://www.colourlovers.com/palette/3647908/RGB_Ice_Cream 0.847f*0.2f, 0.365f*0.2f, 0.408f*0.2f, 1.0f, 0.976f*0.2f, 0.827f*0.2f, 0.533f*0.2f, 1.0f, 0.533f*0.2f, 0.867f*0.2f, 0.741f*0.2f, 1.0f, @@ -539,11 +537,11 @@ public: // Now downsample. for (uint16_t ii = 0; ii < TEX_CHAIN_LEN-1; ++ii) { - const float dim = float(1 << (ii + 1) ); + const uint16_t shift = ii + 1; const float pixelSize[4] = { - 1.0f / (m_width / dim), - 1.0f / (m_height / dim), + 1.0f / (float)(m_width >> shift), + 1.0f / (float)(m_height >> shift), 0.0f, 0.0f, }; @@ -563,12 +561,11 @@ public: // Now upsample. for (uint16_t ii = 0; ii < TEX_CHAIN_LEN - 1; ++ii) { - const float dim = float(1 << (TEX_CHAIN_LEN - 2 - ii) ); - + const uint16_t shift = TEX_CHAIN_LEN - 2 - ii; const float pixelSize[4] = { - 1.0f / (float)(m_width / dim), - 1.0f / (float)(m_height / dim), + 1.0f / (float)(m_width >> shift), + 1.0f / (float)(m_height >> shift), 0.0f, 0.0f, }; @@ -657,4 +654,9 @@ public: } // namespace -ENTRY_IMPLEMENT_MAIN(ExampleDeferred, "38-bloom", "Bloom."); +ENTRY_IMPLEMENT_MAIN( + ExampleBloom + , "38-bloom" + , "Bloom." + , "https://bkaradzic.github.io/bgfx/examples.html#bloom" + ); diff --git a/3rdparty/bgfx/examples/38-bloom/fs_albedo_output.sc b/3rdparty/bgfx/examples/38-bloom/fs_albedo_output.sc index b445c1ef06a..2167d6399c5 100644 --- a/3rdparty/bgfx/examples/38-bloom/fs_albedo_output.sc +++ b/3rdparty/bgfx/examples/38-bloom/fs_albedo_output.sc @@ -2,7 +2,7 @@ $input v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 /* * Copyright 2018 Eric Arnebäck. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/38-bloom/fs_bloom_combine.sc b/3rdparty/bgfx/examples/38-bloom/fs_bloom_combine.sc index 8e70488fe72..6b9073b8f88 100644 --- a/3rdparty/bgfx/examples/38-bloom/fs_bloom_combine.sc +++ b/3rdparty/bgfx/examples/38-bloom/fs_bloom_combine.sc @@ -1,8 +1,8 @@ $input v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/38-bloom/fs_downsample.sc b/3rdparty/bgfx/examples/38-bloom/fs_downsample.sc index f9ec13a2913..0b1f5ba91c3 100644 --- a/3rdparty/bgfx/examples/38-bloom/fs_downsample.sc +++ b/3rdparty/bgfx/examples/38-bloom/fs_downsample.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2018 Eric Arnebäck. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/38-bloom/fs_upsample.sc b/3rdparty/bgfx/examples/38-bloom/fs_upsample.sc index 54ac70a6191..725426c01f9 100644 --- a/3rdparty/bgfx/examples/38-bloom/fs_upsample.sc +++ b/3rdparty/bgfx/examples/38-bloom/fs_upsample.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2018 Eric Arnebäck. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/38-bloom/makefile b/3rdparty/bgfx/examples/38-bloom/makefile index 171709170a4..19c81e43692 100644 --- a/3rdparty/bgfx/examples/38-bloom/makefile +++ b/3rdparty/bgfx/examples/38-bloom/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # BGFX_DIR=../.. diff --git a/3rdparty/bgfx/examples/38-bloom/vs_albedo_output.sc b/3rdparty/bgfx/examples/38-bloom/vs_albedo_output.sc index d526a026187..7b40bde966c 100644 --- a/3rdparty/bgfx/examples/38-bloom/vs_albedo_output.sc +++ b/3rdparty/bgfx/examples/38-bloom/vs_albedo_output.sc @@ -3,7 +3,7 @@ $output v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 /* * Copyright 2018 Eric Arnebäck. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/38-bloom/vs_deferred_combine.sc b/3rdparty/bgfx/examples/38-bloom/vs_deferred_combine.sc index 8c3b7a822b6..545369275d5 100644 --- a/3rdparty/bgfx/examples/38-bloom/vs_deferred_combine.sc +++ b/3rdparty/bgfx/examples/38-bloom/vs_deferred_combine.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0 $output v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/38-bloom/vs_fullscreen.sc b/3rdparty/bgfx/examples/38-bloom/vs_fullscreen.sc index 0e6a23be15d..e036fbe9def 100644 --- a/3rdparty/bgfx/examples/38-bloom/vs_fullscreen.sc +++ b/3rdparty/bgfx/examples/38-bloom/vs_fullscreen.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2018 Eric Arnebäck. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common/common.sh" diff --git a/3rdparty/bgfx/examples/39-assao/assao.cpp b/3rdparty/bgfx/examples/39-assao/assao.cpp new file mode 100644 index 00000000000..fbff0f29c98 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/assao.cpp @@ -0,0 +1,1212 @@ +/* +* Copyright 2018 Attila Kocsis. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +/* + * Reference(s): + * - ASSAO is a SSAO implementation tuned for scalability and flexibility. + * https://web.archive.org/web/20181214222937/https://software.intel.com/en-us/articles/adaptive-screen-space-ambient-occlusion + * https://github.com/GameTechDev/ASSAO + */ + +#include <common.h> +#include <camera.h> +#include <bgfx_utils.h> +#include <imgui/imgui.h> +#include <bx/rng.h> +#include <bx/os.h> + +#define USE_ASSAO 0 + +namespace +{ + +// Render passes +#define RENDER_PASS_GBUFFER 0 // GBuffer for normals and albedo +#define RENDER_PASS_COMBINE 1 // Directional light and final result + +// Gbuffer has multiple render targets +#define GBUFFER_RT_NORMAL 0 +#define GBUFFER_RT_COLOR 1 +#define GBUFFER_RT_DEPTH 2 + +// Random meshes we draw +#define MODEL_COUNT 120 // In this demo, a model is a mesh plus a transform + +#define SAMPLER_POINT_CLAMP (BGFX_SAMPLER_POINT|BGFX_SAMPLER_UVW_CLAMP) +#define SAMPLER_POINT_MIRROR (BGFX_SAMPLER_POINT|BGFX_SAMPLER_UVW_MIRROR) +#define SAMPLER_LINEAR_CLAMP (BGFX_SAMPLER_UVW_CLAMP) + +#define SSAO_DEPTH_MIP_LEVELS 4 + + static const char * s_meshPaths[] = + { + "meshes/cube.bin", + "meshes/orb.bin", + "meshes/column.bin", + "meshes/bunny_decimated.bin", + "meshes/tree.bin", + "meshes/hollowcube.bin" + }; + + static const float s_meshScale[] = + { + 0.25f, + 0.5f, + 0.05f, + 0.5f, + 0.05f, + 0.25f + }; + + // Vertex layout for our screen space quad (used in deferred rendering) + struct PosTexCoord0Vertex + { + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + } + + static bgfx::VertexLayout ms_layout; + }; + + bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; + + // Utility function to draw a screen space quad for deferred rendering + void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) + { + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout)) + { + bgfx::TransientVertexBuffer vb; + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); + PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; + + const float minx = -_width; + const float maxx = _width; + const float miny = 0.0f; + const float maxy = _height * 2.0f; + + const float texelHalfW = _texelHalf / _textureWidth; + const float texelHalfH = _texelHalf / _textureHeight; + const float minu = -1.0f + texelHalfW; + const float maxu = 1.0f + texelHalfH; + + const float zz = 0.0f; + + float minv = texelHalfH; + float maxv = 2.0f + texelHalfH; + + if (_originBottomLeft) + { + float temp = minv; + minv = maxv; + maxv = temp; + + minv -= 1.0f; + maxv -= 1.0f; + } + + vertex[0].m_x = minx; + vertex[0].m_y = miny; + vertex[0].m_z = zz; + vertex[0].m_u = minu; + vertex[0].m_v = minv; + + vertex[1].m_x = maxx; + vertex[1].m_y = miny; + vertex[1].m_z = zz; + vertex[1].m_u = maxu; + vertex[1].m_v = minv; + + vertex[2].m_x = maxx; + vertex[2].m_y = maxy; + vertex[2].m_z = zz; + vertex[2].m_u = maxu; + vertex[2].m_v = maxv; + + bgfx::setVertexBuffer(0, &vb); + } + } + + struct Settings + { + float m_radius; // [0.0, ~ ] World (view) space size of the occlusion sphere. + float m_shadowMultiplier; // [0.0, 5.0] Effect strength linear multiplier + float m_shadowPower; // [0.5, 5.0] Effect strength pow modifier + float m_shadowClamp; // [0.0, 1.0] Effect max limit (applied after multiplier but before blur) + float m_horizonAngleThreshold; // [0.0, 0.2] Limits self-shadowing (makes the sampling area less of a hemisphere, more of a spherical cone, to avoid self-shadowing and various artifacts due to low tessellation and depth buffer imprecision, etc.) + float m_fadeOutFrom; // [0.0, ~ ] Distance to start start fading out the effect. + float m_fadeOutTo; // [0.0, ~ ] Distance at which the effect is faded out. + int32_t m_qualityLevel; // [ -1, 3 ] Effect quality; -1 - lowest (low, half res checkerboard), 0 - low, 1 - medium, 2 - high, 3 - very high / adaptive; each quality level is roughly 2x more costly than the previous, except the q3 which is variable but, in general, above q2. + float m_adaptiveQualityLimit; // [0.0, 1.0] (only for Quality Level 3) + int32_t m_blurPassCount; // [ 0, 6] Number of edge-sensitive smart blur passes to apply. Quality 0 is an exception with only one 'dumb' blur pass used. + float m_sharpness; // [0.0, 1.0] (How much to bleed over edges; 1: not at all, 0.5: half-half; 0.0: completely ignore edges) + float m_temporalSupersamplingAngleOffset; // [0.0, PI] Used to rotate sampling kernel; If using temporal AA / supersampling, suggested to rotate by ( (frame%3)/3.0*PI ) or similar. Kernel is already symmetrical, which is why we use PI and not 2*PI. + float m_temporalSupersamplingRadiusOffset; // [0.0, 2.0] Used to scale sampling kernel; If using temporal AA / supersampling, suggested to scale by ( 1.0f + (((frame%3)-1.0)/3.0)*0.1 ) or similar. + float m_detailShadowStrength; // [0.0, 5.0] Used for high-res detail AO using neighboring depth pixels: adds a lot of detail but also reduces temporal stability (adds aliasing). + bool m_generateNormals; // [true/false] If true normals will be generated from depth. + + Settings() + { + m_radius = 1.2f; + m_shadowMultiplier = 1.0f; + m_shadowPower = 1.50f; + m_shadowClamp = 0.98f; + m_horizonAngleThreshold = 0.06f; + m_fadeOutFrom = 50.0f; + m_fadeOutTo = 200.0f; + m_adaptiveQualityLimit = 0.45f; + m_qualityLevel = 3; + m_blurPassCount = 2; + m_sharpness = 0.98f; + m_temporalSupersamplingAngleOffset = 0.0f; + m_temporalSupersamplingRadiusOffset = 1.0f; + m_detailShadowStrength = 0.5f; + m_generateNormals = true; + } + }; + + struct Uniforms + { + enum { NumVec4 = 19 }; + + void init() + { + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, NumVec4); + } + + void submit() + { + bgfx::setUniform(u_params, m_params, NumVec4); + } + + void destroy() + { + bgfx::destroy(u_params); + } + + union + { + struct + { + /* 0 */ struct { float m_viewportPixelSize[2]; float m_halfViewportPixelSize[2]; }; + /* 1 */ struct { float m_depthUnpackConsts[2]; float m_unused0[2]; }; + /* 2 */ struct { float m_ndcToViewMul[2]; float m_ndcToViewAdd[2]; }; + /* 3 */ struct { float m_perPassFullResCoordOffset[2]; float m_perPassFullResUVOffset[2]; }; + /* 4 */ struct { float m_viewport2xPixelSize[2]; float m_viewport2xPixelSize_x_025[2]; }; + /* 5 */ struct { float m_effectRadius; float m_effectShadowStrength; float m_effectShadowPow; float m_effectShadowClamp; }; + /* 6 */ struct { float m_effectFadeOutMul; float m_effectFadeOutAdd; float m_effectHorizonAngleThreshold; float m_effectSamplingRadiusNearLimitRec; }; + /* 7 */ struct { float m_depthPrecisionOffsetMod; float m_negRecEffectRadius; float m_loadCounterAvgDiv; float m_adaptiveSampleCountLimit; }; + /* 8 */ struct { float m_invSharpness; float m_passIndex; float m_quarterResPixelSize[2]; }; + /* 9-13 */ struct { float m_patternRotScaleMatrices[5][4]; }; + /* 14 */ struct { float m_normalsUnpackMul; float m_normalsUnpackAdd; float m_detailAOStrength; float m_layer; }; + /* 15-18 */ struct { float m_normalsWorldToViewspaceMatrix[16]; }; + }; + + float m_params[NumVec4 * 4]; + }; + + bgfx::UniformHandle u_params; + }; + + void vec2Set(float* _v, float _x, float _y) + { + _v[0] = _x; + _v[1] = _y; + } + + void vec4Set(float* _v, float _x, float _y, float _z, float _w) + { + _v[0] = _x; + _v[1] = _y; + _v[2] = _z; + _v[3] = _w; + } + + void vec4iSet(int32_t* _v, int32_t _x, int32_t _y, int32_t _z, int32_t _w) + { + _v[0] = _x; + _v[1] = _y; + _v[2] = _z; + _v[3] = _w; + } + + static const int32_t cMaxBlurPassCount = 6; + + class ExampleASSAO : public entry::AppI + { + public: + ExampleASSAO(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) + , m_currFrame(UINT32_MAX) + , m_enableSSAO(true) + , m_enableTexturing(true) + , m_texelHalf(0.0f) + , m_framebufferGutter(true) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Labeling for renderdoc captures, etc + bgfx::setViewName(RENDER_PASS_GBUFFER, "gbuffer"); + bgfx::setViewName(RENDER_PASS_COMBINE, "post combine"); + + // Set up screen clears + bgfx::setViewClear(RENDER_PASS_GBUFFER + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0 + , 1.0f + , 0 + ); + + // Create uniforms + u_combineParams = bgfx::createUniform("u_combineParams", bgfx::UniformType::Vec4, 2); + u_rect = bgfx::createUniform("u_rect", bgfx::UniformType::Vec4); // viewport/scissor rect for compute + m_uniforms.init(); + + // Create texture sampler uniforms (used when we bind textures) + s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Sampler); // Normal gbuffer + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler); // Normal gbuffer + s_color = bgfx::createUniform("s_color", bgfx::UniformType::Sampler); // Color (albedo) gbuffer + s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler); + + s_ao = bgfx::createUniform("s_ao", bgfx::UniformType::Sampler); + s_blurInput = bgfx::createUniform("s_blurInput", bgfx::UniformType::Sampler); + s_finalSSAO = bgfx::createUniform("s_finalSSAO", bgfx::UniformType::Sampler); + s_depthSource = bgfx::createUniform("s_depthSource", bgfx::UniformType::Sampler); + s_viewspaceDepthSource = bgfx::createUniform("s_viewspaceDepthSource", bgfx::UniformType::Sampler); + s_viewspaceDepthSourceMirror = bgfx::createUniform("s_viewspaceDepthSourceMirror", bgfx::UniformType::Sampler); + s_importanceMap = bgfx::createUniform("s_importanceMap", bgfx::UniformType::Sampler); + + // Create program from shaders. + m_gbufferProgram = loadProgram("vs_assao_gbuffer", "fs_assao_gbuffer"); // Gbuffer + m_combineProgram = loadProgram("vs_assao", "fs_assao_deferred_combine"); + + m_prepareDepthsProgram = loadProgram("cs_assao_prepare_depths", NULL); + m_prepareDepthsAndNormalsProgram = loadProgram("cs_assao_prepare_depths_and_normals", NULL); + m_prepareDepthsHalfProgram = loadProgram("cs_assao_prepare_depths_half", NULL); + m_prepareDepthsAndNormalsHalfProgram = loadProgram("cs_assao_prepare_depths_and_normals_half", NULL); + m_prepareDepthMipProgram = loadProgram("cs_assao_prepare_depth_mip", NULL); + m_generateQ0Program = loadProgram("cs_assao_generate_q0", NULL); + m_generateQ1Program = loadProgram("cs_assao_generate_q1", NULL); + m_generateQ2Program = loadProgram("cs_assao_generate_q2", NULL); + m_generateQ3Program = loadProgram("cs_assao_generate_q3", NULL); + m_generateQ3BaseProgram = loadProgram("cs_assao_generate_q3base", NULL); + m_smartBlurProgram = loadProgram("cs_assao_smart_blur", NULL); + m_smartBlurWideProgram = loadProgram("cs_assao_smart_blur_wide", NULL); + m_nonSmartBlurProgram = loadProgram("cs_assao_non_smart_blur", NULL); + m_applyProgram = loadProgram("cs_assao_apply", NULL); + m_nonSmartApplyProgram = loadProgram("cs_assao_non_smart_apply", NULL); + m_nonSmartHalfApplyProgram = loadProgram("cs_assao_non_smart_half_apply", NULL); + m_generateImportanceMapProgram = loadProgram("cs_assao_generate_importance_map", NULL); + m_postprocessImportanceMapAProgram = loadProgram("cs_assao_postprocess_importance_map_a", NULL); + m_postprocessImportanceMapBProgram = loadProgram("cs_assao_postprocess_importance_map_b", NULL); + m_loadCounterClearProgram = loadProgram("cs_assao_load_counter_clear", NULL); + + // Load some meshes + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + m_meshes[ii] = meshLoad(s_meshPaths[ii]); + } + + // Randomly create some models + bx::RngMwc mwc; // Random number generator + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + Model& model = m_models[ii]; + + model.mesh = 1 + mwc.gen() % (BX_COUNTOF(s_meshPaths) - 1); + model.position[0] = (((mwc.gen() % 256)) - 128.0f) / 20.0f; + model.position[1] = 0; + model.position[2] = (((mwc.gen() % 256)) - 128.0f) / 20.0f; + } + + // Load ground. We'll just use the cube since I don't have a ground model right now + m_ground = meshLoad("meshes/cube.bin"); + + m_groundTexture = loadTexture("textures/fieldstone-rgba.dds"); + const bgfx::Memory* mem = bgfx::alloc(4); + bx::memSet(mem->data, 0xc0, 4); + m_modelTexture = bgfx::createTexture2D(1,1, false, 1, bgfx::TextureFormat::RGBA8, 0, mem); + + m_recreateFrameBuffers = false; + createFramebuffers(); + + m_loadCounter = bgfx::createDynamicIndexBuffer(1, BGFX_BUFFER_COMPUTE_READ_WRITE | BGFX_BUFFER_INDEX32); + + // Vertex layout + PosTexCoord0Vertex::init(); + + // Init camera + cameraCreate(); + cameraSetPosition({ 0.0f, 1.5f, 0.0f }); + cameraSetVerticalAngle(-0.3f); + m_fovY = 60.0f; + + // Get renderer capabilities info. + const bgfx::RendererType::Enum renderer = bgfx::getRendererType(); + m_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f; + + imguiCreate(); + } + + int32_t shutdown() override + { + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + meshUnload(m_meshes[ii]); + } + + meshUnload(m_ground); + bgfx::destroy(m_groundTexture); + bgfx::destroy(m_modelTexture); + + // Cleanup. + bgfx::destroy(m_gbufferProgram); + bgfx::destroy(m_combineProgram); + + bgfx::destroy(m_prepareDepthsProgram); + bgfx::destroy(m_prepareDepthsAndNormalsProgram); + bgfx::destroy(m_prepareDepthsHalfProgram); + bgfx::destroy(m_prepareDepthsAndNormalsHalfProgram); + bgfx::destroy(m_prepareDepthMipProgram); + bgfx::destroy(m_generateQ0Program); + bgfx::destroy(m_generateQ1Program); + bgfx::destroy(m_generateQ2Program); + bgfx::destroy(m_generateQ3Program); + bgfx::destroy(m_generateQ3BaseProgram); + bgfx::destroy(m_smartBlurProgram); + bgfx::destroy(m_smartBlurWideProgram); + bgfx::destroy(m_nonSmartBlurProgram); + bgfx::destroy(m_applyProgram); + bgfx::destroy(m_nonSmartApplyProgram); + bgfx::destroy(m_nonSmartHalfApplyProgram); + bgfx::destroy(m_generateImportanceMapProgram); + bgfx::destroy(m_postprocessImportanceMapAProgram); + bgfx::destroy(m_postprocessImportanceMapBProgram); + bgfx::destroy(m_loadCounterClearProgram); + bgfx::destroy(m_combineProgram); + + m_uniforms.destroy(); + + bgfx::destroy(u_combineParams); + bgfx::destroy(u_rect); + + bgfx::destroy(s_normal); + bgfx::destroy(s_depth); + bgfx::destroy(s_color); + bgfx::destroy(s_albedo); + bgfx::destroy(s_ao); + bgfx::destroy(s_blurInput); + bgfx::destroy(s_finalSSAO); + bgfx::destroy(s_depthSource); + bgfx::destroy(s_viewspaceDepthSource); + bgfx::destroy(s_viewspaceDepthSourceMirror); + bgfx::destroy(s_importanceMap); + + bgfx::destroy(m_loadCounter); + destroyFramebuffers(); + + cameraDestroy(); + + imguiDestroy(); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState)) + { + // Update frame timer + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const float deltaTime = float(frameTime / freq); + const bgfx::Caps* caps = bgfx::getCaps(); + + if (m_size[0] != (int32_t)m_width + 2*m_border + || m_size[1] != (int32_t)m_height + 2*m_border + || m_recreateFrameBuffers) + { + destroyFramebuffers(); + createFramebuffers(); + m_recreateFrameBuffers = false; + } + + // Update camera + cameraUpdate(deltaTime*0.15f, m_mouseState, ImGui::MouseOverArea() ); + + // Set up matrices for gbuffer + cameraGetViewMtx(m_view); + + bx::mtxProj(m_proj, m_fovY, float(m_size[0]) / float(m_size[1]), 0.1f, 100.0f, bgfx::getCaps()->homogeneousDepth); + bx::mtxProj(m_proj2, m_fovY, float(m_size[0]) / float(m_size[1]), 0.1f, 100.0f, false); + + bgfx::setViewRect(RENDER_PASS_GBUFFER, 0, 0, uint16_t(m_size[0]), uint16_t(m_size[1])); + bgfx::setViewTransform(RENDER_PASS_GBUFFER, m_view, m_proj); + // Make sure when we draw it goes into gbuffer and not backbuffer + bgfx::setViewFrameBuffer(RENDER_PASS_GBUFFER, m_gbuffer); + // Draw everything into g-buffer + drawAllModels(RENDER_PASS_GBUFFER, m_gbufferProgram); + + // Set up transform matrix for fullscreen quad +#if USE_ASSAO == 1 + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, caps->homogeneousDepth); + bgfx::setViewTransform(RENDER_PASS_COMBINE, NULL, orthoProj); + bgfx::setViewRect(RENDER_PASS_COMBINE, 0, 0, uint16_t(m_width), uint16_t(m_height)); + // Bind vertex buffer and draw quad + screenSpaceQuad((float)m_width, (float)m_height, m_texelHalf, caps->originBottomLeft); + //bgfx::submit(RENDER_PASS_COMBINE, m_combineProgram); + bgfx::touch(RENDER_PASS_COMBINE); + + BX_UNUSED(orthoProj, caps) +#endif + + // ASSAO passes +#if USE_ASSAO == 0 + updateUniforms(0); + + bgfx::ViewId view = 2; + bgfx::setViewName(view, "ASSAO"); + + { + bgfx::setTexture(0, s_depthSource, bgfx::getTexture(m_gbuffer, GBUFFER_RT_DEPTH), SAMPLER_POINT_CLAMP); + m_uniforms.submit(); + + if (m_settings.m_generateNormals) + { + bgfx::setImage(5, m_normals, 0, bgfx::Access::Write, bgfx::TextureFormat::RGBA8); + } + + if (m_settings.m_qualityLevel < 0) + { + for (int32_t j = 0; j < 2; ++j) + { + bgfx::setImage((uint8_t)(j + 1), m_halfDepths[j == 0 ? 0 : 3], 0, bgfx::Access::Write, bgfx::TextureFormat::R16F); + } + + bgfx::dispatch(view, m_settings.m_generateNormals ? m_prepareDepthsAndNormalsHalfProgram : m_prepareDepthsHalfProgram, (m_halfSize[0] + 7) / 8, (m_halfSize[1] + 7) / 8); + } + else + { + for(int32_t j = 0; j < 4; ++j) + { + bgfx::setImage((uint8_t)(j+1), m_halfDepths[j], 0, bgfx::Access::Write, bgfx::TextureFormat::R16F); + } + + bgfx::dispatch(view, m_settings.m_generateNormals ? m_prepareDepthsAndNormalsProgram : m_prepareDepthsProgram, (m_halfSize[0] + 7) / 8, (m_halfSize[1] + 7) / 8); + + } + } + + // only do mipmaps for higher quality levels (not beneficial on quality level 1, and detrimental on quality level 0) + if (m_settings.m_qualityLevel > 1) + { + uint16_t mipWidth = (uint16_t)m_halfSize[0]; + uint16_t mipHeight = (uint16_t)m_halfSize[1]; + + for (uint8_t i = 1; i < SSAO_DEPTH_MIP_LEVELS; i++) + { + mipWidth = (uint16_t)bx::max(1, mipWidth >> 1); + mipHeight = (uint16_t)bx::max(1, mipHeight >> 1); + + for (uint8_t j = 0; j < 4; ++j) + { + bgfx::setImage(j, m_halfDepths[j], i-1, bgfx::Access::Read, bgfx::TextureFormat::R16F); + bgfx::setImage(j + 4, m_halfDepths[j], i, bgfx::Access::Write, bgfx::TextureFormat::R16F); + } + + m_uniforms.submit(); + float rect[4] = { 0.0f, 0.0f, (float)mipWidth, (float)mipHeight }; + bgfx::setUniform(u_rect, rect); + + bgfx::dispatch(view, m_prepareDepthMipProgram, (mipWidth + 7) / 8, (mipHeight + 7) / 8); + } + } + + // for adaptive quality, importance map pass + for (int32_t ssaoPass = 0; ssaoPass < 2; ++ssaoPass) + { + if (ssaoPass == 0 + && m_settings.m_qualityLevel < 3) + { + continue; + } + + bool adaptiveBasePass = (ssaoPass == 0); + + BX_UNUSED(adaptiveBasePass); + + int32_t passCount = 4; + + int32_t halfResNumX = (m_halfResOutScissorRect[2] - m_halfResOutScissorRect[0] + 7) / 8; + int32_t halfResNumY = (m_halfResOutScissorRect[3] - m_halfResOutScissorRect[1] + 7) / 8; + float halfResRect[4] = { (float)m_halfResOutScissorRect[0], (float)m_halfResOutScissorRect[1], (float)m_halfResOutScissorRect[2], (float)m_halfResOutScissorRect[3] }; + + for (int32_t pass = 0; pass < passCount; pass++) + { + if (m_settings.m_qualityLevel < 0 + && (pass == 1 || pass == 2) ) + { + continue; + } + + int32_t blurPasses = m_settings.m_blurPassCount; + blurPasses = bx::min(blurPasses, cMaxBlurPassCount); + + if (m_settings.m_qualityLevel == 3) + { + // if adaptive, at least one blur pass needed as the first pass needs to read the final texture results - kind of awkward + if (adaptiveBasePass) + { + blurPasses = 0; + } + else + { + blurPasses = bx::max(1, blurPasses); + } + } + else if (m_settings.m_qualityLevel <= 0) + { + // just one blur pass allowed for minimum quality + blurPasses = bx::min(1, m_settings.m_blurPassCount); + } + + updateUniforms(pass); + + bgfx::TextureHandle pPingRT = m_pingPongHalfResultA; + bgfx::TextureHandle pPongRT = m_pingPongHalfResultB; + + // Generate + { + bgfx::setImage(6, blurPasses == 0 ? m_finalResults : pPingRT, 0, bgfx::Access::Write, bgfx::TextureFormat::RG8); + + bgfx::setUniform(u_rect, halfResRect); + + bgfx::setTexture(0, s_viewspaceDepthSource, m_halfDepths[pass], SAMPLER_POINT_CLAMP); + bgfx::setTexture(1, s_viewspaceDepthSourceMirror, m_halfDepths[pass], SAMPLER_POINT_MIRROR); + if (m_settings.m_generateNormals) + bgfx::setImage(2, m_normals,0, bgfx::Access::Read, bgfx::TextureFormat::RGBA8); + else + bgfx::setImage(2, bgfx::getTexture(m_gbuffer, GBUFFER_RT_NORMAL), 0, bgfx::Access::Read, bgfx::TextureFormat::RGBA8); + + if (!adaptiveBasePass && (m_settings.m_qualityLevel == 3)) + { + bgfx::setBuffer(3, m_loadCounter, bgfx::Access::Read); + bgfx::setTexture(4, s_importanceMap, m_importanceMap, SAMPLER_LINEAR_CLAMP); + bgfx::setImage(5, m_finalResults, 0, bgfx::Access::Read, bgfx::TextureFormat::RG8); + } + + bgfx::ProgramHandle programs[5] = { m_generateQ0Program, m_generateQ1Program , m_generateQ2Program , m_generateQ3Program , m_generateQ3BaseProgram }; + int32_t programIndex = bx::max(0, (!adaptiveBasePass) ? (m_settings.m_qualityLevel) : (4)); + + m_uniforms.m_layer = blurPasses == 0 ? (float)pass : 0.0f; + m_uniforms.submit(); + bgfx::dispatch(view, programs[programIndex], halfResNumX, halfResNumY); + } + + // Blur + if (blurPasses > 0) + { + int32_t wideBlursRemaining = bx::max(0, blurPasses - 2); + + for (int32_t i = 0; i < blurPasses; i++) + { + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::touch(view); + + m_uniforms.m_layer = ((i == (blurPasses - 1)) ? (float)pass : 0.0f); + m_uniforms.submit(); + + bgfx::setUniform(u_rect, halfResRect); + + bgfx::setImage(0, i == (blurPasses - 1) ? m_finalResults : pPongRT, 0, bgfx::Access::Write, bgfx::TextureFormat::RG8); + bgfx::setTexture(1, s_blurInput, pPingRT, m_settings.m_qualityLevel > 0 ? SAMPLER_POINT_MIRROR : SAMPLER_LINEAR_CLAMP); + + if (m_settings.m_qualityLevel > 0) + { + if (wideBlursRemaining > 0) + { + bgfx::dispatch(view, m_smartBlurWideProgram, halfResNumX, halfResNumY); + wideBlursRemaining--; + } + else + { + bgfx::dispatch(view, m_smartBlurProgram, halfResNumX, halfResNumY); + } + } + else + { + bgfx::dispatch(view, m_nonSmartBlurProgram, halfResNumX, halfResNumY); // just for quality level 0 (and -1) + } + + bgfx::TextureHandle temp = pPingRT; + pPingRT = pPongRT; + pPongRT = temp; + } + } + } + + if (ssaoPass == 0 && m_settings.m_qualityLevel == 3) + { // Generate importance map + m_uniforms.submit(); + bgfx::setImage(0, m_importanceMap, 0, bgfx::Access::Write, bgfx::TextureFormat::R8); + bgfx::setTexture(1, s_finalSSAO, m_finalResults, SAMPLER_POINT_CLAMP); + bgfx::dispatch(view, m_generateImportanceMapProgram, (m_quarterSize[0] + 7) / 8, (m_quarterSize[1] + 7) / 8); + + m_uniforms.submit(); + bgfx::setImage(0, m_importanceMapPong, 0, bgfx::Access::Write, bgfx::TextureFormat::R8); + bgfx::setTexture(1, s_importanceMap, m_importanceMap); + bgfx::dispatch(view, m_postprocessImportanceMapAProgram, (m_quarterSize[0] + 7) / 8, (m_quarterSize[1] + 7) / 8); + + bgfx::setBuffer(0, m_loadCounter, bgfx::Access::ReadWrite); + bgfx::dispatch(view, m_loadCounterClearProgram, 1,1); + + m_uniforms.submit(); + bgfx::setImage(0, m_importanceMap, 0, bgfx::Access::Write, bgfx::TextureFormat::R8); + bgfx::setTexture(1, s_importanceMap, m_importanceMapPong); + bgfx::setBuffer(2, m_loadCounter, bgfx::Access::ReadWrite); + bgfx::dispatch(view, m_postprocessImportanceMapBProgram, (m_quarterSize[0]+7) / 8, (m_quarterSize[1]+7) / 8); + ++view; + } + } + + // Apply + { + // select 4 deinterleaved AO textures (texture array) + bgfx::setImage(0, m_aoMap, 0, bgfx::Access::Write, bgfx::TextureFormat::R8); + bgfx::setTexture(1, s_finalSSAO, m_finalResults); + + m_uniforms.submit(); + + float rect[4] = {(float)m_fullResOutScissorRect[0], (float)m_fullResOutScissorRect[1], (float)m_fullResOutScissorRect[2], (float)m_fullResOutScissorRect[3] }; + bgfx::setUniform(u_rect, rect); + + bgfx::ProgramHandle program; + if (m_settings.m_qualityLevel < 0) + program = m_nonSmartHalfApplyProgram; + else if (m_settings.m_qualityLevel == 0) + program = m_nonSmartApplyProgram; + else + program = m_applyProgram; + bgfx::dispatch(view, program, (m_fullResOutScissorRect[2]- m_fullResOutScissorRect[0] + 7) / 8, + (m_fullResOutScissorRect[3] - m_fullResOutScissorRect[1] + 7) / 8); + + + ++view; + } + + { // combine + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setViewName(view, "Combine"); + bgfx::setViewRect(view, 0, 0, (uint16_t)m_width, (uint16_t)m_height); + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, caps->homogeneousDepth); + bgfx::setViewTransform(view, NULL, orthoProj); + + bgfx::setTexture(0, s_color, bgfx::getTexture(m_gbuffer, GBUFFER_RT_COLOR), SAMPLER_POINT_CLAMP); + bgfx::setTexture(1, s_normal, bgfx::getTexture(m_gbuffer, GBUFFER_RT_NORMAL), SAMPLER_POINT_CLAMP); + + bgfx::setTexture(2, s_ao, m_aoMap, SAMPLER_POINT_CLAMP); + + m_uniforms.submit(); + float combineParams[8] = { m_enableTexturing ? 1.0f : 0.0f, m_enableSSAO ? 1.0f : 0.0f, 0.0f,0.0f, + (float)(m_size[0]-2*m_border) / (float)m_size[0], (float)(m_size[1] - 2 * m_border) / (float)m_size[1], + (float)m_border / (float)m_size[0], (float)m_border / (float)m_size[1] }; + bgfx::setUniform(u_combineParams, combineParams, 2); + screenSpaceQuad((float)m_width, (float)m_height, m_texelHalf, caps->originBottomLeft); + bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A | BGFX_STATE_DEPTH_TEST_ALWAYS); + bgfx::submit(view, m_combineProgram); + ++view; + } +#endif + + // Draw UI + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 4.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 4.0f, m_height / 1.3f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.5f); + ImGui::Checkbox("Enable SSAO", &m_enableSSAO); + ImGui::Checkbox("Enable Texturing & Lighting", &m_enableTexturing); + ImGui::Separator(); + + int32_t quality = m_settings.m_qualityLevel + 1; + + if (ImGui::Combo("Quality Level", &quality, "Lowest (Half Resolution)\0Low\0Medium\0High\0Adaptive\0\0")) + { + m_settings.m_qualityLevel = quality - 1; + } + + ImGui::Checkbox("Generate Normals", &m_settings.m_generateNormals); + + if (ImGui::Checkbox("Framebuffer Gutter", &m_framebufferGutter)) + { + m_recreateFrameBuffers = true; + } + + ImGui::SliderFloat("Effect Radius", &m_settings.m_radius, 0.0f, 4.0f); + ImGui::SliderFloat("Effect Strength", &m_settings.m_shadowMultiplier, 0.0f, 5.0f); + ImGui::SliderFloat("Effect Power", &m_settings.m_shadowPower, 0.5f, 4.0f); + ImGui::SliderFloat("Effect Max Limit", &m_settings.m_shadowClamp, 0.0f, 1.0f); + ImGui::SliderFloat("Horizon Angle Threshold", &m_settings.m_horizonAngleThreshold, 0.0f, 0.2f); + ImGui::SliderFloat("Fade Out From", &m_settings.m_fadeOutFrom, 0.0f, 100.0f); + ImGui::SliderFloat("Fade Out To", &m_settings.m_fadeOutTo, 0.0f, 300.0f); + + if (m_settings.m_qualityLevel == 3) + { + ImGui::SliderFloat("Adaptive Quality Limit", &m_settings.m_adaptiveQualityLimit, 0.0f, 1.0f); + } + + ImGui::SliderInt("Blur Pass Count", &m_settings.m_blurPassCount, 0, 6); + ImGui::SliderFloat("Sharpness", &m_settings.m_sharpness, 0.0f, 1.0f); + ImGui::SliderFloat("Temporal Supersampling Angle Offset", &m_settings.m_temporalSupersamplingAngleOffset, 0.0f, bx::kPi); + ImGui::SliderFloat("Temporal Supersampling Radius Offset", &m_settings.m_temporalSupersamplingRadiusOffset, 0.0f, 2.0f); + ImGui::SliderFloat("Detail Shadow Strength", &m_settings.m_detailShadowStrength, 0.0f, 4.0f); + + ImGui::End(); + + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_currFrame = bgfx::frame(); + + return true; + } + + return false; + } + + void drawAllModels(uint8_t _pass, bgfx::ProgramHandle _program) + { + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + const Model& model = m_models[ii]; + + // Set up transform matrix for each model + float scale = s_meshScale[model.mesh]; + float mtx[16]; + bx::mtxSRT(mtx + , scale + , scale + , scale + , 0.0f + , 0.0f + , 0.0f + , model.position[0] + , model.position[1] + , model.position[2] + ); + + // Submit mesh to gbuffer + bgfx::setTexture(0, s_albedo, m_modelTexture); + meshSubmit(m_meshes[model.mesh], _pass, _program, mtx); + } + + // Draw ground + float mtxScale[16]; + const float scale = 10.0f; + bx::mtxScale(mtxScale, scale, scale, scale); + + float mtxTrans[16]; + bx::mtxTranslate(mtxTrans + , 0.0f + , -10.0f + , 0.0f + ); + + float mtx[16]; + bx::mtxMul(mtx, mtxScale, mtxTrans); + bgfx::setTexture(0, s_albedo, m_groundTexture); + meshSubmit(m_ground, _pass, _program, mtx); + } + + void createFramebuffers() + { + // update resolution and camera FOV if there's border expansion + const int32_t drawResolutionBorderExpansionFactor = 12; // will be expanded by Height / expansionFactor + const float fovY = 60.0f; + + m_border = 0; + + if (m_framebufferGutter) + { + m_border = (bx::min(m_width, m_height) / drawResolutionBorderExpansionFactor) / 2 * 2; + int32_t expandedSceneResolutionY = m_height + m_border * 2; + float yScaleDueToBorder = (expandedSceneResolutionY * 0.5f) / (float)(m_height * 0.5f); + + float nonExpandedTan = bx::tan(bx::toRad(fovY / 2.0f)); + m_fovY = bx::toDeg(bx::atan(nonExpandedTan * yScaleDueToBorder) * 2.0f); + } + else + { + m_fovY = fovY; + } + + m_size[0] = m_width + 2 * m_border; + m_size[1] = m_height + 2 * m_border; + m_halfSize[0] = (m_size[0] + 1) / 2; + m_halfSize[1] = (m_size[1] + 1) / 2; + m_quarterSize[0] = (m_halfSize[0] + 1) / 2; + m_quarterSize[1] = (m_halfSize[1] + 1) / 2; + + vec4iSet(m_fullResOutScissorRect, m_border, m_border, m_width + m_border, m_height + m_border); + vec4iSet(m_halfResOutScissorRect, m_fullResOutScissorRect[0] / 2, m_fullResOutScissorRect[1] / 2, (m_fullResOutScissorRect[2] + 1) / 2, (m_fullResOutScissorRect[3] + 1) / 2); + + int32_t blurEnlarge = cMaxBlurPassCount + bx::max(0, cMaxBlurPassCount - 2); // +1 for max normal blurs, +2 for wide blurs + vec4iSet(m_halfResOutScissorRect, bx::max(0, m_halfResOutScissorRect[0] - blurEnlarge), bx::max(0, m_halfResOutScissorRect[1] - blurEnlarge), + bx::min(m_halfSize[0], m_halfResOutScissorRect[2] + blurEnlarge), bx::min(m_halfSize[1], m_halfResOutScissorRect[3] + blurEnlarge)); + + // Make gbuffer and related textures + const uint64_t tsFlags = 0 + | BGFX_TEXTURE_RT + | BGFX_SAMPLER_MIN_POINT + | BGFX_SAMPLER_MAG_POINT + | BGFX_SAMPLER_MIP_POINT + | BGFX_SAMPLER_U_CLAMP + | BGFX_SAMPLER_V_CLAMP + ; + + bgfx::TextureHandle gbufferTex[3]; + gbufferTex[GBUFFER_RT_NORMAL] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::BGRA8, tsFlags); + gbufferTex[GBUFFER_RT_COLOR] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::BGRA8, tsFlags); + gbufferTex[GBUFFER_RT_DEPTH] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::D32F, tsFlags); + m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(gbufferTex), gbufferTex, true); + + for (int32_t i = 0; i < 4; i++) + { + m_halfDepths[i] = bgfx::createTexture2D(uint16_t(m_halfSize[0]), uint16_t(m_halfSize[1]), true, 1, bgfx::TextureFormat::R16F, BGFX_TEXTURE_COMPUTE_WRITE | SAMPLER_POINT_CLAMP); + } + + m_pingPongHalfResultA = bgfx::createTexture2D(uint16_t(m_halfSize[0]), uint16_t(m_halfSize[1]), false, 2, bgfx::TextureFormat::RG8, BGFX_TEXTURE_COMPUTE_WRITE); + m_pingPongHalfResultB = bgfx::createTexture2D(uint16_t(m_halfSize[0]), uint16_t(m_halfSize[1]), false, 2, bgfx::TextureFormat::RG8, BGFX_TEXTURE_COMPUTE_WRITE); + + m_finalResults = bgfx::createTexture2D(uint16_t(m_halfSize[0]), uint16_t(m_halfSize[1]), false, 4, bgfx::TextureFormat::RG8, BGFX_TEXTURE_COMPUTE_WRITE | SAMPLER_LINEAR_CLAMP); + + m_normals = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::RGBA8, BGFX_TEXTURE_COMPUTE_WRITE); + + m_importanceMap = bgfx::createTexture2D(uint16_t(m_quarterSize[0]), uint16_t(m_quarterSize[1]), false, 1, bgfx::TextureFormat::R8, BGFX_TEXTURE_COMPUTE_WRITE | SAMPLER_LINEAR_CLAMP); + m_importanceMapPong = bgfx::createTexture2D(uint16_t(m_quarterSize[0]), uint16_t(m_quarterSize[1]), false, 1, bgfx::TextureFormat::R8, BGFX_TEXTURE_COMPUTE_WRITE | SAMPLER_LINEAR_CLAMP); + + m_aoMap = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::R8, BGFX_TEXTURE_COMPUTE_WRITE | SAMPLER_POINT_CLAMP); + } + + void destroyFramebuffers() + { + bgfx::destroy(m_gbuffer); + + for (uint32_t ii = 0; ii < BX_COUNTOF(m_halfDepths); ++ii) + { + bgfx::destroy(m_halfDepths[ii]); + } + + bgfx::destroy(m_pingPongHalfResultA); + bgfx::destroy(m_pingPongHalfResultB); + bgfx::destroy(m_finalResults); + bgfx::destroy(m_normals); + bgfx::destroy(m_aoMap); + + bgfx::destroy(m_importanceMap); + bgfx::destroy(m_importanceMapPong); + } + + void updateUniforms(int32_t _pass) + { + vec2Set(m_uniforms.m_viewportPixelSize, 1.0f / (float)m_size[0], 1.0f / (float)m_size[1]); + vec2Set(m_uniforms.m_halfViewportPixelSize, 1.0f / (float)m_halfSize[0], 1.0f / (float)m_halfSize[1]); + + vec2Set(m_uniforms.m_viewport2xPixelSize, m_uniforms.m_viewportPixelSize[0] * 2.0f, m_uniforms.m_viewportPixelSize[1] * 2.0f); + vec2Set(m_uniforms.m_viewport2xPixelSize_x_025, m_uniforms.m_viewport2xPixelSize[0] * 0.25f, m_uniforms.m_viewport2xPixelSize[1] * 0.25f); + + float depthLinearizeMul = -m_proj2[3*4+2]; // float depthLinearizeMul = ( clipFar * clipNear ) / ( clipFar - clipNear ); + float depthLinearizeAdd = m_proj2[2*4+2]; // float depthLinearizeAdd = clipFar / ( clipFar - clipNear ); + // correct the handedness issue. need to make sure this below is correct, but I think it is. + + if (depthLinearizeMul * depthLinearizeAdd < 0) + { + depthLinearizeAdd = -depthLinearizeAdd; + } + + vec2Set(m_uniforms.m_depthUnpackConsts, depthLinearizeMul, depthLinearizeAdd); + + float tanHalfFOVY = 1.0f / m_proj2[1*4+1]; // = tanf( drawContext.Camera.GetYFOV( ) * 0.5f ); + float tanHalfFOVX = 1.0F / m_proj2[0]; // = tanHalfFOVY * drawContext.Camera.GetAspect( ); + + if (bgfx::getRendererType() == bgfx::RendererType::OpenGL) + { + vec2Set(m_uniforms.m_ndcToViewMul, tanHalfFOVX * 2.0f, tanHalfFOVY * 2.0f); + vec2Set(m_uniforms.m_ndcToViewAdd, tanHalfFOVX * -1.0f, tanHalfFOVY * -1.0f); + } + else + { + vec2Set(m_uniforms.m_ndcToViewMul, tanHalfFOVX * 2.0f, tanHalfFOVY * -2.0f); + vec2Set(m_uniforms.m_ndcToViewAdd, tanHalfFOVX * -1.0f, tanHalfFOVY * 1.0f); + } + + m_uniforms.m_effectRadius = bx::clamp(m_settings.m_radius, 0.0f, 100000.0f); + m_uniforms.m_effectShadowStrength = bx::clamp(m_settings.m_shadowMultiplier * 4.3f, 0.0f, 10.0f); + m_uniforms.m_effectShadowPow = bx::clamp(m_settings.m_shadowPower, 0.0f, 10.0f); + m_uniforms.m_effectShadowClamp = bx::clamp(m_settings.m_shadowClamp, 0.0f, 1.0f); + m_uniforms.m_effectFadeOutMul = -1.0f / (m_settings.m_fadeOutTo - m_settings.m_fadeOutFrom); + m_uniforms.m_effectFadeOutAdd = m_settings.m_fadeOutFrom / (m_settings.m_fadeOutTo - m_settings.m_fadeOutFrom) + 1.0f; + m_uniforms.m_effectHorizonAngleThreshold = bx::clamp(m_settings.m_horizonAngleThreshold, 0.0f, 1.0f); + + // 1.2 seems to be around the best trade off - 1.0 means on-screen radius will stop/slow growing when the camera is at 1.0 distance, so, depending on FOV, basically filling up most of the screen + // This setting is viewspace-dependent and not screen size dependent intentionally, so that when you change FOV the effect stays (relatively) similar. + float effectSamplingRadiusNearLimit = (m_settings.m_radius * 1.2f); + + // if the depth precision is switched to 32bit float, this can be set to something closer to 1 (0.9999 is fine) + m_uniforms.m_depthPrecisionOffsetMod = 0.9992f; + + // used to get average load per pixel; 9.0 is there to compensate for only doing every 9th InterlockedAdd in PSPostprocessImportanceMapB for performance reasons + m_uniforms.m_loadCounterAvgDiv = 9.0f / (float)(m_quarterSize[0] * m_quarterSize[1] * 255.0); + + // Special settings for lowest quality level - just nerf the effect a tiny bit + if (m_settings.m_qualityLevel <= 0) + { + effectSamplingRadiusNearLimit *= 1.50f; + + if (m_settings.m_qualityLevel < 0) + { + m_uniforms.m_effectRadius *= 0.8f; + } + } + + effectSamplingRadiusNearLimit /= tanHalfFOVY; // to keep the effect same regardless of FOV + + m_uniforms.m_effectSamplingRadiusNearLimitRec = 1.0f / effectSamplingRadiusNearLimit; + + m_uniforms.m_adaptiveSampleCountLimit = m_settings.m_adaptiveQualityLimit; + + m_uniforms.m_negRecEffectRadius = -1.0f / m_uniforms.m_effectRadius; + + if (bgfx::getCaps()->originBottomLeft) + { + vec2Set(m_uniforms.m_perPassFullResCoordOffset, (float)(_pass % 2), 1.0f-(float)(_pass / 2)); + vec2Set(m_uniforms.m_perPassFullResUVOffset, ((_pass % 2) - 0.0f) / m_size[0], (1.0f-((_pass / 2) - 0.0f)) / m_size[1]); + } + else + { + vec2Set(m_uniforms.m_perPassFullResCoordOffset, (float)(_pass % 2), (float)(_pass / 2)); + vec2Set(m_uniforms.m_perPassFullResUVOffset, ((_pass % 2) - 0.0f) / m_size[0], ((_pass / 2) - 0.0f) / m_size[1]); + } + + m_uniforms.m_invSharpness = bx::clamp(1.0f - m_settings.m_sharpness, 0.0f, 1.0f); + m_uniforms.m_passIndex = (float)_pass; + vec2Set(m_uniforms.m_quarterResPixelSize, 1.0f / (float)m_quarterSize[0], 1.0f / (float)m_quarterSize[1]); + + float additionalAngleOffset = m_settings.m_temporalSupersamplingAngleOffset; // if using temporal supersampling approach (like "Progressive Rendering Using Multi-frame Sampling" from GPU Pro 7, etc.) + float additionalRadiusScale = m_settings.m_temporalSupersamplingRadiusOffset; // if using temporal supersampling approach (like "Progressive Rendering Using Multi-frame Sampling" from GPU Pro 7, etc.) + const int32_t subPassCount = 5; + for (int32_t subPass = 0; subPass < subPassCount; subPass++) + { + int32_t a = _pass; + int32_t b = subPass; + + int32_t spmap[5]{ 0, 1, 4, 3, 2 }; + b = spmap[subPass]; + + float ca, sa; + float angle0 = ((float)a + (float)b / (float)subPassCount) * (3.1415926535897932384626433832795f) * 0.5f; + angle0 += additionalAngleOffset; + + ca = bx::cos(angle0); + sa = bx::sin(angle0); + + float scale = 1.0f + (a - 1.5f + (b - (subPassCount - 1.0f) * 0.5f) / (float)subPassCount) * 0.07f; + scale *= additionalRadiusScale; + + vec4Set(m_uniforms.m_patternRotScaleMatrices[subPass], scale * ca, scale * -sa, -scale * sa, -scale * ca); + } + + m_uniforms.m_normalsUnpackMul = 2.0f; + m_uniforms.m_normalsUnpackAdd = -1.0f; + + m_uniforms.m_detailAOStrength = m_settings.m_detailShadowStrength; + + if (m_settings.m_generateNormals) + { + bx::mtxIdentity(m_uniforms.m_normalsWorldToViewspaceMatrix); + } + else + { + bx::mtxTranspose(m_uniforms.m_normalsWorldToViewspaceMatrix, m_view); + } + } + + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + entry::MouseState m_mouseState; + + Uniforms m_uniforms; + + // Resource handles + bgfx::ProgramHandle m_gbufferProgram; + bgfx::ProgramHandle m_combineProgram; + + bgfx::ProgramHandle m_prepareDepthsProgram; + bgfx::ProgramHandle m_prepareDepthsAndNormalsProgram; + bgfx::ProgramHandle m_prepareDepthsHalfProgram; + bgfx::ProgramHandle m_prepareDepthsAndNormalsHalfProgram; + bgfx::ProgramHandle m_prepareDepthMipProgram; + bgfx::ProgramHandle m_generateQ0Program; + bgfx::ProgramHandle m_generateQ1Program; + bgfx::ProgramHandle m_generateQ2Program; + bgfx::ProgramHandle m_generateQ3Program; + bgfx::ProgramHandle m_generateQ3BaseProgram; + bgfx::ProgramHandle m_smartBlurProgram; + bgfx::ProgramHandle m_smartBlurWideProgram; + bgfx::ProgramHandle m_nonSmartBlurProgram; + bgfx::ProgramHandle m_applyProgram; + bgfx::ProgramHandle m_nonSmartApplyProgram; + bgfx::ProgramHandle m_nonSmartHalfApplyProgram; + bgfx::ProgramHandle m_generateImportanceMapProgram; + bgfx::ProgramHandle m_postprocessImportanceMapAProgram; + bgfx::ProgramHandle m_postprocessImportanceMapBProgram; + bgfx::ProgramHandle m_loadCounterClearProgram; + + bgfx::FrameBufferHandle m_gbuffer; + + // Shader uniforms + bgfx::UniformHandle u_rect; + bgfx::UniformHandle u_combineParams; + + // Uniforms to identify texture samples + bgfx::UniformHandle s_normal; + bgfx::UniformHandle s_depth; + bgfx::UniformHandle s_color; + bgfx::UniformHandle s_albedo; + bgfx::UniformHandle s_ao; + bgfx::UniformHandle s_blurInput; + bgfx::UniformHandle s_finalSSAO; + bgfx::UniformHandle s_depthSource; + bgfx::UniformHandle s_viewspaceDepthSource; + bgfx::UniformHandle s_viewspaceDepthSourceMirror; + bgfx::UniformHandle s_importanceMap; + + // Various render targets + bgfx::TextureHandle m_halfDepths[4]; + bgfx::TextureHandle m_pingPongHalfResultA; + bgfx::TextureHandle m_pingPongHalfResultB; + bgfx::TextureHandle m_finalResults; + bgfx::TextureHandle m_aoMap; + bgfx::TextureHandle m_normals; + + // Only needed for quality level 3 (adaptive quality) + bgfx::TextureHandle m_importanceMap; + bgfx::TextureHandle m_importanceMapPong; + bgfx::DynamicIndexBufferHandle m_loadCounter; + + struct Model + { + uint32_t mesh; // Index of mesh in m_meshes + float position[3]; + }; + + Model m_models[MODEL_COUNT]; + Mesh* m_meshes[BX_COUNTOF(s_meshPaths)]; + Mesh* m_ground; + + bgfx::TextureHandle m_groundTexture; + bgfx::TextureHandle m_modelTexture; + + uint32_t m_currFrame; + + // UI + Settings m_settings; + bool m_enableSSAO; + bool m_enableTexturing; + + float m_texelHalf; + float m_fovY; + + bool m_framebufferGutter; + bool m_recreateFrameBuffers; + + float m_view[16]; + float m_proj[16]; + float m_proj2[16]; + int32_t m_size[2]; + int32_t m_halfSize[2]; + int32_t m_quarterSize[2]; + int32_t m_fullResOutScissorRect[4]; + int32_t m_halfResOutScissorRect[4]; + int32_t m_border; + }; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExampleASSAO + , "39-assao" + , "Adaptive Screen Space Ambient Occlusion." + , "https://bkaradzic.github.io/bgfx/examples.html#assao" + ); + + diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_apply.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_apply.sc new file mode 100644 index 00000000000..d6148fb3bd7 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_apply.sc @@ -0,0 +1,103 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_WR(s_target, r8, 0); +SAMPLER2DARRAY(s_finalSSAO, 1); + +// unpacking for edges; 2 bits per edge mean 4 gradient values (0, 0.33, 0.66, 1) for smoother transitions! + +vec4 UnpackEdges( float _packedVal ) +{ + uint packedVal = uint(_packedVal * 255.5); + vec4 edgesLRTB; + edgesLRTB.x = float((packedVal >> 6) & 0x03) / 3.0; // there's really no need for mask (as it's an 8 bit input) but I'll leave it in so it doesn't cause any trouble in the future + edgesLRTB.y = float((packedVal >> 4) & 0x03) / 3.0; + edgesLRTB.z = float((packedVal >> 2) & 0x03) / 3.0; + edgesLRTB.w = float((packedVal >> 0) & 0x03) / 3.0; + + return saturate( edgesLRTB + u_invSharpness ); +} + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy) + uvec2(u_rect.xy); + if (all(lessThan(dtID.xy, u_rect.zw) ) ) + { + float ao; + uvec2 pixPos = uvec2(dtID.xy); + uvec2 pixPosHalf = pixPos / uvec2(2, 2); + + // calculate index in the four deinterleaved source array texture + int mx = (int(pixPos.x) % 2); +#if BGFX_SHADER_LANGUAGE_GLSL + int dimy = imageSize(s_target).y; + int my = (int(dimy-1-pixPos.y) % 2); +#else + int my = (int(pixPos.y) % 2); +#endif + int ic = mx + my * 2; // center index + int ih = (1-mx) + my * 2; // neighbouring, horizontal + int iv = mx + (1-my) * 2; // neighbouring, vertical + int id = (1-mx) + (1-my)*2; // diagonal + + vec2 centerVal = texelFetch(s_finalSSAO, ivec3(pixPosHalf, ic), 0 ).xy; + + ao = centerVal.x; + + #if 1 // change to 0 if you want to disable last pass high-res blur (for debugging purposes, etc.) + vec4 edgesLRTB = UnpackEdges( centerVal.y ); + + // return 1.0 - vec4( edgesLRTB.x, edgesLRTB.y * 0.5 + edgesLRTB.w * 0.5, edgesLRTB.z, 0.0 ); // debug show edges + + // convert index shifts to sampling offsets + float fmx = float(mx); + float fmy = float(my); + + // in case of an edge, push sampling offsets away from the edge (towards pixel center) + float fmxe = (edgesLRTB.y - edgesLRTB.x); + float fmye = (edgesLRTB.w - edgesLRTB.z); + + // calculate final sampling offsets and sample using bilinear filter +#if BGFX_SHADER_LANGUAGE_GLSL + vec2 uvH = (dtID.xy + vec2( fmx + fmxe - 0.5, 1.0 - (0.5 - fmy) ) ) * 0.5 * u_halfViewportPixelSize; +#else + vec2 uvH = (dtID.xy + vec2( fmx + fmxe - 0.5, 0.5 - fmy ) ) * 0.5 * u_halfViewportPixelSize; +#endif + float aoH = texture2DArrayLod(s_finalSSAO, vec3( uvH, ih ), 0 ).x; +#if BGFX_SHADER_LANGUAGE_GLSL + vec2 uvV = (dtID.xy + vec2( 0.5 - fmx, 1.0 - (fmy - 0.5 + fmye) ) ) * 0.5 * u_halfViewportPixelSize; +#else + vec2 uvV = (dtID.xy + vec2( 0.5 - fmx, fmy - 0.5 + fmye ) ) * 0.5 * u_halfViewportPixelSize; +#endif + float aoV = texture2DArrayLod(s_finalSSAO, vec3( uvV, iv ), 0 ).x; +#if BGFX_SHADER_LANGUAGE_GLSL + vec2 uvD = (dtID.xy + vec2( fmx - 0.5 + fmxe, 1.0 - (fmy - 0.5 + fmye) ) ) * 0.5 * u_halfViewportPixelSize; +#else + vec2 uvD = (dtID.xy + vec2( fmx - 0.5 + fmxe, fmy - 0.5 + fmye ) ) * 0.5 * u_halfViewportPixelSize; +#endif + float aoD = texture2DArrayLod(s_finalSSAO, vec3( uvD, id ), 0 ).x; + + // reduce weight for samples near edge - if the edge is on both sides, weight goes to 0 + vec4 blendWeights; + blendWeights.x = 1.0; + blendWeights.y = (edgesLRTB.x + edgesLRTB.y) * 0.5; + blendWeights.z = (edgesLRTB.z + edgesLRTB.w) * 0.5; + blendWeights.w = (blendWeights.y + blendWeights.z) * 0.5; + + // calculate weighted average + float blendWeightsSum = dot( blendWeights, vec4( 1.0, 1.0, 1.0, 1.0 ) ); + ao = dot( vec4( ao, aoH, aoV, aoD ), blendWeights ) / blendWeightsSum; + #endif + + ao = pow(ao,1.0/2.2); + + imageStore(s_target, ivec2(dtID.xy), ao.xxxx); + } +} + diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_generate_importance_map.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_importance_map.sc new file mode 100644 index 00000000000..7905c8196ef --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_importance_map.sc @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_WR(s_target, r8, 0); +SAMPLER2DARRAY(s_finalSSAO, 1); + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = imageSize(s_target).xy; + if (all(lessThan(dtID.xy, dim) ) ) + { + uvec2 basePos = uvec2(dtID.xy) * 2; + + vec2 baseUV = (vec2(basePos) + vec2( 0.5, 0.5 ) ) * u_halfViewportPixelSize; + vec2 gatherUV = (vec2(basePos) + vec2( 1.0, 1.0 ) ) * u_halfViewportPixelSize; + + float avg = 0.0; + float minV = 1.0; + float maxV = 0.0; + UNROLL + for( int i = 0; i < 4; i++ ) + { + vec4 vals = textureGather(s_finalSSAO, vec3( gatherUV, i ), 0); + + // apply the same modifications that would have been applied in the main shader + vals = u_effectShadowStrength * vals; + + vals = 1-vals; + + vals = pow( saturate( vals ), u_effectShadowPow.xxxx ); + + avg += dot( vec4( vals.x, vals.y, vals.z, vals.w ), vec4( 1.0 / 16.0, 1.0 / 16.0, 1.0 / 16.0, 1.0 / 16.0 ) ); + + maxV = max( maxV, max( max( vals.x, vals.y ), max( vals.z, vals.w ) ) ); + minV = min( minV, min( min( vals.x, vals.y ), min( vals.z, vals.w ) ) ); + } + + float minMaxDiff = maxV - minV; + + imageStore(s_target, ivec2(dtID.xy), pow( saturate( minMaxDiff * 2.0 ), 0.8 ).xxxx); + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q.sh b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q.sh new file mode 100644 index 00000000000..5b4726e69e8 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q.sh @@ -0,0 +1,520 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +// progressive poisson-like pattern; x, y are in [-1, 1] range, .z is length( vec2(x,y) ), .w is log2( z ) +#define INTELSSAO_MAIN_DISK_SAMPLE_COUNT (32) +CONST(vec4 g_samplePatternMain[INTELSSAO_MAIN_DISK_SAMPLE_COUNT]) = +{ + { 0.78488064, 0.56661671, 1.500000, -0.126083}, { 0.26022232, -0.29575172, 1.500000, -1.064030}, { 0.10459357, 0.08372527, 1.110000, -2.730563}, {-0.68286800, 0.04963045, 1.090000, -0.498827}, + {-0.13570161, -0.64190155, 1.250000, -0.532765}, {-0.26193795, -0.08205118, 0.670000, -1.783245}, {-0.61177456, 0.66664219, 0.710000, -0.044234}, { 0.43675563, 0.25119025, 0.610000, -1.167283}, + { 0.07884444, 0.86618668, 0.640000, -0.459002}, {-0.12790935, -0.29869005, 0.600000, -1.729424}, {-0.04031125, 0.02413622, 0.600000, -4.792042}, { 0.16201244, -0.52851415, 0.790000, -1.067055}, + {-0.70991218, 0.47301072, 0.640000, -0.335236}, { 0.03277707, -0.22349690, 0.600000, -1.982384}, { 0.68921727, 0.36800742, 0.630000, -0.266718}, { 0.29251814, 0.37775412, 0.610000, -1.422520}, + {-0.12224089, 0.96582592, 0.600000, -0.426142}, { 0.11071457, -0.16131058, 0.600000, -2.165947}, { 0.46562141, -0.59747696, 0.600000, -0.189760}, {-0.51548797, 0.11804193, 0.600000, -1.246800}, + { 0.89141309, -0.42090443, 0.600000, 0.028192}, {-0.32402530, -0.01591529, 0.600000, -1.543018}, { 0.60771245, 0.41635221, 0.600000, -0.605411}, { 0.02379565, -0.08239821, 0.600000, -3.809046}, + { 0.48951152, -0.23657045, 0.600000, -1.189011}, {-0.17611565, -0.81696892, 0.600000, -0.513724}, {-0.33930185, -0.20732205, 0.600000, -1.698047}, {-0.91974425, 0.05403209, 0.600000, 0.062246}, + {-0.15064627, -0.14949332, 0.600000, -1.896062}, { 0.53180975, -0.35210401, 0.600000, -0.758838}, { 0.41487166, 0.81442589, 0.600000, -0.505648}, {-0.24106961, -0.32721516, 0.600000, -1.665244} +}; + +// these values can be changed (up to SSAO_MAX_TAPS) with no changes required elsewhere; values for 4th and 5th preset are ignored but array needed to avoid compilation errors +// the actual number of texture samples is two times this value (each "tap" has two symmetrical depth texture samples) +CONST(uint g_numTaps[5]) = { 3, 5, 12, 0, 0 }; + +// an example of higher quality low/medium/high settings +// CONST(uint g_numTaps[5]) = { 4, 9, 16, 0, 0 }; + +// ** WARNING ** if changing anything here, please remember to update the corresponding C++ code! + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Optional parts that can be enabled for a required quality preset level and above (0 == Low, 1 == Medium, 2 == High, 3 == Highest/Adaptive, 4 == reference/unused ) +// Each has its own cost. To disable just set to 5 or above. +// +// (experimental) tilts the disk (although only half of the samples!) towards surface normal; this helps with effect uniformity between objects but reduces effect distance and has other side-effects +#define SSAO_TILT_SAMPLES_ENABLE_AT_QUALITY_PRESET (99) // to disable simply set to 99 or similar +#define SSAO_TILT_SAMPLES_AMOUNT (0.4) +// +#define SSAO_HALOING_REDUCTION_ENABLE_AT_QUALITY_PRESET (1) // to disable simply set to 99 or similar +#define SSAO_HALOING_REDUCTION_AMOUNT (0.6) // values from 0.0 - 1.0, 1.0 means max weighting (will cause artifacts, 0.8 is more reasonable) +// +#define SSAO_NORMAL_BASED_EDGES_ENABLE_AT_QUALITY_PRESET (2) // to disable simply set to 99 or similar +#define SSAO_NORMAL_BASED_EDGES_DOT_THRESHOLD (0.5) // use 0-0.1 for super-sharp normal-based edges +// +#define SSAO_DETAIL_AO_ENABLE_AT_QUALITY_PRESET (1) // whether to use DetailAOStrength; to disable simply set to 99 or similar +// +#define SSAO_DEPTH_MIPS_ENABLE_AT_QUALITY_PRESET (2) // !!warning!! the MIP generation on the C++ side will be enabled on quality preset 2 regardless of this value, so if changing here, change the C++ side too +#define SSAO_DEPTH_MIPS_GLOBAL_OFFSET (-4.3) // best noise/quality/performance tradeoff, found empirically +// +// !!warning!! the edge handling is hard-coded to 'disabled' on quality level 0, and enabled above, on the C++ side; while toggling it here will work for +// testing purposes, it will not yield performance gains (or correct results) +#define SSAO_DEPTH_BASED_EDGES_ENABLE_AT_QUALITY_PRESET (1) +// +#define SSAO_REDUCE_RADIUS_NEAR_SCREEN_BORDER_ENABLE_AT_QUALITY_PRESET (99) // 99 means disabled; only helpful if artifacts at the edges caused by lack of out of screen depth data are not acceptable with the depth sampler in either clamp or mirror modes +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +SAMPLER2D(s_viewspaceDepthSource, 0); +SAMPLER2D(s_viewspaceDepthSourceMirror, 1); +IMAGE2D_RO(s_normalmapSource, rgba8, 2); +BUFFER_RO(s_loadCounter, uint, 3); +SAMPLER2D(s_importanceMap, 4); +IMAGE2D_ARRAY_RO(s_baseSSAO, rg8, 5); +IMAGE2D_ARRAY_WR(s_target, rg8, 6); + +// packing/unpacking for edges; 2 bits per edge mean 4 gradient values (0, 0.33, 0.66, 1) for smoother transitions! +float PackEdges( vec4 edgesLRTB ) +{ +// ivec4 edgesLRTBi = ivec4( saturate( edgesLRTB ) * 3.0 + 0.5 ); +// return ( (edgesLRTBi.x << 6) + (edgesLRTBi.y << 4) + (edgesLRTBi.z << 2) + (edgesLRTBi.w << 0) ) / 255.0; + + // optimized, should be same as above + edgesLRTB = round( saturate( edgesLRTB ) * 3.05 ); + return dot( edgesLRTB, vec4( 64.0 / 255.0, 16.0 / 255.0, 4.0 / 255.0, 1.0 / 255.0 ) ) ; +} + +vec3 NDCToViewspace( vec2 pos, float viewspaceDepth ) +{ + vec3 ret; + + ret.xy = (u_ndcToViewMul * pos.xy + u_ndcToViewAdd) * viewspaceDepth; + + ret.z = viewspaceDepth; + + return ret; +} + +// calculate effect radius and fit our screen sampling pattern inside it +void CalculateRadiusParameters( const float pixCenterLength, const vec2 pixelDirRBViewspaceSizeAtCenterZ, out float pixLookupRadiusMod, out float effectRadius, out float falloffCalcMulSq ) +{ + effectRadius = u_effectRadius; + + // leaving this out for performance reasons: use something similar if radius needs to scale based on distance + //effectRadius *= pow( pixCenterLength, u_radiusDistanceScalingFunctionPow); + + // when too close, on-screen sampling disk will grow beyond screen size; limit this to avoid closeup temporal artifacts + const float tooCloseLimitMod = saturate( pixCenterLength * u_effectSamplingRadiusNearLimitRec ) * 0.8 + 0.2; + + effectRadius *= tooCloseLimitMod; + + // 0.85 is to reduce the radius to allow for more samples on a slope to still stay within influence + pixLookupRadiusMod = (0.85 * effectRadius) / pixelDirRBViewspaceSizeAtCenterZ.x; + + // used to calculate falloff (both for AO samples and per-sample weights) + falloffCalcMulSq= -1.0f / (effectRadius*effectRadius); +} + +vec4 CalculateEdges( const float centerZ, const float leftZ, const float rightZ, const float topZ, const float bottomZ ) +{ + // slope-sensitive depth-based edge detection + vec4 edgesLRTB = vec4( leftZ, rightZ, topZ, bottomZ ) - centerZ; + vec4 edgesLRTBSlopeAdjusted = edgesLRTB + edgesLRTB.yxwz; + edgesLRTB = min( abs( edgesLRTB ), abs( edgesLRTBSlopeAdjusted ) ); + return saturate( ( 1.3 - edgesLRTB / (centerZ * 0.040) ) ); + + // cheaper version but has artifacts + // edgesLRTB = abs( vec4( leftZ, rightZ, topZ, bottomZ ) - centerZ; ); + // return saturate( ( 1.3 - edgesLRTB / (pixZ * 0.06 + 0.1) ) ); +} + +vec3 DecodeNormal( vec3 encodedNormal ) +{ + vec3 normal = encodedNormal * u_normalsUnpackMul.xxx + u_normalsUnpackAdd.xxx; + +#if SSAO_ENABLE_NORMAL_WORLD_TO_VIEW_CONVERSION + normal = vec3( dot(normal, u_normalsWorldToViewspaceMatrix0.xyz), + dot(normal, u_normalsWorldToViewspaceMatrix1.xyz), + dot(normal, u_normalsWorldToViewspaceMatrix2.xyz)); +#endif + + // normal = normalize( normal ); // normalize adds around 2.5% cost on High settings but makes little (PSNR 66.7) visual difference when normals are as in the sample (stored in R8G8B8A8_UNORM, + // // decoded in the shader), however it will likely be required if using different encoding/decoding or the inputs are not normalized, etc. + + return normal; +} + +vec3 LoadNormal( ivec2 pos ) +{ + vec3 encodedNormal = imageLoad(s_normalmapSource, pos).xyz; + return DecodeNormal( encodedNormal ); +} + +vec3 LoadNormal( ivec2 pos, ivec2 offset ) +{ + vec3 encodedNormal = imageLoad(s_normalmapSource, pos + offset ).xyz; + return DecodeNormal( encodedNormal ); +} + +// all vectors in viewspace +float CalculatePixelObscurance( vec3 pixelNormal, vec3 hitDelta, float falloffCalcMulSq ) +{ + float lengthSq = dot( hitDelta, hitDelta ); + float NdotD = dot(pixelNormal, hitDelta) / sqrt(lengthSq); + + float falloffMult = max( 0.0, lengthSq * falloffCalcMulSq + 1.0 ); + + return max( 0, NdotD - u_effectHorizonAngleThreshold ) * falloffMult; +} + +void SSAOTapInner( const int qualityLevel, inout float obscuranceSum, inout float weightSum, const vec2 samplingUV, const float mipLevel, const vec3 pixCenterPos, const vec3 negViewspaceDir,vec3 pixelNormal, const float falloffCalcMulSq, const float weightMod, const int dbgTapIndex) +{ + // get depth at sample + float viewspaceSampleZ = texture2DLod(s_viewspaceDepthSource, samplingUV.xy, mipLevel ).x; + + // convert to viewspace + vec3 hitPos = NDCToViewspace( samplingUV.xy, viewspaceSampleZ ).xyz; + vec3 hitDelta = hitPos - pixCenterPos; + + float obscurance = CalculatePixelObscurance( pixelNormal, hitDelta, falloffCalcMulSq ); + float weight = 1.0; + + if( qualityLevel >= SSAO_HALOING_REDUCTION_ENABLE_AT_QUALITY_PRESET ) + { + //float reduct = max( 0, dot( hitDelta, negViewspaceDir ) ); + float reduct = max( 0, -hitDelta.z ); // cheaper, less correct version + reduct = saturate( reduct * u_negRecEffectRadius + 2.0 ); // saturate( 2.0 - reduct / u_effectRadius ); + weight = SSAO_HALOING_REDUCTION_AMOUNT * reduct + (1.0 - SSAO_HALOING_REDUCTION_AMOUNT); + } + weight *= weightMod; + obscuranceSum += obscurance * weight; + weightSum += weight; +} + +void SSAOTap( const int qualityLevel, inout float obscuranceSum, inout float weightSum, const int tapIndex, const mat2 rotScale, const vec3 pixCenterPos, const vec3 negViewspaceDir, vec3 pixelNormal, const vec2 normalizedScreenPos, const float mipOffset, const float falloffCalcMulSq, float weightMod, vec2 normXY, float normXYLength) +{ + vec2 sampleOffset; + float samplePow2Len; + + // patterns + { + vec4 newSample = g_samplePatternMain[tapIndex]; + sampleOffset = mul( rotScale, newSample.xy ); + samplePow2Len = newSample.w; // precalculated, same as: samplePow2Len = log2( length( newSample.xy ) ); + weightMod *= newSample.z; + } + + // snap to pixel center (more correct obscurance math, avoids artifacts) + sampleOffset = round(sampleOffset); + + // calculate MIP based on the sample distance from the centre, similar to as described + // in http://graphics.cs.williams.edu/papers/SAOHPG12/. + float mipLevel = ( qualityLevel < SSAO_DEPTH_MIPS_ENABLE_AT_QUALITY_PRESET )?(0):(samplePow2Len + mipOffset); + +#if BGFX_SHADER_LANGUAGE_GLSL + sampleOffset.y = -sampleOffset.y; +#endif + vec2 samplingUV = sampleOffset * u_viewport2xPixelSize + normalizedScreenPos; + + SSAOTapInner( qualityLevel, obscuranceSum, weightSum, samplingUV, mipLevel, pixCenterPos, negViewspaceDir, pixelNormal, falloffCalcMulSq, weightMod, tapIndex * 2); + + // for the second tap, just use the mirrored offset + vec2 sampleOffsetMirroredUV = -sampleOffset; + + // tilt the second set of samples so that the disk is effectively rotated by the normal + // effective at removing one set of artifacts, but too expensive for lower quality settings + if( qualityLevel >= SSAO_TILT_SAMPLES_ENABLE_AT_QUALITY_PRESET ) + { + float dotNorm = dot( sampleOffsetMirroredUV, normXY ); + sampleOffsetMirroredUV -= dotNorm * normXYLength * normXY; + sampleOffsetMirroredUV = round(sampleOffsetMirroredUV); + } + + // snap to pixel center (more correct obscurance math, avoids artifacts) + vec2 samplingMirroredUV = sampleOffsetMirroredUV * u_viewport2xPixelSize + normalizedScreenPos; + + SSAOTapInner( qualityLevel, obscuranceSum, weightSum, samplingMirroredUV, mipLevel, pixCenterPos, negViewspaceDir, pixelNormal, falloffCalcMulSq, weightMod, tapIndex * 2 + 1); +} + +// this function is designed to only work with half/half depth at the moment - there's a couple of hardcoded paths that expect pixel/texel size, so it will not work for full res +void GenerateSSAOShadowsInternal( out float outShadowTerm, out vec4 outEdges, out float outWeight, + const vec2 SVPos, const int qualityLevel, bool adaptiveBase) +{ + vec2 SVPosRounded = trunc( SVPos ); + uvec2 SVPosui = uvec2( SVPosRounded ); //same as uvec2( SVPos ) + + const uint numberOfTaps = (adaptiveBase)?(SSAO_ADAPTIVE_TAP_BASE_COUNT) : ( g_numTaps[qualityLevel] ); + float pixZ, pixLZ, pixTZ, pixRZ, pixBZ; + +#if BGFX_SHADER_LANGUAGE_GLSL + vec4 valuesUL = textureGather(s_viewspaceDepthSourceMirror, SVPosRounded * u_halfViewportPixelSize + vec2(0.0,u_halfViewportPixelSize.y), 0).wzyx; + vec4 valuesBR = textureGatherOffset(s_viewspaceDepthSourceMirror, SVPosRounded * u_halfViewportPixelSize + vec2(0.0,u_halfViewportPixelSize.y), ivec2( 1, -1 ), 0).wzyx; +#else + vec4 valuesUL = textureGather(s_viewspaceDepthSourceMirror, SVPosRounded * u_halfViewportPixelSize, 0); + vec4 valuesBR = textureGatherOffset(s_viewspaceDepthSourceMirror, SVPosRounded * u_halfViewportPixelSize, ivec2( 1, 1 ), 0); +#endif + + // get this pixel's viewspace depth + pixZ = valuesUL.y; + + // get left right top bottom neighbouring pixels for edge detection (gets compiled out on qualityLevel == 0) + pixLZ = valuesUL.x; + pixTZ = valuesUL.z; + pixRZ = valuesBR.z; + pixBZ = valuesBR.x; + + vec2 normalizedScreenPos = SVPosRounded * u_viewport2xPixelSize + u_viewport2xPixelSize_x_025; + vec3 pixCenterPos = NDCToViewspace( normalizedScreenPos, pixZ ); // g + + // Load this pixel's viewspace normal + uvec2 fullResCoord = uvec2(SVPosui * 2 + u_perPassFullResCoordOffset.xy); + vec3 pixelNormal = LoadNormal( ivec2(fullResCoord) ); + + const vec2 pixelDirRBViewspaceSizeAtCenterZ = pixCenterPos.z * u_ndcToViewMul * u_viewport2xPixelSize; // optimized approximation of: vec2 pixelDirRBViewspaceSizeAtCenterZ = NDCToViewspace( normalizedScreenPos.xy + u_viewportPixelSize.xy, pixCenterPos.z ).xy - pixCenterPos.xy; + + float pixLookupRadiusMod; + float falloffCalcMulSq; + + // calculate effect radius and fit our screen sampling pattern inside it + float effectViewspaceRadius; + CalculateRadiusParameters( length( pixCenterPos ), pixelDirRBViewspaceSizeAtCenterZ, pixLookupRadiusMod, effectViewspaceRadius, falloffCalcMulSq ); + + // calculate samples rotation/scaling + mat2 rotScale; + { + // reduce effect radius near the screen edges slightly; ideally, one would render a larger depth buffer (5% on each side) instead + if( !adaptiveBase && (qualityLevel >= SSAO_REDUCE_RADIUS_NEAR_SCREEN_BORDER_ENABLE_AT_QUALITY_PRESET) ) + { + float nearScreenBorder = min( min( normalizedScreenPos.x, 1.0 - normalizedScreenPos.x ), min( normalizedScreenPos.y, 1.0 - normalizedScreenPos.y ) ); + nearScreenBorder = saturate( 10.0 * nearScreenBorder + 0.6 ); + pixLookupRadiusMod *= nearScreenBorder; + } + + // load & update pseudo-random rotation matrix +#if BGFX_SHADER_LANGUAGE_GLSL + uint pseudoRandomIndex = uint( (imageSize(s_target).y-1.0-SVPosRounded.y) * 2 + SVPosRounded.x ) % 5; +#else + uint pseudoRandomIndex = uint( SVPosRounded.y * 2 + SVPosRounded.x ) % 5; +#endif + vec4 rs = u_patternRotScaleMatrices( pseudoRandomIndex ); + rotScale = mat2( rs.x * pixLookupRadiusMod, rs.y * pixLookupRadiusMod, rs.z * pixLookupRadiusMod, rs.w * pixLookupRadiusMod ); + } + + // the main obscurance & sample weight storage + float obscuranceSum = 0.0; + float weightSum = 0.0; + + // edge mask for between this and left/right/top/bottom neighbour pixels - not used in quality level 0 so initialize to "no edge" (1 is no edge, 0 is edge) + vec4 edgesLRTB = vec4( 1.0, 1.0, 1.0, 1.0 ); + + // Move center pixel slightly towards camera to avoid imprecision artifacts due to using of 16bit depth buffer; a lot smaller offsets needed when using 32bit floats + pixCenterPos *= u_depthPrecisionOffsetMod; + + if( !adaptiveBase && (qualityLevel >= SSAO_DEPTH_BASED_EDGES_ENABLE_AT_QUALITY_PRESET) ) + { + edgesLRTB = CalculateEdges( pixZ, pixLZ, pixRZ, pixTZ, pixBZ ); + } + + // adds a more high definition sharp effect, which gets blurred out (reuses left/right/top/bottom samples that we used for edge detection) + if( !adaptiveBase && (qualityLevel >= SSAO_DETAIL_AO_ENABLE_AT_QUALITY_PRESET) ) + { + // disable in case of quality level 4 (reference) + if( qualityLevel != 4 ) + { + //approximate neighbouring pixels positions (actually just deltas or "positions - pixCenterPos" ) + vec3 viewspaceDirZNormalized = vec3( pixCenterPos.xy / pixCenterPos.zz, 1.0 ); + vec3 pixLDelta = vec3( -pixelDirRBViewspaceSizeAtCenterZ.x, 0.0, 0.0 ) + viewspaceDirZNormalized * (pixLZ - pixCenterPos.z); // very close approximation of: vec3 pixLPos = NDCToViewspace( normalizedScreenPos + vec2( -u_halfViewportPixelSize.x, 0.0 ), pixLZ ).xyz - pixCenterPos.xyz; + vec3 pixRDelta = vec3( +pixelDirRBViewspaceSizeAtCenterZ.x, 0.0, 0.0 ) + viewspaceDirZNormalized * (pixRZ - pixCenterPos.z); // very close approximation of: vec3 pixRPos = NDCToViewspace( normalizedScreenPos + vec2( +u_halfViewportPixelSize.x, 0.0 ), pixRZ ).xyz - pixCenterPos.xyz; +#if BGFX_SHADER_LANGUAGE_GLSL + vec3 pixTDelta = vec3( 0.0, +pixelDirRBViewspaceSizeAtCenterZ.y, 0.0 ) + viewspaceDirZNormalized * (pixTZ - pixCenterPos.z); // very close approximation of: vec3 pixTPos = NDCToViewspace( normalizedScreenPos + vec2( 0.0, -u_halfViewportPixelSize.y ), pixTZ ).xyz - pixCenterPos.xyz; + vec3 pixBDelta = vec3( 0.0, -pixelDirRBViewspaceSizeAtCenterZ.y, 0.0 ) + viewspaceDirZNormalized * (pixBZ - pixCenterPos.z); // very close approximation of: vec3 pixBPos = NDCToViewspace( normalizedScreenPos + vec2( 0.0, +u_halfViewportPixelSize.y ), pixBZ ).xyz - pixCenterPos.xyz; +#else + vec3 pixTDelta = vec3( 0.0, -pixelDirRBViewspaceSizeAtCenterZ.y, 0.0 ) + viewspaceDirZNormalized * (pixTZ - pixCenterPos.z); // very close approximation of: vec3 pixTPos = NDCToViewspace( normalizedScreenPos + vec2( 0.0, -u_halfViewportPixelSize.y ), pixTZ ).xyz - pixCenterPos.xyz; + vec3 pixBDelta = vec3( 0.0, +pixelDirRBViewspaceSizeAtCenterZ.y, 0.0 ) + viewspaceDirZNormalized * (pixBZ - pixCenterPos.z); // very close approximation of: vec3 pixBPos = NDCToViewspace( normalizedScreenPos + vec2( 0.0, +u_halfViewportPixelSize.y ), pixBZ ).xyz - pixCenterPos.xyz; +#endif + + const float rangeReductionConst = 4.0f; // this is to avoid various artifacts + const float modifiedFalloffCalcMulSq = rangeReductionConst * falloffCalcMulSq; + + vec4 additionalObscurance; + additionalObscurance.x = CalculatePixelObscurance( pixelNormal, pixLDelta, modifiedFalloffCalcMulSq ); + additionalObscurance.y = CalculatePixelObscurance( pixelNormal, pixRDelta, modifiedFalloffCalcMulSq ); + additionalObscurance.z = CalculatePixelObscurance( pixelNormal, pixTDelta, modifiedFalloffCalcMulSq ); + additionalObscurance.w = CalculatePixelObscurance( pixelNormal, pixBDelta, modifiedFalloffCalcMulSq ); + + obscuranceSum += u_detailAOStrength * dot( additionalObscurance, edgesLRTB ); + } + } + + // Sharp normals also create edges - but this adds to the cost as well + if( !adaptiveBase && (qualityLevel >= SSAO_NORMAL_BASED_EDGES_ENABLE_AT_QUALITY_PRESET ) ) + { + vec3 neighbourNormalL = LoadNormal( ivec2(fullResCoord), ivec2( -2, 0 ) ); + vec3 neighbourNormalR = LoadNormal( ivec2(fullResCoord), ivec2( 2, 0 ) ); +#if BGFX_SHADER_LANGUAGE_GLSL + vec3 neighbourNormalT = LoadNormal( ivec2(fullResCoord), ivec2( 0, 2 ) ); + vec3 neighbourNormalB = LoadNormal( ivec2(fullResCoord), ivec2( 0, -2 ) ); +#else + vec3 neighbourNormalT = LoadNormal( ivec2(fullResCoord), ivec2( 0, -2 ) ); + vec3 neighbourNormalB = LoadNormal( ivec2(fullResCoord), ivec2( 0, 2 ) ); +#endif + + const float dotThreshold = SSAO_NORMAL_BASED_EDGES_DOT_THRESHOLD; + + vec4 normalEdgesLRTB; + normalEdgesLRTB.x = saturate( (dot( pixelNormal, neighbourNormalL ) + dotThreshold ) ); + normalEdgesLRTB.y = saturate( (dot( pixelNormal, neighbourNormalR ) + dotThreshold ) ); + normalEdgesLRTB.z = saturate( (dot( pixelNormal, neighbourNormalT ) + dotThreshold ) ); + normalEdgesLRTB.w = saturate( (dot( pixelNormal, neighbourNormalB ) + dotThreshold ) ); + +//#define SSAO_SMOOTHEN_NORMALS // fixes some aliasing artifacts but kills a lot of high detail and adds to the cost - not worth it probably but feel free to play with it +#ifdef SSAO_SMOOTHEN_NORMALS + //neighbourNormalL = LoadNormal( fullResCoord, ivec2( -1, 0 ) ); + //neighbourNormalR = LoadNormal( fullResCoord, ivec2( 1, 0 ) ); + //neighbourNormalT = LoadNormal( fullResCoord, ivec2( 0, -1 ) ); + //neighbourNormalB = LoadNormal( fullResCoord, ivec2( 0, 1 ) ); + pixelNormal += neighbourNormalL * edgesLRTB.x + neighbourNormalR * edgesLRTB.y + neighbourNormalT * edgesLRTB.z + neighbourNormalB * edgesLRTB.w; + pixelNormal = normalize( pixelNormal ); +#endif + + edgesLRTB *= normalEdgesLRTB; + } + + const float globalMipOffset = SSAO_DEPTH_MIPS_GLOBAL_OFFSET; + float mipOffset = ( qualityLevel < SSAO_DEPTH_MIPS_ENABLE_AT_QUALITY_PRESET ) ? ( 0 ) : ( log2( pixLookupRadiusMod ) + globalMipOffset ); + + // Used to tilt the second set of samples so that the disk is effectively rotated by the normal + // effective at removing one set of artifacts, but too expensive for lower quality settings + vec2 normXY = vec2( pixelNormal.x, pixelNormal.y ); + float normXYLength = length( normXY ); + normXY /= vec2( normXYLength, -normXYLength ); + normXYLength *= SSAO_TILT_SAMPLES_AMOUNT; + + const vec3 negViewspaceDir = -normalize( pixCenterPos ); + + // standard, non-adaptive approach + if( (qualityLevel != 3) || adaptiveBase ) + { + // [unroll] // <- doesn't seem to help on any platform, although the compilers seem to unroll anyway if const number of tap used! + for( uint i = 0; i < numberOfTaps; i++ ) + { + SSAOTap( qualityLevel, obscuranceSum, weightSum, int(i), rotScale, pixCenterPos, negViewspaceDir, pixelNormal, normalizedScreenPos, mipOffset, falloffCalcMulSq, 1.0, normXY, normXYLength); + } + } + else // if( qualityLevel == 3 ) adaptive approach + { + // add new ones if needed + vec2 fullResUV = normalizedScreenPos + u_perPassFullResUVOffset.xy; + float importance = texture2DLod(s_importanceMap, fullResUV, 0.0 ).x; + + // this is to normalize SSAO_DETAIL_AO_AMOUNT across all pixel regardless of importance + obscuranceSum *= (SSAO_ADAPTIVE_TAP_BASE_COUNT / float(SSAO_MAX_TAPS)) + (importance * SSAO_ADAPTIVE_TAP_FLEXIBLE_COUNT / float(SSAO_MAX_TAPS)); + + // load existing base values + vec2 baseValues = imageLoad(s_baseSSAO, ivec3( SVPosui, u_passIndex ) ).xy; + weightSum += baseValues.y * (float(SSAO_ADAPTIVE_TAP_BASE_COUNT) * 4.0); + obscuranceSum += (baseValues.x) * weightSum; + + // increase importance around edges + float edgeCount = dot( 1.0-edgesLRTB, vec4( 1.0, 1.0, 1.0, 1.0 ) ); + //importance += edgeCount / (float)SSAO_ADAPTIVE_TAP_FLEXIBLE_COUNT; + + float avgTotalImportance = float(s_loadCounter[0]) * u_loadCounterAvgDiv; + + float importanceLimiter = saturate( u_adaptiveSampleCountLimit / avgTotalImportance ); + importance *= importanceLimiter; + + float additionalSampleCountFlt = SSAO_ADAPTIVE_TAP_FLEXIBLE_COUNT * importance; + + const float blendRange = 3.0; // use 1 to just blend the last one; use larger number to blend over more for a more smooth transition + const float blendRangeInv = 1.0 / blendRange; + + additionalSampleCountFlt += 0.5; + uint additionalSamples = uint( additionalSampleCountFlt ); + uint additionalSamplesTo = min( SSAO_MAX_TAPS, additionalSamples + SSAO_ADAPTIVE_TAP_BASE_COUNT ); + + // additional manual unroll doesn't help unfortunately + LOOP + for( uint i = SSAO_ADAPTIVE_TAP_BASE_COUNT; i < additionalSamplesTo; i++ ) + { + additionalSampleCountFlt -= 1.0f; + float weightMod = saturate(additionalSampleCountFlt * blendRangeInv); // slowly blend in the last few samples + SSAOTap( qualityLevel, obscuranceSum, weightSum, int(i), rotScale, pixCenterPos, negViewspaceDir, pixelNormal, normalizedScreenPos, mipOffset, falloffCalcMulSq, weightMod, normXY, normXYLength); + } + } + + // early out for adaptive base - just output weight (used for the next pass) + if( adaptiveBase ) + { + float obscurance = obscuranceSum / weightSum; + + outShadowTerm = obscurance; + outEdges = vec4(0,0,0,0); + outWeight = weightSum; + return; + } + + // calculate weighted average + float obscurance = obscuranceSum / weightSum; + + // calculate fadeout (1 close, gradient, 0 far) + float fadeOut = saturate( pixCenterPos.z * u_effectFadeOutMul + u_effectFadeOutAdd ); + + // Reduce the SSAO shadowing if we're on the edge to remove artifacts on edges (we don't care for the lower quality one) + if( !adaptiveBase && (qualityLevel >= SSAO_DEPTH_BASED_EDGES_ENABLE_AT_QUALITY_PRESET) ) + { + // float edgeCount = dot( 1.0-edgesLRTB, vec4( 1.0, 1.0, 1.0, 1.0 ) ); + + // when there's more than 2 opposite edges, start fading out the occlusion to reduce aliasing artifacts + float edgeFadeoutFactor = saturate( (1.0 - edgesLRTB.x - edgesLRTB.y) * 0.35) + saturate( (1.0 - edgesLRTB.z - edgesLRTB.w) * 0.35 ); + + // (experimental) if you want to reduce the effect next to any edge + // edgeFadeoutFactor += 0.1 * saturate( dot( 1 - edgesLRTB, vec4( 1, 1, 1, 1 ) ) ); + + fadeOut *= saturate( 1.0 - edgeFadeoutFactor ); + } + + // same as a bove, but a lot more conservative version + // fadeOut *= saturate( dot( edgesLRTB, vec4( 0.9, 0.9, 0.9, 0.9 ) ) - 2.6 ); + + // strength + obscurance = u_effectShadowStrength * obscurance; + + // clamp + obscurance = min( obscurance, u_effectShadowClamp ); + + // fadeout + obscurance *= fadeOut; + + // conceptually switch to occlusion with the meaning being visibility (grows with visibility, occlusion == 1 implies full visibility), + // to be in line with what is more commonly used. + float occlusion = 1.0 - obscurance; + + // modify the gradient + // note: this cannot be moved to a later pass because of loss of precision after storing in the render target + occlusion = pow( saturate( occlusion ), u_effectShadowPow ); + + // outputs! + outShadowTerm = occlusion; // Our final 'occlusion' term (0 means fully occluded, 1 means fully lit) + outEdges = edgesLRTB; // These are used to prevent blurring across edges, 1 means no edge, 0 means edge, 0.5 means half way there, etc. + outWeight = weightSum; +} + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy) + uvec2(u_rect.xy); + if (all(lessThan(dtID.xy, u_rect.zw) ) ) + { + float outShadowTerm; + float outWeight; + vec4 outEdges; + GenerateSSAOShadowsInternal( outShadowTerm, outEdges, outWeight, vec2(dtID.xy), ASSAO_QUALITY, ASSAO_ADAPTIVE_BASE); + vec2 out0; + out0.x = outShadowTerm; + + if ( ASSAO_ADAPTIVE_BASE ) + { + out0.y = outWeight / (float(SSAO_ADAPTIVE_TAP_BASE_COUNT) * 4.0); //0.0; //frac(outWeight / 6.0);// / (float)(SSAO_MAX_TAPS * 4.0); + } + else + { + if (ASSAO_QUALITY == 0) + out0.y = PackEdges( vec4( 1, 1, 1, 1 ) ); // no edges in low quality + else + out0.y = PackEdges( outEdges ); + } + imageStore(s_target, ivec3(dtID.xy, u_layer), out0.xyyy); + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q0.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q0.sc new file mode 100644 index 00000000000..1652499278c --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q0.sc @@ -0,0 +1,9 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#define ASSAO_QUALITY 0 +#define ASSAO_ADAPTIVE_BASE false + +#include "cs_assao_generate_q.sh"
\ No newline at end of file diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q1.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q1.sc new file mode 100644 index 00000000000..942a482853b --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q1.sc @@ -0,0 +1,9 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#define ASSAO_QUALITY 1 +#define ASSAO_ADAPTIVE_BASE false + +#include "cs_assao_generate_q.sh"
\ No newline at end of file diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q2.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q2.sc new file mode 100644 index 00000000000..2e62c45d29d --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q2.sc @@ -0,0 +1,9 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#define ASSAO_QUALITY 2 +#define ASSAO_ADAPTIVE_BASE false + +#include "cs_assao_generate_q.sh"
\ No newline at end of file diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q3.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q3.sc new file mode 100644 index 00000000000..b53352e348c --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q3.sc @@ -0,0 +1,9 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#define ASSAO_QUALITY 3 +#define ASSAO_ADAPTIVE_BASE false + +#include "cs_assao_generate_q.sh"
\ No newline at end of file diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q3base.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q3base.sc new file mode 100644 index 00000000000..0b5c4f98eaf --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_generate_q3base.sc @@ -0,0 +1,9 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#define ASSAO_QUALITY 3 +#define ASSAO_ADAPTIVE_BASE true + +#include "cs_assao_generate_q.sh"
\ No newline at end of file diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_load_counter_clear.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_load_counter_clear.sc new file mode 100644 index 00000000000..ef7c1bfac80 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_load_counter_clear.sc @@ -0,0 +1,15 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +BUFFER_WR(s_loadCounter, uint, 0); + +NUM_THREADS(1, 1, 1) +void main() +{ + s_loadCounter[0] = 0; +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_apply.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_apply.sc new file mode 100644 index 00000000000..af55615dcec --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_apply.sc @@ -0,0 +1,29 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_WR(s_target, r8, 0); +SAMPLER2DARRAY(s_finalSSAO, 1); + +// edge-ignorant blur & apply (for the lowest quality level 0) +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy) + uvec2(u_rect.xy); + if (all(lessThan(dtID.xy, u_rect.zw) ) ) + { + vec2 inUV = (dtID.xy+vec2(0.5,0.5)) * u_viewportPixelSize; + float a = texture2DArrayLod(s_finalSSAO, vec3( inUV.xy, 0 ), 0.0 ).x; + float b = texture2DArrayLod(s_finalSSAO, vec3( inUV.xy, 1 ), 0.0 ).x; + float c = texture2DArrayLod(s_finalSSAO, vec3( inUV.xy, 2 ), 0.0 ).x; + float d = texture2DArrayLod(s_finalSSAO, vec3( inUV.xy, 3 ), 0.0 ).x; + float avg = (a+b+c+d) * 0.25; + avg = pow(avg,1.0/2.2); + imageStore(s_target, ivec2(dtID.xy), avg.xxxx); + } +} + diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_blur.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_blur.sc new file mode 100644 index 00000000000..6c41d5d70cc --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_blur.sc @@ -0,0 +1,37 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_ARRAY_WR(s_target, rg8, 0); +SAMPLER2DARRAY(s_blurInput, 1); + +// edge-ignorant blur in x and y directions, 9 pixels touched (for the lowest quality level 0) +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy) + uvec2(u_rect.xy); + if (all(lessThan(dtID.xy, u_rect.zw) ) ) + { + vec2 inUV = (dtID.xy+vec2(0.5,0.5)) * u_halfViewportPixelSize; + vec2 halfPixel = u_halfViewportPixelSize * 0.5f; + +#if BGFX_SHADER_LANGUAGE_GLSL + halfPixel.y = -halfPixel.y; +#endif + + vec2 centre = texture2DArrayLod(s_blurInput, vec3(inUV, 0.0), 0.0 ).xy; + + vec4 vals; + vals.x = texture2DArrayLod(s_blurInput, vec3(inUV + vec2( -halfPixel.x * 3, -halfPixel.y ),0.0) , 0.0 ).x; + vals.y = texture2DArrayLod(s_blurInput, vec3(inUV + vec2( +halfPixel.x, -halfPixel.y * 3 ),0.0) , 0.0 ).x; + vals.z = texture2DArrayLod(s_blurInput, vec3(inUV + vec2( -halfPixel.x, +halfPixel.y * 3 ),0.0) , 0.0 ).x; + vals.w = texture2DArrayLod(s_blurInput, vec3(inUV + vec2( +halfPixel.x * 3, +halfPixel.y ),0.0) , 0.0 ).x; + + imageStore(s_target, ivec3(dtID.xy,u_layer), vec4(dot( vals, 0.2.xxxx ) + centre.x * 0.2, centre.y, 0.0, 0.0)); + } +} + diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_half_apply.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_half_apply.sc new file mode 100644 index 00000000000..5026b489651 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_non_smart_half_apply.sc @@ -0,0 +1,26 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_WR(s_target, r8, 0); +SAMPLER2DARRAY(s_finalSSAO, 1); + +// edge-ignorant blur & apply, skipping half pixels in checkerboard pattern (for the Lowest quality level 0 and Settings::SkipHalfPixelsOnLowQualityLevel == true ) +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy) + uvec2(u_rect.xy); + if (all(lessThan(dtID.xy, u_rect.zw) ) ) + { + vec2 inUV = (dtID.xy+vec2(0.5,0.5)) * u_viewportPixelSize; + float a = texture2DArrayLod(s_finalSSAO, vec3( inUV.xy, 0 ), 0.0 ).x; + float d = texture2DArrayLod(s_finalSSAO, vec3( inUV.xy, 3 ), 0.0 ).x; + float avg = (a+d) * 0.5; + avg = pow(avg,1.0/2.2); + imageStore(s_target, ivec2(dtID.xy), avg.xxxx); + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_postprocess_importance_map_a.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_postprocess_importance_map_a.sc new file mode 100644 index 00000000000..c11eb99cac9 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_postprocess_importance_map_a.sc @@ -0,0 +1,47 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_WR(s_target, r8, 0); +SAMPLER2D(s_importanceMap, 1); + +// Shaders below only needed for adaptive quality level + +CONST(float cSmoothenImportance) = 1.0; + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = imageSize(s_target).xy; + if (all(lessThan(dtID.xy, dim) ) ) + { + uvec2 pos = uvec2(dtID.xy); + vec2 inUV = (dtID.xy+vec2(0.5,0.5)) * u_quarterResPixelSize; + + float centre = texture2DLod(s_importanceMap, inUV, 0.0 ).x; + //return centre; + + vec2 halfPixel = u_quarterResPixelSize * 0.5f; + +#if BGFX_SHADER_LANGUAGE_GLSL + halfPixel.y = -halfPixel.y; +#endif + vec4 vals; + vals.x = texture2DLod(s_importanceMap, inUV + vec2( -halfPixel.x * 3, -halfPixel.y ), 0.0 ).x; + vals.y = texture2DLod(s_importanceMap, inUV + vec2( +halfPixel.x, -halfPixel.y * 3 ), 0.0 ).x; + vals.z = texture2DLod(s_importanceMap, inUV + vec2( +halfPixel.x * 3, +halfPixel.y ), 0.0 ).x; + vals.w = texture2DLod(s_importanceMap, inUV + vec2( -halfPixel.x, +halfPixel.y * 3 ), 0.0 ).x; + + float avgVal = dot( vals, vec4( 0.25, 0.25, 0.25, 0.25 ) ); + vals.xy = max( vals.xy, vals.zw ); + float maxVal = max( centre, max( vals.x, vals.y ) ); + + imageStore(s_target, ivec2(dtID.xy), mix( maxVal, avgVal, cSmoothenImportance ).xxxx); + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_postprocess_importance_map_b.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_postprocess_importance_map_b.sc new file mode 100644 index 00000000000..8696292d1f3 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_postprocess_importance_map_b.sc @@ -0,0 +1,55 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_WR(s_target, r8, 0); +SAMPLER2D(s_importanceMap, 1); +BUFFER_RW(s_loadCounter, uint, 2); + +CONST(float cSmoothenImportance) = 1.0; + +// Shaders below only needed for adaptive quality level +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = imageSize(s_target).xy; + if (all(lessThan(dtID.xy, dim) ) ) + { + vec2 inUV = (dtID.xy+vec2(0.5,0.5)) * u_quarterResPixelSize; + + float centre = texture2DLod(s_importanceMap, inUV, 0.0 ).x; + //return centre; + + vec2 halfPixel = u_quarterResPixelSize * 0.5f; + + vec4 vals; + vals.x = texture2DLod(s_importanceMap, inUV + vec2( -halfPixel.x, -halfPixel.y * 3 ), 0.0 ).x; + vals.y = texture2DLod(s_importanceMap, inUV + vec2( +halfPixel.x * 3, -halfPixel.y ), 0.0 ).x; + vals.z = texture2DLod(s_importanceMap, inUV + vec2( +halfPixel.x, +halfPixel.y * 3 ), 0.0 ).x; + vals.w = texture2DLod(s_importanceMap, inUV + vec2( -halfPixel.x * 3, +halfPixel.y ), 0.0 ).x; + + float avgVal = dot( vals, vec4( 0.25, 0.25, 0.25, 0.25 ) ); + vals.xy = max( vals.xy, vals.zw ); + float maxVal = max( centre, max( vals.x, vals.y ) ); + + float retVal = mix( maxVal, avgVal, cSmoothenImportance ); + + // sum the average; to avoid overflowing we assume max AO resolution is not bigger than 16384x16384; so quarter res (used here) will be 4096x4096, which leaves us with 8 bits per pixel + uint sum = uint(saturate(retVal) * 255.0 + 0.5); + + // save every 9th to avoid InterlockedAdd congestion - since we're blurring, this is good enough; compensated by multiplying LoadCounterAvgDiv by 9 +#if BGFX_SHADER_LANGUAGE_GLSL + if( ((dtID.x % 3) + ((dim.y-1-dtID.y) % 3)) == 0 ) +#else + if( ((dtID.x % 3) + (dtID.y % 3)) == 0 ) +#endif + atomicAdd(s_loadCounter[0], sum ); + imageStore(s_target, ivec2(dtID.xy), retVal.xxxx); + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depth_mip.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depth_mip.sc new file mode 100644 index 00000000000..c033bc799f5 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depth_mip.sc @@ -0,0 +1,103 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_RO(s_viewspaceDepthSource0, r16f, 0); +IMAGE2D_RO(s_viewspaceDepthSource1, r16f, 1); +IMAGE2D_RO(s_viewspaceDepthSource2, r16f, 2); +IMAGE2D_RO(s_viewspaceDepthSource3, r16f, 3); + +IMAGE2D_WR(s_target0, r16f, 4); +IMAGE2D_WR(s_target1, r16f, 5); +IMAGE2D_WR(s_target2, r16f, 6); +IMAGE2D_WR(s_target3, r16f, 7); + +// calculate effect radius and fit our screen sampling pattern inside it +void CalculateRadiusParameters( const float pixCenterLength, const vec2 pixelDirRBViewspaceSizeAtCenterZ, out float pixLookupRadiusMod, out float effectRadius, out float falloffCalcMulSq ) +{ + effectRadius = u_effectRadius; + + // leaving this out for performance reasons: use something similar if radius needs to scale based on distance + //effectRadius *= pow( pixCenterLength, u_radiusDistanceScalingFunctionPow); + + // when too close, on-screen sampling disk will grow beyond screen size; limit this to avoid closeup temporal artifacts + const float tooCloseLimitMod = saturate( pixCenterLength * u_effectSamplingRadiusNearLimitRec ) * 0.8 + 0.2; + + effectRadius *= tooCloseLimitMod; + + // 0.85 is to reduce the radius to allow for more samples on a slope to still stay within influence + pixLookupRadiusMod = (0.85 * effectRadius) / pixelDirRBViewspaceSizeAtCenterZ.x; + + // used to calculate falloff (both for AO samples and per-sample weights) + falloffCalcMulSq= -1.0f / (effectRadius*effectRadius); +} + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = uvec2(u_rect.zw); + if (all(lessThan(dtID.xy, dim) ) ) + { + ivec2 baseCoords = ivec2(dtID.xy) * 2; + + vec4 depthsArr[4]; + float depthsOutArr[4]; + + // how to Gather a specific mip level? + depthsArr[0].x = imageLoad(s_viewspaceDepthSource0, baseCoords + ivec2( 0, 0 )).x ; + depthsArr[0].y = imageLoad(s_viewspaceDepthSource0, baseCoords + ivec2( 1, 0 )).x ; + depthsArr[0].z = imageLoad(s_viewspaceDepthSource0, baseCoords + ivec2( 0, 1 )).x ; + depthsArr[0].w = imageLoad(s_viewspaceDepthSource0, baseCoords + ivec2( 1, 1 )).x ; + depthsArr[1].x = imageLoad(s_viewspaceDepthSource1, baseCoords + ivec2( 0, 0 )).x; + depthsArr[1].y = imageLoad(s_viewspaceDepthSource1, baseCoords + ivec2( 1, 0 )).x; + depthsArr[1].z = imageLoad(s_viewspaceDepthSource1, baseCoords + ivec2( 0, 1 )).x; + depthsArr[1].w = imageLoad(s_viewspaceDepthSource1, baseCoords + ivec2( 1, 1 )).x; + depthsArr[2].x = imageLoad(s_viewspaceDepthSource2, baseCoords + ivec2( 0, 0 )).x; + depthsArr[2].y = imageLoad(s_viewspaceDepthSource2, baseCoords + ivec2( 1, 0 )).x; + depthsArr[2].z = imageLoad(s_viewspaceDepthSource2, baseCoords + ivec2( 0, 1 )).x; + depthsArr[2].w = imageLoad(s_viewspaceDepthSource2, baseCoords + ivec2( 1, 1 )).x; + depthsArr[3].x = imageLoad(s_viewspaceDepthSource3, baseCoords + ivec2( 0, 0 )).x; + depthsArr[3].y = imageLoad(s_viewspaceDepthSource3, baseCoords + ivec2( 1, 0 )).x; + depthsArr[3].z = imageLoad(s_viewspaceDepthSource3, baseCoords + ivec2( 0, 1 )).x; + depthsArr[3].w = imageLoad(s_viewspaceDepthSource3, baseCoords + ivec2( 1, 1 )).x; + + const uvec2 SVPosui = uvec2( dtID.xy ); + const uint pseudoRandomA = (SVPosui.x ) + 2 * (SVPosui.y ); + + float dummyUnused1; + float dummyUnused2; + float falloffCalcMulSq, falloffCalcAdd; + + UNROLL + for( int i = 0; i < 4; i++ ) + { + vec4 depths = depthsArr[i]; + float closest = min( min( depths.x, depths.y ), min( depths.z, depths.w ) ); + + CalculateRadiusParameters( abs( closest ), vec2(1.0,1.0), dummyUnused1, dummyUnused2, falloffCalcMulSq ); + + vec4 dists = depths - closest.xxxx; + + vec4 weights = saturate( dists * dists * falloffCalcMulSq + 1.0 ); + + float smartAvg = dot( weights, depths ) / dot( weights, vec4( 1.0, 1.0, 1.0, 1.0 ) ); + + const uint pseudoRandomIndex = ( pseudoRandomA + i ) % 4; + + //depthsOutArr[i] = closest; + //depthsOutArr[i] = depths[ pseudoRandomIndex ]; + depthsOutArr[i] = smartAvg; + } + + imageStore(s_target0, ivec2(dtID.xy), depthsOutArr[0].xxxx); + imageStore(s_target1, ivec2(dtID.xy), depthsOutArr[1].xxxx); + imageStore(s_target2, ivec2(dtID.xy), depthsOutArr[2].xxxx); + imageStore(s_target3, ivec2(dtID.xy), depthsOutArr[3].xxxx); + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths.sc new file mode 100644 index 00000000000..0b43c0e11ca --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths.sc @@ -0,0 +1,58 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +SAMPLER2D(s_depthSource, 0); + +IMAGE2D_WR(s_target0, r16f, 1); +IMAGE2D_WR(s_target1, r16f, 2); +IMAGE2D_WR(s_target2, r16f, 3); +IMAGE2D_WR(s_target3, r16f, 4); + +float ScreenSpaceToViewSpaceDepth( float screenDepth ) +{ + float depthLinearizeMul = u_depthUnpackConsts.x; + float depthLinearizeAdd = u_depthUnpackConsts.y; + + // Optimised version of "-cameraClipNear / (cameraClipFar - projDepth * (cameraClipFar - cameraClipNear)) * cameraClipFar" + + // Set your depthLinearizeMul and depthLinearizeAdd to: + // depthLinearizeMul = ( cameraClipFar * cameraClipNear) / ( cameraClipFar - cameraClipNear ); + // depthLinearizeAdd = cameraClipFar / ( cameraClipFar - cameraClipNear ); + + return depthLinearizeMul / ( depthLinearizeAdd - screenDepth ); +} + + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = imageSize(s_target0).xy; + if (all(lessThan(dtID.xy, dim) ) ) + { + ivec2 baseCoord = ivec2(dtID.xy) * 2; +#if BGFX_SHADER_LANGUAGE_GLSL + float a = texelFetch(s_depthSource, baseCoord + ivec2( 0, 1 ), 0).x; + float b = texelFetch(s_depthSource, baseCoord + ivec2( 1, 1 ), 0).x; + float c = texelFetch(s_depthSource, baseCoord + ivec2( 0, 0 ), 0).x; + float d = texelFetch(s_depthSource, baseCoord + ivec2( 1, 0 ), 0).x; +#else + float a = texelFetch(s_depthSource, baseCoord + ivec2( 0, 0 ), 0).x; + float b = texelFetch(s_depthSource, baseCoord + ivec2( 1, 0 ), 0).x; + float c = texelFetch(s_depthSource, baseCoord + ivec2( 0, 1 ), 0).x; + float d = texelFetch(s_depthSource, baseCoord + ivec2( 1, 1 ), 0).x; +#endif + + imageStore(s_target0, ivec2(dtID.xy), ScreenSpaceToViewSpaceDepth( a ).xxxx); + imageStore(s_target1, ivec2(dtID.xy), ScreenSpaceToViewSpaceDepth( b ).xxxx); + imageStore(s_target2, ivec2(dtID.xy), ScreenSpaceToViewSpaceDepth( c ).xxxx); + imageStore(s_target3, ivec2(dtID.xy), ScreenSpaceToViewSpaceDepth( d ).xxxx); + } +} + diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_and_normals.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_and_normals.sc new file mode 100644 index 00000000000..836a05439ac --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_and_normals.sc @@ -0,0 +1,192 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +SAMPLER2D(s_depthSource, 0); + +IMAGE2D_WR(s_target0, r16f, 1); +IMAGE2D_WR(s_target1, r16f, 2); +IMAGE2D_WR(s_target2, r16f, 3); +IMAGE2D_WR(s_target3, r16f, 4); +IMAGE2D_WR(s_normalsOutputUAV, rgba8, 5); + +float ScreenSpaceToViewSpaceDepth( float screenDepth ) +{ + float depthLinearizeMul = u_depthUnpackConsts.x; + float depthLinearizeAdd = u_depthUnpackConsts.y; + + // Optimised version of "-cameraClipNear / (cameraClipFar - projDepth * (cameraClipFar - cameraClipNear)) * cameraClipFar" + + // Set your depthLinearizeMul and depthLinearizeAdd to: + // depthLinearizeMul = ( cameraClipFar * cameraClipNear) / ( cameraClipFar - cameraClipNear ); + // depthLinearizeAdd = cameraClipFar / ( cameraClipFar - cameraClipNear ); + + return depthLinearizeMul / ( depthLinearizeAdd - screenDepth ); +} + +vec3 NDCToViewspace( vec2 pos, float viewspaceDepth ) +{ + vec3 ret; + + ret.xy = (u_ndcToViewMul * pos.xy + u_ndcToViewAdd) * viewspaceDepth; + + ret.z = viewspaceDepth; + + return ret; +} + +vec4 CalculateEdges( const float centerZ, const float leftZ, const float rightZ, const float topZ, const float bottomZ ) +{ + // slope-sensitive depth-based edge detection + vec4 edgesLRTB = vec4( leftZ, rightZ, topZ, bottomZ ) - centerZ; + vec4 edgesLRTBSlopeAdjusted = edgesLRTB + edgesLRTB.yxwz; + edgesLRTB = min( abs( edgesLRTB ), abs( edgesLRTBSlopeAdjusted ) ); + return saturate( ( 1.3 - edgesLRTB / (centerZ * 0.040) ) ); + + // cheaper version but has artifacts + // edgesLRTB = abs( vec4( leftZ, rightZ, topZ, bottomZ ) - centerZ; ); + // return saturate( ( 1.3 - edgesLRTB / (pixZ * 0.06 + 0.1) ) ); +} + +vec3 CalculateNormal( const vec4 edgesLRTB, vec3 pixCenterPos, vec3 pixLPos, vec3 pixRPos, vec3 pixTPos, vec3 pixBPos ) +{ + // Get this pixel's viewspace normal + vec4 acceptedNormals = vec4( edgesLRTB.x*edgesLRTB.z, edgesLRTB.z*edgesLRTB.y, edgesLRTB.y*edgesLRTB.w, edgesLRTB.w*edgesLRTB.x ); + + pixLPos = normalize(pixLPos - pixCenterPos); + pixRPos = normalize(pixRPos - pixCenterPos); + pixTPos = normalize(pixTPos - pixCenterPos); + pixBPos = normalize(pixBPos - pixCenterPos); + + vec3 pixelNormal = vec3( 0, 0, -0.0005 ); + pixelNormal += ( acceptedNormals.x ) * cross( pixLPos, pixTPos ); + pixelNormal += ( acceptedNormals.y ) * cross( pixTPos, pixRPos ); + pixelNormal += ( acceptedNormals.z ) * cross( pixRPos, pixBPos ); + pixelNormal += ( acceptedNormals.w ) * cross( pixBPos, pixLPos ); + pixelNormal = normalize( pixelNormal ); + + return pixelNormal; +} + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = imageSize(s_target0).xy; + if (all(lessThan(dtID.xy, dim) ) ) + { + ivec2 baseCoords = ivec2(dtID.xy) * 2; +#if BGFX_SHADER_LANGUAGE_GLSL + vec2 upperLeftUV = (vec2(dtID.xy) + vec2(0.25,0.75)) * u_viewport2xPixelSize; +#else + vec2 upperLeftUV = (vec2(dtID.xy) + vec2(0.25,0.25)) * u_viewport2xPixelSize; +#endif + + ivec2 baseCoord = ivec2(dtID.xy) * 2; +#if BGFX_SHADER_LANGUAGE_GLSL + float z0 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 1 ) ).x ); + float z1 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 1 ) ).x ); + float z2 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 0 ) ).x ); + float z3 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 0 ) ).x ); +#else + float z0 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 0 ) ).x ); + float z1 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 0 ) ).x ); + float z2 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 1 ) ).x ); + float z3 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 1 ) ).x ); +#endif + imageStore(s_target0, ivec2(dtID.xy), z0.xxxx ); + imageStore(s_target1, ivec2(dtID.xy), z1.xxxx ); + imageStore(s_target2, ivec2(dtID.xy), z2.xxxx ); + imageStore(s_target3, ivec2(dtID.xy), z3.xxxx ); + + float pixZs[4][4]; + + // middle 4 + pixZs[1][1] = z0; + pixZs[2][1] = z1; + pixZs[1][2] = z2; + pixZs[2][2] = z3; + +#if BGFX_SHADER_LANGUAGE_GLSL + // left 2 + pixZs[0][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, 0 ) ).x ); + pixZs[0][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, -1 ) ).x ); + + // right 2 + pixZs[3][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, 0 ) ).x ); + pixZs[3][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, -1 ) ).x ); + + // top 2 + pixZs[1][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, 1 ) ).x ); + pixZs[2][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, 1 ) ).x ); + + // bottom 2 + pixZs[1][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, -2 ) ).x ); + pixZs[2][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, -2 ) ).x ); +#else + // left 2 + pixZs[0][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, 0 ) ).x ); + pixZs[0][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, 1 ) ).x ); + // right 2 + pixZs[3][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, 0 ) ).x ); + pixZs[3][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, 1 ) ).x ); + // top 2 + pixZs[1][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, -1 ) ).x ); + pixZs[2][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, -1 ) ).x ); + // bottom 2 + pixZs[1][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, 2 ) ).x ); + pixZs[2][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, 2 ) ).x ); +#endif + + vec4 edges0 = CalculateEdges( pixZs[1][1], pixZs[0][1], pixZs[2][1], pixZs[1][0], pixZs[1][2] ); + vec4 edges1 = CalculateEdges( pixZs[2][1], pixZs[1][1], pixZs[3][1], pixZs[2][0], pixZs[2][2] ); + vec4 edges2 = CalculateEdges( pixZs[1][2], pixZs[0][2], pixZs[2][2], pixZs[1][1], pixZs[1][3] ); + vec4 edges3 = CalculateEdges( pixZs[2][2], pixZs[1][2], pixZs[3][2], pixZs[2][1], pixZs[2][3] ); + + vec2 viewportPixelSize = u_viewportPixelSize; +#if BGFX_SHADER_LANGUAGE_GLSL + viewportPixelSize.y = -viewportPixelSize.y; +#endif + + vec3 pixPos[4][4]; + // middle 4 + pixPos[1][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, 0.0 ), pixZs[1][1] ); + pixPos[2][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, 0.0 ), pixZs[2][1] ); + pixPos[1][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, 1.0 ), pixZs[1][2] ); + pixPos[2][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, 1.0 ), pixZs[2][2] ); + // left 2 + pixPos[0][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( -1.0, 0.0), pixZs[0][1] ); + pixPos[0][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( -1.0, 1.0), pixZs[0][2] ); + // right 2 + pixPos[3][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 2.0, 0.0), pixZs[3][1] ); + pixPos[3][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 2.0, 1.0), pixZs[3][2] ); + // top 2 + pixPos[1][0] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, -1.0 ), pixZs[1][0] ); + pixPos[2][0] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, -1.0 ), pixZs[2][0] ); + // bottom 2 + pixPos[1][3] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, 2.0 ), pixZs[1][3] ); + pixPos[2][3] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, 2.0 ), pixZs[2][3] ); + + vec3 norm0 = CalculateNormal( edges0, pixPos[1][1], pixPos[0][1], pixPos[2][1], pixPos[1][0], pixPos[1][2] ); + vec3 norm1 = CalculateNormal( edges1, pixPos[2][1], pixPos[1][1], pixPos[3][1], pixPos[2][0], pixPos[2][2] ); + vec3 norm2 = CalculateNormal( edges2, pixPos[1][2], pixPos[0][2], pixPos[2][2], pixPos[1][1], pixPos[1][3] ); + vec3 norm3 = CalculateNormal( edges3, pixPos[2][2], pixPos[1][2], pixPos[3][2], pixPos[2][1], pixPos[2][3] ); + +#if BGFX_SHADER_LANGUAGE_GLSL + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 0, 1 ), vec4( norm0 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 1, 1 ), vec4( norm1 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 0, 0 ), vec4( norm2 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 1, 0 ), vec4( norm3 * 0.5 + 0.5, 0.0 )); +#else + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 0, 0 ), vec4( norm0 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 1, 0 ), vec4( norm1 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 0, 1 ), vec4( norm2 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 1, 1 ), vec4( norm3 * 0.5 + 0.5, 0.0 )); +#endif + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_and_normals_half.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_and_normals_half.sc new file mode 100644 index 00000000000..279de7191bf --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_and_normals_half.sc @@ -0,0 +1,188 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +SAMPLER2D(s_depthSource, 0); + +IMAGE2D_WR(s_target0, r16f, 1); +IMAGE2D_WR(s_target1, r16f, 2); +IMAGE2D_WR(s_normalsOutputUAV, rgba8, 5); + +float ScreenSpaceToViewSpaceDepth( float screenDepth ) +{ + float depthLinearizeMul = u_depthUnpackConsts.x; + float depthLinearizeAdd = u_depthUnpackConsts.y; + + // Optimised version of "-cameraClipNear / (cameraClipFar - projDepth * (cameraClipFar - cameraClipNear)) * cameraClipFar" + + // Set your depthLinearizeMul and depthLinearizeAdd to: + // depthLinearizeMul = ( cameraClipFar * cameraClipNear) / ( cameraClipFar - cameraClipNear ); + // depthLinearizeAdd = cameraClipFar / ( cameraClipFar - cameraClipNear ); + + return depthLinearizeMul / ( depthLinearizeAdd - screenDepth ); +} + +vec3 NDCToViewspace( vec2 pos, float viewspaceDepth ) +{ + vec3 ret; + + ret.xy = (u_ndcToViewMul * pos.xy + u_ndcToViewAdd) * viewspaceDepth; + ret.z = viewspaceDepth; + + return ret; +} + +vec4 CalculateEdges( const float centerZ, const float leftZ, const float rightZ, const float topZ, const float bottomZ ) +{ + // slope-sensitive depth-based edge detection + vec4 edgesLRTB = vec4( leftZ, rightZ, topZ, bottomZ ) - centerZ; + vec4 edgesLRTBSlopeAdjusted = edgesLRTB + edgesLRTB.yxwz; + edgesLRTB = min( abs( edgesLRTB ), abs( edgesLRTBSlopeAdjusted ) ); + return saturate( ( 1.3 - edgesLRTB / (centerZ * 0.040) ) ); + + // cheaper version but has artifacts + // edgesLRTB = abs( vec4( leftZ, rightZ, topZ, bottomZ ) - centerZ; ); + // return saturate( ( 1.3 - edgesLRTB / (pixZ * 0.06 + 0.1) ) ); +} + + +vec3 CalculateNormal( const vec4 edgesLRTB, vec3 pixCenterPos, vec3 pixLPos, vec3 pixRPos, vec3 pixTPos, vec3 pixBPos ) +{ + // Get this pixel's viewspace normal + vec4 acceptedNormals = vec4( edgesLRTB.x*edgesLRTB.z, edgesLRTB.z*edgesLRTB.y, edgesLRTB.y*edgesLRTB.w, edgesLRTB.w*edgesLRTB.x ); + + pixLPos = normalize(pixLPos - pixCenterPos); + pixRPos = normalize(pixRPos - pixCenterPos); + pixTPos = normalize(pixTPos - pixCenterPos); + pixBPos = normalize(pixBPos - pixCenterPos); + + vec3 pixelNormal = vec3( 0, 0, -0.0005 ); + pixelNormal += ( acceptedNormals.x ) * cross( pixLPos, pixTPos ); + pixelNormal += ( acceptedNormals.y ) * cross( pixTPos, pixRPos ); + pixelNormal += ( acceptedNormals.z ) * cross( pixRPos, pixBPos ); + pixelNormal += ( acceptedNormals.w ) * cross( pixBPos, pixLPos ); + pixelNormal = normalize( pixelNormal ); + + return pixelNormal; +} + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = imageSize(s_target0).xy; + if (all(lessThan(dtID.xy, dim) ) ) + { + ivec2 baseCoords = ivec2(dtID.xy) * 2; +#if BGFX_SHADER_LANGUAGE_GLSL + vec2 upperLeftUV = (vec2(dtID.xy) + vec2(0.25,0.75)) * u_viewport2xPixelSize; +#else + vec2 upperLeftUV = (vec2(dtID.xy) + vec2(0.25,0.25)) * u_viewport2xPixelSize; +#endif + + ivec2 baseCoord = ivec2(dtID.xy) * 2; +#if BGFX_SHADER_LANGUAGE_GLSL + float z0 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 1 ) ).x ); + float z1 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 1 ) ).x ); + float z2 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 0 ) ).x ); + float z3 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 0 ) ).x ); +#else + float z0 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 0 ) ).x ); + float z1 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 0 ) ).x ); + float z2 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 0, 1 ) ).x ); + float z3 = ScreenSpaceToViewSpaceDepth( texelFetchOffset(s_depthSource, baseCoord, 0, ivec2( 1, 1 ) ).x ); +#endif + + imageStore(s_target0, ivec2(dtID.xy), z0.xxxx ); + imageStore(s_target1, ivec2(dtID.xy), z3.xxxx ); + + float pixZs[4][4]; + + // middle 4 + pixZs[1][1] = z0; + pixZs[2][1] = z1; + pixZs[1][2] = z2; + pixZs[2][2] = z3; +#if BGFX_SHADER_LANGUAGE_GLSL + // left 2 + pixZs[0][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, 0 ) ).x ); + pixZs[0][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, -1 ) ).x ); + + // right 2 + pixZs[3][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, 0 ) ).x ); + pixZs[3][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, -1 ) ).x ); + + // top 2 + pixZs[1][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, 1 ) ).x ); + pixZs[2][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, 1 ) ).x ); + + // bottom 2 + pixZs[1][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, -2 ) ).x ); + pixZs[2][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, -2 ) ).x ); +#else + // left 2 + pixZs[0][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, 0 ) ).x ); + pixZs[0][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( -1, 1 ) ).x ); + + // right 2 + pixZs[3][1] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, 0 ) ).x ); + pixZs[3][2] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 2, 1 ) ).x ); + + // top 2 + pixZs[1][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, -1 ) ).x ); + pixZs[2][0] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, -1 ) ).x ); + + // bottom 2 + pixZs[1][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 0, 2 ) ).x ); + pixZs[2][3] = ScreenSpaceToViewSpaceDepth( texture2DLodOffset(s_depthSource, upperLeftUV, 0.0, ivec2( 1, 2 ) ).x ); +#endif + + vec4 edges0 = CalculateEdges( pixZs[1][1], pixZs[0][1], pixZs[2][1], pixZs[1][0], pixZs[1][2] ); + vec4 edges1 = CalculateEdges( pixZs[2][1], pixZs[1][1], pixZs[3][1], pixZs[2][0], pixZs[2][2] ); + vec4 edges2 = CalculateEdges( pixZs[1][2], pixZs[0][2], pixZs[2][2], pixZs[1][1], pixZs[1][3] ); + vec4 edges3 = CalculateEdges( pixZs[2][2], pixZs[1][2], pixZs[3][2], pixZs[2][1], pixZs[2][3] ); + + vec2 viewportPixelSize = u_viewportPixelSize; +#if BGFX_SHADER_LANGUAGE_GLSL + viewportPixelSize.y = -viewportPixelSize.y; +#endif + + vec3 pixPos[4][4]; + // there is probably a way to optimize the math below; however no approximation will work, has to be precise. + + // middle 4 + pixPos[1][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, 0.0 ), pixZs[1][1] ); + pixPos[2][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, 0.0 ), pixZs[2][1] ); + pixPos[1][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, 1.0 ), pixZs[1][2] ); + pixPos[2][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, 1.0 ), pixZs[2][2] ); + + // left 2 + pixPos[0][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( -1.0, 0.0), pixZs[0][1] ); + //pixPos[0][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( -1.0, 1.0), pixZs[0][2] ); + // right 2 + //pixPos[3][1] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 2.0, 0.0), pixZs[3][1] ); + pixPos[3][2] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 2.0, 1.0), pixZs[3][2] ); + // top 2 + pixPos[1][0] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, -1.0 ), pixZs[1][0] ); + //pixPos[2][0] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, -1.0 ), pixZs[2][0] ); + // bottom 2 + //pixPos[1][3] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 0.0, 2.0 ), pixZs[1][3] ); + pixPos[2][3] = NDCToViewspace( upperLeftUV + viewportPixelSize * vec2( 1.0, 2.0 ), pixZs[2][3] ); + + vec3 norm0 = CalculateNormal( edges0, pixPos[1][1], pixPos[0][1], pixPos[2][1], pixPos[1][0], pixPos[1][2] ); + vec3 norm3 = CalculateNormal( edges3, pixPos[2][2], pixPos[1][2], pixPos[3][2], pixPos[2][1], pixPos[2][3] ); + +#if BGFX_SHADER_LANGUAGE_GLSL + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 0, 1 ), vec4( norm0 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 1, 0 ), vec4( norm3 * 0.5 + 0.5, 0.0 )); +#else + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 0, 0 ), vec4( norm0 * 0.5 + 0.5, 0.0 )); + imageStore(s_normalsOutputUAV, baseCoords + ivec2( 1, 1 ), vec4( norm3 * 0.5 + 0.5, 0.0 )); +#endif + } +} diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_half.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_half.sc new file mode 100644 index 00000000000..83b913afc0a --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_prepare_depths_half.sc @@ -0,0 +1,48 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +SAMPLER2D(s_depthSource, 0); +IMAGE2D_WR(s_target0, r16f, 1); +IMAGE2D_WR(s_target1, r16f, 2); + +float ScreenSpaceToViewSpaceDepth( float screenDepth ) +{ + float depthLinearizeMul = u_depthUnpackConsts.x; + float depthLinearizeAdd = u_depthUnpackConsts.y; + + // Optimised version of "-cameraClipNear / (cameraClipFar - projDepth * (cameraClipFar - cameraClipNear)) * cameraClipFar" + + // Set your depthLinearizeMul and depthLinearizeAdd to: + // depthLinearizeMul = ( cameraClipFar * cameraClipNear) / ( cameraClipFar - cameraClipNear ); + // depthLinearizeAdd = cameraClipFar / ( cameraClipFar - cameraClipNear ); + + return depthLinearizeMul / ( depthLinearizeAdd - screenDepth ); +} + +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy); + + uvec2 dim = imageSize(s_target0).xy; + if (all(lessThan(dtID.xy, dim) ) ) + { + ivec2 baseCoord = ivec2(dtID.xy) * 2; +#if BGFX_SHADER_LANGUAGE_GLSL + float a = texelFetch(s_depthSource, baseCoord + ivec2( 0, 1 ), 0).x; + float d = texelFetch(s_depthSource, baseCoord + ivec2( 1, 0 ), 0).x; +#else + float a = texelFetch(s_depthSource, baseCoord + ivec2( 0, 0 ), 0).x; + float d = texelFetch(s_depthSource, baseCoord + ivec2( 1, 1 ), 0).x; +#endif + + imageStore(s_target0, ivec2(dtID.xy), ScreenSpaceToViewSpaceDepth( a ).xxxx); + imageStore(s_target1, ivec2(dtID.xy), ScreenSpaceToViewSpaceDepth( d ).xxxx); + } +} + diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_smart_blur.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_smart_blur.sc new file mode 100644 index 00000000000..5ddf435fb71 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_smart_blur.sc @@ -0,0 +1,82 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_ARRAY_WR(s_target, rg8, 0); +SAMPLER2DARRAY(s_blurInput, 1); + +// unpacking for edges; 2 bits per edge mean 4 gradient values (0, 0.33, 0.66, 1) for smoother transitions! +vec4 UnpackEdges( float _packedVal ) +{ + uint packedVal = uint(_packedVal * 255.5); + vec4 edgesLRTB; + edgesLRTB.x = float((packedVal >> 6) & 0x03) / 3.0; // there's really no need for mask (as it's an 8 bit input) but I'll leave it in so it doesn't cause any trouble in the future + edgesLRTB.y = float((packedVal >> 4) & 0x03) / 3.0; + edgesLRTB.z = float((packedVal >> 2) & 0x03) / 3.0; + edgesLRTB.w = float((packedVal >> 0) & 0x03) / 3.0; + + return saturate( edgesLRTB + u_invSharpness ); +} + +// ******************************************************************************************************** +// Pixel shader that does smart blurring (to avoid bleeding) + +void AddSample( float ssaoValue, float edgeValue, inout float sum, inout float sumWeight ) +{ + float weight = edgeValue; + + sum += (weight * ssaoValue); + sumWeight += weight; +} + +vec2 SampleBlurred( ivec2 inPos, vec2 coord ) +{ + float packedEdges = texelFetch(s_blurInput, ivec3(inPos.xy,0.0), 0 ).y; + vec4 edgesLRTB = UnpackEdges( packedEdges ); + +#if BGFX_SHADER_LANGUAGE_GLSL + vec4 valuesUL = textureGather(s_blurInput, vec3(coord - u_halfViewportPixelSize * 0.5 + vec2(0.0,u_halfViewportPixelSize.y), 0.0), 0).wzyx; + vec4 valuesBR = textureGather(s_blurInput, vec3(coord + u_halfViewportPixelSize * 0.5 + vec2(0.0,-u_halfViewportPixelSize.y), 0.0), 0).wzyx; +#else + vec4 valuesUL = textureGather(s_blurInput, vec3(coord - u_halfViewportPixelSize * 0.5, 0.0), 0); + vec4 valuesBR = textureGather(s_blurInput, vec3(coord + u_halfViewportPixelSize * 0.5, 0.0), 0); +#endif + + float ssaoValue = valuesUL.y; + float ssaoValueL = valuesUL.x; + float ssaoValueT = valuesUL.z; + float ssaoValueR = valuesBR.z; + float ssaoValueB = valuesBR.x; + + float sumWeight = 0.5f; + float sum = ssaoValue * sumWeight; + + AddSample( ssaoValueL, edgesLRTB.x, sum, sumWeight ); + AddSample( ssaoValueR, edgesLRTB.y, sum, sumWeight ); + + AddSample( ssaoValueT, edgesLRTB.z, sum, sumWeight ); + AddSample( ssaoValueB, edgesLRTB.w, sum, sumWeight ); + + float ssaoAvg = sum / sumWeight; + + ssaoValue = ssaoAvg; //min( ssaoValue, ssaoAvg ) * 0.2 + ssaoAvg * 0.8; + + return vec2( ssaoValue, packedEdges ); +} + +// edge-sensitive blur +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy) + uvec2(u_rect.xy); + if (all(lessThan(dtID.xy, u_rect.zw) ) ) + { + vec2 inUV = (dtID.xy+vec2(0.5,0.5)) * u_halfViewportPixelSize; + imageStore(s_target, ivec3(dtID.xy, u_layer), SampleBlurred( ivec2(dtID.xy), inUV ).xyyy); + } +} + diff --git a/3rdparty/bgfx/examples/39-assao/cs_assao_smart_blur_wide.sc b/3rdparty/bgfx/examples/39-assao/cs_assao_smart_blur_wide.sc new file mode 100644 index 00000000000..e6752700bcc --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/cs_assao_smart_blur_wide.sc @@ -0,0 +1,83 @@ +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" +#include "uniforms.sh" + +IMAGE2D_ARRAY_WR(s_target, rg8, 0); +SAMPLER2DARRAY(s_blurInput, 1); + +// unpacking for edges; 2 bits per edge mean 4 gradient values (0, 0.33, 0.66, 1) for smoother transitions! +vec4 UnpackEdges( float _packedVal ) +{ + uint packedVal = uint(_packedVal * 255.5); + vec4 edgesLRTB; + edgesLRTB.x = float((packedVal >> 6) & 0x03) / 3.0; // there's really no need for mask (as it's an 8 bit input) but I'll leave it in so it doesn't cause any trouble in the future + edgesLRTB.y = float((packedVal >> 4) & 0x03) / 3.0; + edgesLRTB.z = float((packedVal >> 2) & 0x03) / 3.0; + edgesLRTB.w = float((packedVal >> 0) & 0x03) / 3.0; + + return saturate( edgesLRTB + u_invSharpness ); +} + +// ******************************************************************************************************** +// Pixel shader that does smart blurring (to avoid bleeding) + +void AddSample( float ssaoValue, float edgeValue, inout float sum, inout float sumWeight ) +{ + float weight = edgeValue; + + sum += (weight * ssaoValue); + sumWeight += weight; +} + +vec2 SampleBlurredWide(vec3 coord) +{ + vec2 vC = texture2DArrayLodOffset(s_blurInput, coord, 0.0, ivec2(0, 0)).xy; + vec2 vL = texture2DArrayLodOffset(s_blurInput, coord, 0.0, ivec2(-2, 0)).xy; + vec2 vT = texture2DArrayLodOffset(s_blurInput, coord, 0.0, ivec2(0, -2)).xy; + vec2 vR = texture2DArrayLodOffset(s_blurInput, coord, 0.0, ivec2(2, 0)).xy; + vec2 vB = texture2DArrayLodOffset(s_blurInput, coord, 0.0, ivec2(0, 2)).xy; + + float packedEdges = vC.y; + vec4 edgesLRTB = UnpackEdges(packedEdges); + edgesLRTB.x *= UnpackEdges(vL.y).y; + edgesLRTB.z *= UnpackEdges(vT.y).w; + edgesLRTB.y *= UnpackEdges(vR.y).x; + edgesLRTB.w *= UnpackEdges(vB.y).z; + + float ssaoValue = vC.x; + float ssaoValueL = vL.x; + float ssaoValueT = vT.x; + float ssaoValueR = vR.x; + float ssaoValueB = vB.x; + + float sumWeight = 0.8f; + float sum = ssaoValue * sumWeight; + + AddSample(ssaoValueL, edgesLRTB.x, sum, sumWeight); + AddSample(ssaoValueR, edgesLRTB.y, sum, sumWeight); + AddSample(ssaoValueT, edgesLRTB.z, sum, sumWeight); + AddSample(ssaoValueB, edgesLRTB.w, sum, sumWeight); + + float ssaoAvg = sum / sumWeight; + + ssaoValue = ssaoAvg; //min( ssaoValue, ssaoAvg ) * 0.2 + ssaoAvg * 0.8; + + return vec2(ssaoValue, packedEdges); +} + +// edge-sensitive blur (wider kernel) +NUM_THREADS(8, 8, 1) +void main() +{ + uvec2 dtID = uvec2(gl_GlobalInvocationID.xy) + uvec2(u_rect.xy); + if (all(lessThan(dtID.xy, u_rect.zw) ) ) + { + vec2 inUV = (dtID.xy+vec2(0.5,0.5)) * u_halfViewportPixelSize; + imageStore(s_target, ivec3(dtID.xy,u_layer), SampleBlurredWide(vec3(inUV,0.0)).xyyy); + } +} + diff --git a/3rdparty/bgfx/examples/39-assao/fs_assao_deferred_combine.sc b/3rdparty/bgfx/examples/39-assao/fs_assao_deferred_combine.sc new file mode 100644 index 00000000000..e12d58ee412 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/fs_assao_deferred_combine.sc @@ -0,0 +1,43 @@ +$input v_texcoord0 + +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_normal, 1); +SAMPLER2D(s_ao, 2); + +uniform vec4 u_combineParams[2]; + +void main() +{ + vec2 tc0 = v_texcoord0 * u_combineParams[1].xy + u_combineParams[1].zw; + vec3 albedoColor = vec3(1.0,1.0,1.0); + if (u_combineParams[0].x > 0.0) + { + albedoColor = texture2D(s_color, tc0).rgb; + } + + float light = 1.0; + if (u_combineParams[0].x > 0.0) + { + vec3 n = texture2D(s_normal, tc0).xyz; + // Expand out normal + n = n*2.0-1.0; + vec3 l = normalize(vec3(-0.8,0.75,-1.0)); + light = max(0.0,dot(n,l)) * 1.2+ 0.3; + } + + float ao = 1.0; + if ( u_combineParams[0].y > 0.0) + { + ao = texture2D(s_ao, tc0).x; + } + + gl_FragColor = vec4(albedoColor * light * ao, 1.0f); +} +
\ No newline at end of file diff --git a/3rdparty/bgfx/examples/39-assao/fs_assao_gbuffer.sc b/3rdparty/bgfx/examples/39-assao/fs_assao_gbuffer.sc new file mode 100644 index 00000000000..13610f75e64 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/fs_assao_gbuffer.sc @@ -0,0 +1,22 @@ +$input v_normal, v_texcoord0 + +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +SAMPLER2D(s_albedo, 0); + +void main() +{ + vec3 normalWorldSpace = v_normal; + + // Write normal + gl_FragData[0].xyz = normalWorldSpace.xyz; // Normal is already compressed to [0,1] so can fit in gbuffer + gl_FragData[0].w = 0.0; + + // Write color + gl_FragData[1] = texture2D(s_albedo, v_texcoord0); +} diff --git a/3rdparty/bgfx/examples/39-assao/makefile b/3rdparty/bgfx/examples/39-assao/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/39-assao/screenshot.png b/3rdparty/bgfx/examples/39-assao/screenshot.png Binary files differnew file mode 100644 index 00000000000..9cec6222387 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/screenshot.png diff --git a/3rdparty/bgfx/examples/39-assao/uniforms.sh b/3rdparty/bgfx/examples/39-assao/uniforms.sh new file mode 100644 index 00000000000..5cedd7a4191 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/uniforms.sh @@ -0,0 +1,42 @@ +uniform vec4 u_params[19]; +uniform vec4 u_rect; + +#define u_viewportPixelSize u_params[0].xy +#define u_halfViewportPixelSize u_params[0].zw +#define u_depthUnpackConsts u_params[1].xy +#define u_ndcToViewMul u_params[2].xy +#define u_ndcToViewAdd u_params[2].zw +#define u_perPassFullResCoordOffset u_params[3].xy +#define u_perPassFullResUVOffset u_params[3].zw +#define u_viewport2xPixelSize u_params[4].xy +#define u_viewport2xPixelSize_x_025 u_params[4].zw +#define u_effectRadius u_params[5].x +#define u_effectShadowStrength u_params[5].y +#define u_effectShadowPow u_params[5].z +#define u_effectShadowClamp u_params[5].w +#define u_effectFadeOutMul u_params[6].x +#define u_effectFadeOutAdd u_params[6].y +#define u_effectHorizonAngleThreshold u_params[6].z +#define u_effectSamplingRadiusNearLimitRec u_params[6].w +#define u_depthPrecisionOffsetMod u_params[7].x +#define u_negRecEffectRadius u_params[7].y +#define u_loadCounterAvgDiv u_params[7].z +#define u_adaptiveSampleCountLimit u_params[7].w +#define u_invSharpness u_params[8].x +#define u_passIndex u_params[8].y +#define u_quarterResPixelSize u_params[8].zw +#define u_patternRotScaleMatrices(i) u_params[9+(i)] +#define u_normalsUnpackMul u_params[14].x +#define u_normalsUnpackAdd u_params[14].y +#define u_detailAOStrength u_params[14].z +#define u_layer u_params[14].w +#define u_normalsWorldToViewspaceMatrix0 u_params[15] +#define u_normalsWorldToViewspaceMatrix1 u_params[16] +#define u_normalsWorldToViewspaceMatrix2 u_params[17] +#define u_normalsWorldToViewspaceMatrix3 u_params[18] + +#define SSAO_MAX_TAPS 32 +#define SSAO_ADAPTIVE_TAP_BASE_COUNT 5 +#define SSAO_ADAPTIVE_TAP_FLEXIBLE_COUNT (SSAO_MAX_TAPS-SSAO_ADAPTIVE_TAP_BASE_COUNT) +#define SSAO_DEPTH_MIP_LEVELS 4 +#define SSAO_ENABLE_NORMAL_WORLD_TO_VIEW_CONVERSION 1 diff --git a/3rdparty/bgfx/examples/39-assao/varying.def.sc b/3rdparty/bgfx/examples/39-assao/varying.def.sc new file mode 100644 index 00000000000..8471e5e5a68 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/varying.def.sc @@ -0,0 +1,7 @@ +vec4 a_position : POSITION; +vec2 a_texcoord0 : TEXCOORD0; +vec3 a_normal : NORMAL; + +vec2 v_texcoord0 : TEXCOORD0; +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); + diff --git a/3rdparty/bgfx/examples/39-assao/vs_assao.sc b/3rdparty/bgfx/examples/39-assao/vs_assao.sc new file mode 100644 index 00000000000..a4eb7999cf0 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/vs_assao.sc @@ -0,0 +1,16 @@ +$input a_position, a_texcoord0 +$output v_texcoord0 + +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position.xyz, 1.0) ); + v_texcoord0 = a_texcoord0; +} + diff --git a/3rdparty/bgfx/examples/39-assao/vs_assao_gbuffer.sc b/3rdparty/bgfx/examples/39-assao/vs_assao_gbuffer.sc new file mode 100644 index 00000000000..e9662e614f8 --- /dev/null +++ b/3rdparty/bgfx/examples/39-assao/vs_assao_gbuffer.sc @@ -0,0 +1,27 @@ +$input a_position, a_normal, a_texcoord0 +$output v_normal, v_texcoord0 + +/* + * Copyright 2018 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + + +#include "../common/common.sh" + +void main() +{ + // Calculate vertex position + vec3 pos = a_position.xyz; + gl_Position = mul(u_modelViewProj, vec4(pos, 1.0) ); + + // Calculate normal. Note that compressed normal is stored in the vertices + vec3 normalObjectSpace = a_normal.xyz*2.0+-1.0; // Normal is stored in [0,1], remap to [-1,1]. + + // Transform normal into world space. + vec3 normalWorldSpace = mul(u_model[0], vec4(normalObjectSpace, 0.0) ).xyz; + // Normalize to remove (uniform...) scaling, however, recompress + v_normal.xyz = normalize(normalWorldSpace)*0.5+0.5; + + v_texcoord0 = a_texcoord0 * 16.0; +} diff --git a/3rdparty/bgfx/examples/40-svt/fs_vt_mip.sc b/3rdparty/bgfx/examples/40-svt/fs_vt_mip.sc new file mode 100644 index 00000000000..31f0b2b6fd2 --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/fs_vt_mip.sc @@ -0,0 +1,24 @@ +$input v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +/* + * Reference(s): + * - Based on Virtual Texture Demo by Brad Blanchard + * http://web.archive.org/web/20190103162638/http://linedef.com/virtual-texture-demo.html + */ + +#include "../common/common.sh" +#include "virtualtexture.sh" + +void main() +{ + float mipCount = log2(PageTableSize); + float mip = floor(MipLevel(v_texcoord0.xy, VirtualTextureSize) - MipBias); + mip = clamp(mip, 0, mipCount); + vec2 offset = floor(v_texcoord0.xy * PageTableSize); + gl_FragColor = vec4(floor(vec3(offset / exp2(mip), mip)) / 255.0, 1.0); +} diff --git a/3rdparty/bgfx/examples/40-svt/fs_vt_unlit.sc b/3rdparty/bgfx/examples/40-svt/fs_vt_unlit.sc new file mode 100644 index 00000000000..a079bc11d5e --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/fs_vt_unlit.sc @@ -0,0 +1,21 @@ +$input v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +/* + * Reference(s): + * - Based on Virtual Texture Demo by Brad Blanchard + * http://web.archive.org/web/20190103162638/http://linedef.com/virtual-texture-demo.html + */ + +#include "../common/common.sh" +#include "virtualtexture.sh" + +void main() +{ + gl_FragColor = VirtualTexture(v_texcoord0.xy); +} + diff --git a/3rdparty/bgfx/examples/40-svt/makefile b/3rdparty/bgfx/examples/40-svt/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/40-svt/screenshot.png b/3rdparty/bgfx/examples/40-svt/screenshot.png Binary files differnew file mode 100644 index 00000000000..00ba3f1af17 --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/screenshot.png diff --git a/3rdparty/bgfx/examples/40-svt/svt.cpp b/3rdparty/bgfx/examples/40-svt/svt.cpp new file mode 100644 index 00000000000..3256f64952f --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/svt.cpp @@ -0,0 +1,381 @@ +/* + * Copyright 2018 Ales Mlakar. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + + /* + * Reference(s): + * - Sparse Virtual Textures by Sean Barrett + * http://web.archive.org/web/20190103162611/http://silverspaceship.com/src/svt/ + * - Based on Virtual Texture Demo by Brad Blanchard + * http://web.archive.org/web/20190103162638/http://linedef.com/virtual-texture-demo.html + * - Mars texture + * http://web.archive.org/web/20190103162730/http://www.celestiamotherlode.net/catalog/mars.php + */ + +#include "common.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" +#include "camera.h" +#include "vt.h" + +namespace +{ + +struct PosTexcoordVertex +{ + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + }; + + static bgfx::VertexLayout ms_layout; +}; + +bgfx::VertexLayout PosTexcoordVertex::ms_layout; + +static const float s_planeScale = 50.0f; + +static PosTexcoordVertex s_vplaneVertices[] = +{ + { -s_planeScale, 0.0f, s_planeScale, 1.0f, 1.0f }, + { s_planeScale, 0.0f, s_planeScale, 1.0f, 0.0f }, + { -s_planeScale, 0.0f, -s_planeScale, 0.0f, 1.0f }, + { s_planeScale, 0.0f, -s_planeScale, 0.0f, 0.0f }, +}; + +static const uint16_t s_planeIndices[] = +{ + 0, 1, 2, + 1, 3, 2, +}; + +class ExampleSVT : public entry::AppI +{ +public: + ExampleSVT(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_TEXT; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable m_debug text. + bgfx::setDebug(m_debug); + + // Set views clear state (first pass to 0, second pass to some background color) + for (uint16_t i = 0; i < 2; ++i) + { + bgfx::setViewClear(i + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , i == 0 ? 0 : 0x101050ff + , 1.0f + , 0 + ); + } + + // Create vertex stream declaration. + PosTexcoordVertex::init(); + + // Create static vertex buffer. + m_vbh = bgfx::createVertexBuffer( + bgfx::makeRef(s_vplaneVertices, sizeof(s_vplaneVertices)) + , PosTexcoordVertex::ms_layout + ); + + m_ibh = bgfx::createIndexBuffer( + bgfx::makeRef(s_planeIndices, sizeof(s_planeIndices)) + ); + + // Create program from shaders. + m_vt_unlit = loadProgram("vs_vt_generic", "fs_vt_unlit"); + m_vt_mip = loadProgram("vs_vt_generic", "fs_vt_mip"); + + // Imgui. + imguiCreate(); + + m_timeOffset = bx::getHPCounter(); + + // Get renderer capabilities info. + m_caps = bgfx::getCaps(); + + m_scrollArea = 0; + + // Create and setup camera + cameraCreate(); + + cameraSetPosition({ 0.0f, 5.0f, 0.0f }); + cameraSetVerticalAngle(0.0f); + + // Set VirtualTexture system allocator + vt::VirtualTexture::setAllocator(&m_vtAllocator); + + // Create Virtual texture info + m_vti = new vt::VirtualTextureInfo(); + m_vti->m_virtualTextureSize = 8192; // The actual size will be read from the tile data file + m_vti->m_tileSize = 128; + m_vti->m_borderSize = 1; + + // Generate tile data file (if not yet created) + { + vt::TileGenerator tileGenerator(m_vti); + tileGenerator.generate("textures/8k_mars.jpg"); + } + + // Load tile data file + auto tileDataFile = new vt::TileDataFile("temp/8k_mars.vt", m_vti); + tileDataFile->readInfo(); + + // Create virtual texture and feedback buffer + m_vt = new vt::VirtualTexture(tileDataFile, m_vti, 2048, 1); + m_feedbackBuffer = new vt::FeedbackBuffer(m_vti, 64, 64); + + } + + virtual int shutdown() override + { + // Cleanup. + bgfx::frame(); + + cameraDestroy(); + imguiDestroy(); + + bgfx::destroy(m_ibh); + bgfx::destroy(m_vbh); + + bgfx::destroy(m_vt_unlit); + bgfx::destroy(m_vt_mip); + + delete m_vti; + delete m_vt; + delete m_feedbackBuffer; + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState)) + { + imguiBeginFrame( + m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const float deltaTime = float(frameTime / freq); + + float time = (float)((now - m_timeOffset) / freq); + + if ((BGFX_CAPS_TEXTURE_BLIT | BGFX_CAPS_TEXTURE_READ_BACK) != (bgfx::getCaps()->supported & (BGFX_CAPS_TEXTURE_BLIT | BGFX_CAPS_TEXTURE_READ_BACK))) + { + // When texture read-back or blit is not supported by GPU blink! + bool blink = uint32_t(time*3.0f) & 1; + bgfx::dbgTextPrintf(0, 0, blink ? 0x4f : 0x04, " Texture read-back and/or blit not supported by GPU. "); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height)); + + // This dummy draw call is here to make sure that view 0 is cleared + // if no other draw calls are submitted to view 0. + bgfx::touch(0); + } + else + { + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height - 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + //ImGui::SliderFloat("intensity", &m_intensity, 0.0f, 3.0f); + auto showBorders = m_vt->isShowBoardersEnabled(); + if (ImGui::Checkbox("Show borders", &showBorders)) + { + m_vt->enableShowBoarders(showBorders); + } + auto colorMipLevels = m_vt->isColorMipLevelsEnabled(); + if (ImGui::Checkbox("Color mip levels", &colorMipLevels)) + { + m_vt->enableColorMipLevels(colorMipLevels); + } + auto uploadsperframe = m_vt->getUploadsPerFrame(); + if (ImGui::InputInt("Updates per frame", &uploadsperframe, 1, 2)) + { + uploadsperframe = bx::clamp(uploadsperframe, 1, 100); + m_vt->setUploadsPerFrame(uploadsperframe); + } + + ImGui::ImageButton(m_vt->getAtlastTexture(), ImVec2(m_width / 5.0f - 16.0f, m_width / 5.0f - 16.0f)); + ImGui::ImageButton(bgfx::getTexture(m_feedbackBuffer->getFrameBuffer()), ImVec2(m_width / 5.0f - 16.0f, m_width / 5.0f - 16.0f)); + + ImGui::End(); + + // Update camera. + cameraUpdate(deltaTime, m_mouseState, ImGui::MouseOverArea() ); + + float view[16]; + cameraGetViewMtx(view); + + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width) / float(m_height), 0.1f, 1000.0f, m_caps->homogeneousDepth); + + // Setup views + for (uint16_t i = 0; i < 2; ++i) + { + uint16_t viewWidth = 0; + uint16_t viewHeight = 0; + // Setup pass, first pass is into mip-map feedback buffer, second pass is on screen + if (i == 0) + { + bgfx::setViewFrameBuffer(i, m_feedbackBuffer->getFrameBuffer()); + viewWidth = uint16_t(m_feedbackBuffer->getWidth()); + viewHeight = uint16_t(m_feedbackBuffer->getHeight()); + } + else + { + bgfx::FrameBufferHandle invalid = BGFX_INVALID_HANDLE; + bgfx::setViewFrameBuffer(i, invalid); + viewWidth = uint16_t(m_width); + viewHeight = uint16_t(m_height); + } + + bgfx::setViewRect(i, 0, 0, viewWidth, viewHeight); + bgfx::setViewTransform(i, view, proj); + + float mtx[16]; + bx::mtxIdentity(mtx); + + // Set identity transform for draw call. + bgfx::setTransform(mtx); + + // Set vertex and index buffer. + bgfx::setVertexBuffer(0, m_vbh); + bgfx::setIndexBuffer(m_ibh); + + // Set render states. + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + ); + + // Set virtual texture uniforms + m_vt->setUniforms(); + + // Submit primitive for rendering to first pass (to feedback buffer, where mip levels and tile x/y will be rendered + if (i == 0) + { + bgfx::submit(i, m_vt_mip); + // Download previous frame feedback info + m_feedbackBuffer->download(); + // Update and upload new requests + m_vt->update(m_feedbackBuffer->getRequests(), 4); + // Clear feedback + m_feedbackBuffer->clear(); + // Copy new frame feedback buffer + m_feedbackBuffer->copy(3); + } + else + { + // Submit primitive for rendering to second pass (to back buffer, where virtual texture page table and atlas will be used) + bgfx::submit(i, m_vt_unlit); + } + } + } + + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + + return true; + } + + return false; + } + + bgfx::VertexBufferHandle m_vbh; + bgfx::IndexBufferHandle m_ibh; + + bgfx::ProgramHandle m_vt_unlit; + bgfx::ProgramHandle m_vt_mip; + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + int32_t m_scrollArea; + + entry::MouseState m_mouseState; + + const bgfx::Caps* m_caps; + int64_t m_timeOffset; + + bx::DefaultAllocator m_vtAllocator; + vt::VirtualTextureInfo* m_vti; + vt::VirtualTexture* m_vt; + vt::FeedbackBuffer* m_feedbackBuffer; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExampleSVT + , "40-svt" + , "Sparse Virtual Textures." + , "https://bkaradzic.github.io/bgfx/examples.html#svt" + ); diff --git a/3rdparty/bgfx/examples/40-svt/varying.def.sc b/3rdparty/bgfx/examples/40-svt/varying.def.sc new file mode 100644 index 00000000000..b7b69d9f353 --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/varying.def.sc @@ -0,0 +1,4 @@ +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); + +vec3 a_position : POSITION; +vec2 a_texcoord0 : TEXCOORD0; diff --git a/3rdparty/bgfx/examples/40-svt/virtualtexture.sh b/3rdparty/bgfx/examples/40-svt/virtualtexture.sh new file mode 100644 index 00000000000..32a3381c6eb --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/virtualtexture.sh @@ -0,0 +1,86 @@ +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +/* + * Reference(s): + * - Based on Virtual Texture Demo by Brad Blanchard + * http://web.archive.org/web/20190103162638/http://linedef.com/virtual-texture-demo.html + */ + +uniform vec4 u_vt_settings_1; +uniform vec4 u_vt_settings_2; + +#define VirtualTextureSize u_vt_settings_1.x +#define AtlasScale u_vt_settings_1.y +#define BorderScale u_vt_settings_1.z +#define BorderOffset u_vt_settings_1.w + +#define MipBias u_vt_settings_2.x +#define PageTableSize u_vt_settings_2.y + +SAMPLER2D(s_vt_page_table, 0); +SAMPLER2D(s_vt_texture_atlas, 1); + +// This function estimates mipmap levels +float MipLevel( vec2 uv, float size ) +{ + vec2 dx = dFdx( uv * size ); + vec2 dy = dFdy( uv * size ); + float d = max( dot( dx, dx ), dot( dy, dy ) ); + + return max( 0.5 * log2( d ), 0 ); +} + +// This function samples the page table and returns the page's +// position and mip level. +vec3 SampleTable( vec2 uv, float mip ) +{ + vec2 offset = fract( uv * PageTableSize ) / PageTableSize; + return texture2DLod( s_vt_page_table, uv - offset, mip ).xyz; +} + +// This functions samples from the texture atlas and returns the final color +vec4 SampleAtlas( vec3 page, vec2 uv ) +{ + float mipsize = exp2( floor( page.z * 255.0 + 0.5 ) ); + + uv = fract( uv * PageTableSize / mipsize ); + + uv *= BorderScale; + uv += BorderOffset; + + vec2 offset = floor( page.xy * 255.0 + 0.5 ); + + return texture2D( s_vt_texture_atlas, ( offset + uv ) * AtlasScale ); +} + +// Ugly brute force trilinear, look up twice and mix +vec4 VirtualTextureTrilinear( vec2 uv ) +{ + float miplevel = MipLevel( uv, VirtualTextureSize ); + miplevel = clamp( miplevel, 0.0, log2( PageTableSize )-1.0 ); + + float mip1 = floor( miplevel ); + float mip2 = mip1 + 1.0; + float mipfrac = miplevel - mip1; + + vec3 page1 = SampleTable( uv, mip1 ); + vec3 page2 = SampleTable( uv, mip2 ); + + vec4 sample1 = SampleAtlas( page1, uv ); + vec4 sample2 = SampleAtlas( page2, uv ); + + return mix( sample1, sample2, mipfrac ); +} + +// Simple bilinear +vec4 VirtualTexture( vec2 uv ) +{ + float mip = floor( MipLevel( uv, VirtualTextureSize ) ); + mip = clamp( mip, 0, log2( PageTableSize ) ); + + vec3 page = SampleTable( uv, mip ); + return SampleAtlas( page, uv ); +} diff --git a/3rdparty/bgfx/examples/40-svt/vs_vt_generic.sc b/3rdparty/bgfx/examples/40-svt/vs_vt_generic.sc new file mode 100644 index 00000000000..1f39a87383b --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/vs_vt_generic.sc @@ -0,0 +1,16 @@ +$input a_position, a_texcoord0 +$output v_texcoord0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +void main() +{ + vec3 wpos = mul(u_model[0], vec4(a_position, 1.0) ).xyz; + gl_Position = mul(u_viewProj, vec4(wpos, 1.0) ); + v_texcoord0 = a_texcoord0; +} diff --git a/3rdparty/bgfx/examples/40-svt/vt.cpp b/3rdparty/bgfx/examples/40-svt/vt.cpp new file mode 100644 index 00000000000..64f479ea589 --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/vt.cpp @@ -0,0 +1,1333 @@ +/* + * Copyright 2018 Ales Mlakar. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + + /* + * Reference(s): + * - Sparse Virtual Textures by Sean Barrett + * http://web.archive.org/web/20190103162611/http://silverspaceship.com/src/svt/ + * - Based on Virtual Texture Demo by Brad Blanchard + * http://web.archive.org/web/20190103162638/http://linedef.com/virtual-texture-demo.html + * - Mars texture + * http://web.archive.org/web/20190103162730/http://www.celestiamotherlode.net/catalog/mars.php + */ + +#include <bx/file.h> +#include <bx/sort.h> + +#include "vt.h" + +namespace vt +{ + +// Constants +static const int s_channelCount = 4; +static const int s_tileFileDataOffset = sizeof(VirtualTextureInfo); + +// Page +Page::operator size_t() const +{ + return size_t((uint32_t(m_mip) << 16) | uint32_t((uint16_t(m_x) << 8) | uint16_t(m_y))); +} + +// PageCount +PageCount::PageCount(Page _page, int _count) + : m_page(_page) + , m_count(_count) +{ +} + +int PageCount::compareTo(const PageCount& other) const +{ + if (other.m_page.m_mip != m_page.m_mip) + { + return bx::clamp<int>(other.m_page.m_mip - m_page.m_mip, -1, 1); + } + + return bx::clamp<int>(other.m_count - m_count, -1, 1); +} + +// VirtualTextureInfo +VirtualTextureInfo::VirtualTextureInfo() + : m_virtualTextureSize(0) + , m_tileSize(0) + , m_borderSize(0) +{ +} + +int VirtualTextureInfo::GetPageSize() const +{ + return m_tileSize + 2 * m_borderSize; +} + +int VirtualTextureInfo::GetPageTableSize() const +{ + return m_virtualTextureSize / m_tileSize; +} + +StagingPool::StagingPool(int _width, int _height, int _count, bool _readBack) + : m_stagingTextureIndex(0) + , m_width(_width) + , m_height(_height) + , m_flags(0) +{ + m_flags = BGFX_TEXTURE_BLIT_DST | BGFX_SAMPLER_UVW_CLAMP; + if (_readBack) + { + m_flags |= BGFX_TEXTURE_READ_BACK; + } + grow(_count); +} + +StagingPool::~StagingPool() +{ + for (int i = 0; i < (int)m_stagingTextures.size(); ++i) + { + bgfx::destroy(m_stagingTextures[i]); + } +} + +void StagingPool::grow(int count) +{ + while ((int)m_stagingTextures.size() < count) + { + auto stagingTexture = bgfx::createTexture2D((uint16_t)m_width, (uint16_t)m_height, false, 1, bgfx::TextureFormat::BGRA8, m_flags); + m_stagingTextures.push_back(stagingTexture); + } +} + +bgfx::TextureHandle StagingPool::getTexture() +{ + return m_stagingTextures[m_stagingTextureIndex]; +} + +void StagingPool::next() +{ + m_stagingTextureIndex = (m_stagingTextureIndex + 1) % (int)m_stagingTextures.size(); +} + +PageIndexer::PageIndexer(VirtualTextureInfo* _info) + : m_info(_info) +{ + m_mipcount = int(bx::log2((float)m_info->GetPageTableSize()) + 1); + + m_sizes.resize(m_mipcount); + for (int i = 0; i < m_mipcount; ++i) + { + m_sizes[i] = (m_info->m_virtualTextureSize / m_info->m_tileSize) >> i; + } + + m_offsets.resize(m_mipcount); + m_count = 0; + + for (int i = 0; i < m_mipcount; ++i) + { + m_offsets[i] = m_count; + m_count += m_sizes[i] * m_sizes[i]; + } + + // Calculate reverse mapping + m_reverse.resize(m_count); + + for (int i = 0; i < m_mipcount; ++i) + { + int size = m_sizes[i]; + for (int y = 0; y < size; ++y) + { + for (int x = 0; x < size; ++x) + { + Page page = { x, y, i }; + m_reverse[getIndexFromPage(page)] = page; + } + } + } +} + +int PageIndexer::getIndexFromPage(Page page) +{ + int offset = m_offsets[page.m_mip]; + int stride = m_sizes[page.m_mip]; + + return offset + page.m_y * stride + page.m_x; +} + +Page PageIndexer::getPageFromIndex(int index) +{ + return m_reverse[index]; +} + +bool PageIndexer::isValid(Page page) +{ + if (page.m_mip < 0) + { + return false; + } + + if (page.m_mip >= m_mipcount) + { + return false; + } + + if (page.m_x < 0) + { + return false; + } + + if (page.m_x >= m_sizes[page.m_mip]) + { + return false; + } + + if (page.m_y < 0) + { + return false; + } + + if (page.m_y >= m_sizes[page.m_mip]) + { + return false; + } + + return true; +} + +int PageIndexer::getCount() const +{ + return m_count; +} + +int PageIndexer::getMipCount() const +{ + return m_mipcount; +} + +SimpleImage::SimpleImage(int _width, int _height, int _channelCount, uint8_t _clearValue) + : m_width(_width) + , m_height(_height) + , m_channelCount(_channelCount) +{ + m_data.resize(m_width * m_height * m_channelCount); + clear(_clearValue); +} + +SimpleImage::SimpleImage(int _width, int _height, int _channelCount, tinystl::vector<uint8_t>& _data) + : m_width(_width) + , m_height(_height) + , m_channelCount(_channelCount) +{ + m_data = _data; +} + +void SimpleImage::copy(Point dest_offset, SimpleImage& src, Rect src_rect) +{ + int width = bx::min(m_width - dest_offset.m_x, src_rect.m_width); + int height = bx::min(m_height - dest_offset.m_y, src_rect.m_height); + int channels = bx::min(m_channelCount, src.m_channelCount); + + for (int j = 0; j < height; ++j) + { + for (int i = 0; i < width; ++i) + { + int i1 = ((j + dest_offset.m_y) * m_width + (i + dest_offset.m_x)) * m_channelCount; + int i2 = ((j + src_rect.m_y) * src.m_width + (i + src_rect.m_x)) * src.m_channelCount; + for (int c = 0; c < channels; ++c) + { + m_data[i1 + c] = src.m_data[i2 + c]; + } + } + } +} + +void SimpleImage::clear(uint8_t clearValue) +{ + bx::memSet(&m_data[0], clearValue, m_width * m_height * m_channelCount); +} + +void SimpleImage::fill(Rect rect, uint8_t r, uint8_t g, uint8_t b, uint8_t a) +{ + for (int y = rect.minY(); y < rect.maxY(); ++y) + { + for (int x = rect.minX(); x < rect.maxX(); ++x) + { + m_data[m_channelCount * (y * m_width + x) + 0] = b; + m_data[m_channelCount * (y * m_width + x) + 1] = g; + m_data[m_channelCount * (y * m_width + x) + 2] = r; + m_data[m_channelCount * (y * m_width + x) + 3] = a; + } + } +} + +void SimpleImage::mipmap(uint8_t* source, int size, int channels, uint8_t* dest) +{ + int mipsize = size / 2; + + for (int y = 0; y < mipsize; ++y) + { + for (int x = 0; x < mipsize; ++x) + { + for (int c = 0; c < channels; ++c) + { + int index = channels * ((y * 2) * size + (x * 2)) + c; + int sum_value = 4 >> 1; + sum_value += source[index + channels * (0 * size + 0)]; + sum_value += source[index + channels * (0 * size + 1)]; + sum_value += source[index + channels * (1 * size + 0)]; + sum_value += source[index + channels * (1 * size + 1)]; + dest[channels * (y * mipsize + x) + c] = (uint8_t)(sum_value / 4); + } + } + } +} + +Quadtree::Quadtree(Rect _rect, int _level) + : m_rectangle(_rect) + , m_level(_level) +{ + for (int i = 0; i < 4; ++i) + { + m_children[i] = nullptr; + } +} + +Quadtree::~Quadtree() +{ + for (int i = 0; i < 4; ++i) + { + if (m_children[i] != nullptr) + { + BX_DELETE(VirtualTexture::getAllocator(), m_children[i]); + } + } +} + +void Quadtree::add(Page request, Point mapping) +{ + int scale = 1 << request.m_mip; // Same as pow( 2, mip ) + int x = request.m_x * scale; + int y = request.m_y * scale; + + Quadtree* node = this; + + while (request.m_mip < node->m_level) + { + for (int i = 0; i < 4; ++i) + { + auto rect = node->getRectangle(i); + if (rect.contains({ x, y })) + { + // Create a new one if needed + if (node->m_children[i] == nullptr) + { + node->m_children[i] = BX_NEW(VirtualTexture::getAllocator(), Quadtree)(rect, node->m_level - 1); + node = node->m_children[i]; + break; + } + // Otherwise traverse the tree + else + { + node = node->m_children[i]; + break; + } + } + } + } + + // We have created the correct node, now set the mapping + node->m_mapping = mapping; +} + +void Quadtree::remove(Page request) +{ + int index; + auto node = findPage(this, request, &index); + + if (node != nullptr) + { + BX_DELETE(VirtualTexture::getAllocator(), node->m_children[index]); + node->m_children[index] = nullptr; + } +} + +void Quadtree::write(SimpleImage& image, int miplevel) +{ + write(this, image, miplevel); +} + +Rect Quadtree::getRectangle(int index) +{ + int x = m_rectangle.m_x; + int y = m_rectangle.m_y; + int w = m_rectangle.m_width / 2; + int h = m_rectangle.m_width / 2; + + switch (index) + { + case 0: return { x , y , w, h }; + case 1: return { x + w, y , w, h }; + case 2: return { x + w, y + h, w, h }; + case 3: return { x , y + h, w, h }; + default: break; + } + + return { 0, 0, 0, 0 }; +} + +void Quadtree::write(Quadtree* node, SimpleImage& image, int miplevel) +{ + if (node->m_level >= miplevel) + { + int rx = node->m_rectangle.m_x >> miplevel; + int ry = node->m_rectangle.m_y >> miplevel; + int rw = node->m_rectangle.m_width >> miplevel; + int rh = node->m_rectangle.m_width >> miplevel; + + image.fill({ rx, ry, rw, rh }, (uint8_t)node->m_mapping.m_x, (uint8_t)node->m_mapping.m_y, (uint8_t)node->m_level, 255); + + for (int i = 0; i < 4; ++i) + { + auto child = node->m_children[i]; + if (child != nullptr) + { + Quadtree::write(child, image, miplevel); + } + } + } +} + +Quadtree* Quadtree::findPage(Quadtree* node, Page request, int* index) +{ + int scale = 1 << request.m_mip; // Same as pow( 2, mip ) + int x = request.m_x * scale; + int y = request.m_y * scale; + + // Find the parent of the child we want to remove + bool exitloop = false; + while (!exitloop) + { + exitloop = true; + for (int i = 0; i < 4; ++i) + { + if (node->m_children[i] != nullptr && node->m_children[i]->m_rectangle.contains({ x, y })) + { + // We found it + if (request.m_mip == node->m_level - 1) + { + *index = i; + return node; + } + // Check the children + else + { + node = node->m_children[i]; + exitloop = false; + } + } + } + } + + // We couldn't find it so it must not exist anymore + *index = -1; + return nullptr; +} + +// PageTable +PageTable::PageTable(PageCache* _cache, VirtualTextureInfo* _info, PageIndexer* _indexer) + : m_info(_info) + , m_indexer(_indexer) + , m_quadtree(nullptr) + , m_quadtreeDirty(true) // Force quadtree dirty on startup +{ + auto size = m_info->GetPageTableSize(); + m_quadtree = BX_NEW(VirtualTexture::getAllocator(), Quadtree)({ 0, 0, size, size }, (int)bx::log2((float)size)); + m_texture = bgfx::createTexture2D((uint16_t)size, (uint16_t)size, true, 1, bgfx::TextureFormat::BGRA8, BGFX_SAMPLER_UVW_CLAMP | BGFX_SAMPLER_POINT | BGFX_TEXTURE_BLIT_DST); + + _cache->added = [=](Page page, Point pt) { m_quadtreeDirty = true; m_quadtree->add(page, pt); }; + _cache->removed = [=](Page page, Point pt) { m_quadtreeDirty = true; m_quadtree->remove(page); BX_UNUSED(pt); }; + + auto PageTableSizeLog2 = m_indexer->getMipCount(); + + for (int i = 0; i < PageTableSizeLog2; ++i) + { + int mipSize = m_info->GetPageTableSize() >> i; + auto simpleImage = BX_NEW(VirtualTexture::getAllocator(), SimpleImage)(mipSize, mipSize, s_channelCount); + auto stagingTexture = bgfx::createTexture2D((uint16_t)mipSize, (uint16_t)mipSize, false, 1, bgfx::TextureFormat::BGRA8, BGFX_SAMPLER_UVW_CLAMP | BGFX_SAMPLER_POINT); + m_images.push_back(simpleImage); + m_stagingTextures.push_back(stagingTexture); + } +} + +PageTable::~PageTable() +{ + BX_DELETE(VirtualTexture::getAllocator(), m_quadtree); + bgfx::destroy(m_texture); + + for (int i = 0; i < (int)m_images.size(); ++i) + { + BX_DELETE(VirtualTexture::getAllocator(), m_images[i]); + } + + for (int i = 0; i < (int)m_stagingTextures.size(); ++i) + { + bgfx::destroy(m_stagingTextures[i]); + } +} + +void PageTable::update(bgfx::ViewId blitViewId) +{ + if (!m_quadtreeDirty) + { + return; + } + + m_quadtreeDirty = false; + auto PageTableSizeLog2 = m_indexer->getMipCount(); + + for (int i = 0; i < PageTableSizeLog2; ++i) + { + m_quadtree->write(*m_images[i], i); + auto stagingTexture = m_stagingTextures[i]; + auto size = uint16_t(m_info->GetPageTableSize() >> i); + bgfx::updateTexture2D(stagingTexture, 0, 0, 0, 0, size, size, bgfx::copy(&m_images[i]->m_data[0], size * size * s_channelCount)); + bgfx::blit(blitViewId, m_texture, uint8_t(i), 0, 0, 0, stagingTexture, 0, 0, 0, 0, size, size); + } +} + +bgfx::TextureHandle PageTable::getTexture() +{ + return m_texture; +} + +// PageLoader +PageLoader::PageLoader(TileDataFile* _tileDataFile, PageIndexer* _indexer, VirtualTextureInfo* _info) + : m_colorMipLevels(false) + , m_showBorders(false) + , m_tileDataFile(_tileDataFile) + , m_indexer(_indexer) + , m_info(_info) +{ +} + +void PageLoader::submit(Page request) +{ + ReadState state; + state.m_page = request; + loadPage(state); + onPageLoadComplete(state); +} + +void PageLoader::loadPage(ReadState& state) +{ + int size = m_info->GetPageSize() * m_info->GetPageSize() * s_channelCount; + state.m_data.resize(size); + + if (m_colorMipLevels) + { + copyColor(&state.m_data[0], state.m_page); + } + else if (m_tileDataFile != nullptr) + { + m_tileDataFile->readPage(m_indexer->getIndexFromPage(state.m_page), &state.m_data[0]); + } + + if (m_showBorders) + { + copyBorder(&state.m_data[0]); + } +} + +void PageLoader::onPageLoadComplete(ReadState& state) +{ + loadComplete(state.m_page, &state.m_data[0]); +} + +void PageLoader::copyBorder(uint8_t* image) +{ + int pagesize = m_info->GetPageSize(); + int bordersize = m_info->m_borderSize; + + for (int i = 0; i < pagesize; ++i) + { + int xindex = bordersize * pagesize + i; + image[xindex * s_channelCount + 0] = 0; + image[xindex * s_channelCount + 1] = 255; + image[xindex * s_channelCount + 2] = 0; + image[xindex * s_channelCount + 3] = 255; + + int yindex = i * pagesize + bordersize; + image[yindex * s_channelCount + 0] = 0; + image[yindex * s_channelCount + 1] = 255; + image[yindex * s_channelCount + 2] = 0; + image[yindex * s_channelCount + 3] = 255; + } +} + +void PageLoader::copyColor(uint8_t* image, Page request) +{ + static const Color colors[] = + { + { 0, 0, 255, 255 }, + { 0, 255, 255, 255 }, + { 255, 0, 0, 255 }, + { 255, 0, 255, 255 }, + { 255, 255, 0, 255 }, + { 64, 64, 192, 255 }, + { 64, 192, 64, 255 }, + { 64, 192, 192, 255 }, + { 192, 64, 64, 255 }, + { 192, 64, 192, 255 }, + { 192, 192, 64, 255 }, + { 0, 255, 0, 255 }, + }; + + int pagesize = m_info->GetPageSize(); + + for (int y = 0; y < pagesize; ++y) + { + for (int x = 0; x < pagesize; ++x) + { + image[(y * pagesize + x) * s_channelCount + 0] = colors[request.m_mip].m_b; + image[(y * pagesize + x) * s_channelCount + 1] = colors[request.m_mip].m_g; + image[(y * pagesize + x) * s_channelCount + 2] = colors[request.m_mip].m_r; + image[(y * pagesize + x) * s_channelCount + 3] = colors[request.m_mip].m_a; + } + } +} + +PageCache::PageCache(TextureAtlas* _atlas, PageLoader* _loader, int _count) + : m_atlas(_atlas) + , m_loader(_loader) + , m_count(_count) +{ + clear(); + m_loader->loadComplete = [&](Page page, uint8_t* data) { loadComplete(page, data); }; +} + +// Update the pages's position in the lru +bool PageCache::touch(Page page) +{ + if (m_loading.find(page) == m_loading.end()) + { + if (m_lru_used.find(page) != m_lru_used.end()) + { + // Find the page (slow!!) and add it to the back of the list + for (auto it = m_lru.begin(); it != m_lru.end(); ++it) + { + if (it->m_page == page) + { + auto lruPage = *it; + m_lru.erase(it); + m_lru.push_back(lruPage); + return true; + } + } + return false; + } + } + + return false; +} + +// Schedule a load if not already loaded or loading +bool PageCache::request(Page request, bgfx::ViewId blitViewId) +{ + m_blitViewId = blitViewId; + if (m_loading.find(request) == m_loading.end()) + { + if (m_lru_used.find(request) == m_lru_used.end()) + { + m_loading.insert(request); + m_loader->submit(request); + return true; + } + } + + return false; +} + +void PageCache::clear() +{ + for (auto& lru_page : m_lru) + { + if (m_lru_used.find(lru_page.m_page) != m_lru_used.end()) + { + removed(lru_page.m_page, lru_page.m_point); + } + } + m_lru_used.clear(); + m_lru.clear(); + m_lru.reserve(m_count * m_count); + m_current = 0; +} + +void PageCache::loadComplete(Page page, uint8_t* data) +{ + m_loading.erase(page); + + // Find a place in the atlas for the data + Point pt; + + if (m_current == m_count * m_count) + { + // Remove the oldest lru page and remember it's location so we can use it + auto lru_page = m_lru[0]; + m_lru.erase(m_lru.begin()); + m_lru_used.erase(lru_page.m_page); + pt = lru_page.m_point; + // Notify that we removed a page + removed(lru_page.m_page, lru_page.m_point); + } + else + { + pt = { m_current % m_count, m_current / m_count }; + ++m_current; + + if (m_current == m_count * m_count) + { + bx::debugPrintf("Atlas is full!"); + } + } + + // Notify atlas that he can upload the page and add the page to lru + m_atlas->uploadPage(pt, data, m_blitViewId); + m_lru.push_back({ page, pt }); + m_lru_used.insert(page); + + // Signal that we added a page + added(page, pt); +} + +// TextureAtlas +TextureAtlas::TextureAtlas(VirtualTextureInfo* _info, int _count, int _uploadsperframe) + : m_info(_info) + , m_stagingPool(_info->GetPageSize(), _info->GetPageSize(), _uploadsperframe, false) +{ + // Create atlas texture + int pagesize = m_info->GetPageSize(); + int size = _count * pagesize; + + m_texture = bgfx::createTexture2D( + (uint16_t)size + , (uint16_t)size + , false + , 1 + , bgfx::TextureFormat::BGRA8 + , BGFX_SAMPLER_UVW_CLAMP | BGFX_TEXTURE_BLIT_DST + ); +} + +TextureAtlas::~TextureAtlas() +{ + bgfx::destroy(m_texture); +} + +void TextureAtlas::setUploadsPerFrame(int count) +{ + m_stagingPool.grow(count); +} + +void TextureAtlas::uploadPage(Point pt, uint8_t* data, bgfx::ViewId blitViewId) +{ + // Get next staging texture to write to + auto writer = m_stagingPool.getTexture(); + m_stagingPool.next(); + + // Update texture with new atlas data + auto pagesize = uint16_t(m_info->GetPageSize()); + bgfx::updateTexture2D( + writer + , 0 + , 0 + , 0 + , 0 + , pagesize + , pagesize + , bgfx::copy(data, pagesize * pagesize * s_channelCount) + ); + + // Copy the texture part to the actual atlas texture + auto xpos = uint16_t(pt.m_x * pagesize); + auto ypos = uint16_t(pt.m_y * pagesize); + bgfx::blit(blitViewId, m_texture, 0, xpos, ypos, 0, writer, 0, 0, 0, 0, pagesize, pagesize); +} + +bgfx::TextureHandle TextureAtlas::getTexture() +{ + return m_texture; +} + +// FeedbackBuffer +FeedbackBuffer::FeedbackBuffer(VirtualTextureInfo* _info, int _width, int _height) + : m_info(_info) + , m_width(_width) + , m_height(_height) + , m_stagingPool(_width, _height, 1, true) +{ + // Setup classes + m_indexer = BX_NEW(VirtualTexture::getAllocator(), PageIndexer)(m_info); + m_requests.resize(m_indexer->getCount()); + + // Initialize and clear buffers + m_downloadBuffer.resize(m_width * m_height * s_channelCount); + bx::memSet(&m_downloadBuffer[0], 0, m_width * m_height * s_channelCount); + clear(); + + // Initialize feedback frame buffer + bgfx::TextureHandle feedbackFrameBufferTextures[] = + { + bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT), + bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::D32F, BGFX_TEXTURE_RT), + }; + + m_feedbackFrameBuffer = bgfx::createFrameBuffer(BX_COUNTOF(feedbackFrameBufferTextures), feedbackFrameBufferTextures, true); + m_lastStagingTexture = { bgfx::kInvalidHandle }; +} + +FeedbackBuffer::~FeedbackBuffer() +{ + BX_DELETE(VirtualTexture::getAllocator(), m_indexer); + bgfx::destroy(m_feedbackFrameBuffer); +} + +void FeedbackBuffer::clear() +{ + // Clear Table + bx::memSet(&m_requests[0], 0, sizeof(int) * m_indexer->getCount()); +} + +void FeedbackBuffer::copy(bgfx::ViewId viewId) +{ + m_lastStagingTexture = m_stagingPool.getTexture(); + // Copy feedback buffer render target to staging texture + bgfx::blit(viewId, m_lastStagingTexture, 0, 0, bgfx::getTexture(m_feedbackFrameBuffer)); + m_stagingPool.next(); +} + +void FeedbackBuffer::download() +{ + // Check if there's an already rendered feedback buffer available + if (m_lastStagingTexture.idx == bgfx::kInvalidHandle) + { + return; + } + + // Read the texture + bgfx::readTexture(m_lastStagingTexture, &m_downloadBuffer[0]); + // Loop through pixels and check if anything was written + auto data = &m_downloadBuffer[0]; + auto colors = (Color*)data; + auto dataSize = m_width * m_height; + + for (int i = 0; i < dataSize; ++i) + { + auto& color = colors[i]; + if (color.m_a >= 0xff) + { + // Page found! Add it to the request queue + Page request = { color.m_b, color.m_g, color.m_r }; + addRequestAndParents(request); + // Clear the pixel, so that we don't have to do it in another pass + color = { 0,0,0,0 }; + } + } +} + +// This function validates the pages and adds the page's parents +// We do this so that we can fall back to them if we run out of memory +void FeedbackBuffer::addRequestAndParents(Page request) +{ + auto PageTableSizeLog2 = m_indexer->getMipCount(); + auto count = PageTableSizeLog2 - request.m_mip; + + for (int i = 0; i < count; ++i) + { + int xpos = request.m_x >> i; + int ypos = request.m_y >> i; + + Page page = { xpos, ypos, request.m_mip + i }; + + // If it's not a valid page (position or mip out of range) just skip it + if (!m_indexer->isValid(page)) + { + return; + } + + ++m_requests[m_indexer->getIndexFromPage(page)]; + } +} + +const tinystl::vector<int>& FeedbackBuffer::getRequests() const +{ + return m_requests; +} + +bgfx::FrameBufferHandle FeedbackBuffer::getFrameBuffer() +{ + return m_feedbackFrameBuffer; +} + +int FeedbackBuffer::getWidth() const +{ + return m_width; +} + +int FeedbackBuffer::getHeight() const +{ + return m_height; +} + +// VirtualTexture +VirtualTexture::VirtualTexture(TileDataFile* _tileDataFile, VirtualTextureInfo* _info, int _atlassize, int _uploadsperframe, int _mipBias) + : m_tileDataFile(_tileDataFile) + , m_info(_info) + , m_uploadsPerFrame(_uploadsperframe) + , m_mipBias(_mipBias) + +{ + m_atlasCount = _atlassize / m_info->GetPageSize(); + + // Setup indexer + m_indexer = BX_NEW(VirtualTexture::getAllocator(), PageIndexer)(m_info); + m_pagesToLoad.reserve(m_indexer->getCount()); + + // Setup classes + m_atlas = BX_NEW(VirtualTexture::getAllocator(), TextureAtlas)(m_info, m_atlasCount, m_uploadsPerFrame); + m_loader = BX_NEW(VirtualTexture::getAllocator(), PageLoader)(m_tileDataFile, m_indexer, m_info); + m_cache = BX_NEW(VirtualTexture::getAllocator(), PageCache)(m_atlas, m_loader, m_atlasCount); + m_pageTable = BX_NEW(VirtualTexture::getAllocator(), PageTable)(m_cache, m_info, m_indexer); + + // Create uniforms + u_vt_settings_1 = bgfx::createUniform("u_vt_settings_1", bgfx::UniformType::Vec4); + u_vt_settings_2 = bgfx::createUniform("u_vt_settings_2", bgfx::UniformType::Vec4); + s_vt_page_table = bgfx::createUniform("s_vt_page_table", bgfx::UniformType::Sampler); + s_vt_texture_atlas = bgfx::createUniform("s_vt_texture_atlas", bgfx::UniformType::Sampler); +} + +VirtualTexture::~VirtualTexture() +{ + // Destroy + BX_DELETE(VirtualTexture::getAllocator(), m_indexer); + BX_DELETE(VirtualTexture::getAllocator(), m_atlas); + BX_DELETE(VirtualTexture::getAllocator(), m_loader); + BX_DELETE(VirtualTexture::getAllocator(), m_cache); + BX_DELETE(VirtualTexture::getAllocator(), m_pageTable); + // Destroy all uniforms and textures + bgfx::destroy(u_vt_settings_1); + bgfx::destroy(u_vt_settings_2); + bgfx::destroy(s_vt_page_table); + bgfx::destroy(s_vt_texture_atlas); +} + +int VirtualTexture::getMipBias() const +{ + return m_mipBias; +} + +void VirtualTexture::setMipBias(int value) +{ + m_mipBias = bx::max(0, value); +} + +void VirtualTexture::setUniforms() +{ + struct + { + struct + { + float VirtualTextureSize; + float ooAtlasScale; + float BorderScale; + float BorderOffset; + } m_settings_1; + + struct + { + float MipBias; + float PageTableSize; + float unused1; + float unused2; + } m_settings_2; + + } uniforms; + + int pagesize = m_info->GetPageSize(); + uniforms.m_settings_1.VirtualTextureSize = (float)m_info->m_virtualTextureSize; + uniforms.m_settings_1.ooAtlasScale = 1.0f / (float)m_atlasCount; + uniforms.m_settings_1.BorderScale = (float)((pagesize - 2.0f * m_info->m_borderSize) / pagesize); + uniforms.m_settings_1.BorderOffset = (float)m_info->m_borderSize / (float)pagesize; + uniforms.m_settings_2.MipBias = (float)m_mipBias; + uniforms.m_settings_2.PageTableSize = (float)m_info->GetPageTableSize(); + uniforms.m_settings_2.unused1 = uniforms.m_settings_2.unused2 = 0.0f; + + bgfx::setUniform(u_vt_settings_1, &uniforms.m_settings_1); + bgfx::setUniform(u_vt_settings_2, &uniforms.m_settings_2); + + bgfx::setTexture(0, s_vt_page_table, m_pageTable->getTexture()); + bgfx::setTexture(1, s_vt_texture_atlas, m_atlas->getTexture()); +} + +void VirtualTexture::setUploadsPerFrame(int count) +{ + m_uploadsPerFrame = count; + m_atlas->setUploadsPerFrame(count); +} + +int VirtualTexture::getUploadsPerFrame() const +{ + return m_uploadsPerFrame; +} + + +void VirtualTexture::enableShowBoarders(bool enable) +{ + if (m_loader->m_showBorders == enable) + { + return; + } + + m_loader->m_showBorders = enable; + clear(); +} + +bool VirtualTexture::isShowBoardersEnabled() const +{ + return m_loader->m_showBorders; +} + +void VirtualTexture::enableColorMipLevels(bool enable) +{ + if (m_loader->m_colorMipLevels == enable) + { + return; + } + + m_loader->m_colorMipLevels = enable; + clear(); +} + +bool VirtualTexture::isColorMipLevelsEnabled() const +{ + return m_loader->m_colorMipLevels; +} + +bgfx::TextureHandle VirtualTexture::getAtlastTexture() +{ + return m_atlas->getTexture(); +} + +bgfx::TextureHandle VirtualTexture::getPageTableTexture() +{ + return m_pageTable->getTexture(); +} + +void VirtualTexture::clear() +{ + m_cache->clear(); +} + +void VirtualTexture::update(const tinystl::vector<int>& requests, bgfx::ViewId blitViewId) +{ + m_pagesToLoad.clear(); + + // Find out what is already in memory + // If it is, update it's position in the LRU collection + // Otherwise add it to the list of pages to load + int touched = 0; + for (int i = 0; i < (int)requests.size(); ++i) + { + if (requests[i] > 0) + { + PageCount pc(m_indexer->getPageFromIndex(i), requests[i]); + if (!m_cache->touch(pc.m_page)) + { + m_pagesToLoad.push_back(pc); + } + else + { + ++touched; + } + } + } + + // Check to make sure we don't thrash + if (touched < m_atlasCount * m_atlasCount) + { + // sort by low res to high res and number of requests + bx::quickSort( + m_pagesToLoad.begin() + , uint32_t(m_pagesToLoad.size()) + , sizeof(vt::PageCount) + , [](const void* _a, const void* _b) -> int32_t { + const vt::PageCount& lhs = *(const vt::PageCount*)(_a); + const vt::PageCount& rhs = *(const vt::PageCount*)(_b); + return lhs.compareTo(rhs); + }); + + // if more pages than will fit in memory or more than update per frame drop high res pages with lowest use count + int loadcount = bx::min(bx::min((int)m_pagesToLoad.size(), m_uploadsPerFrame), m_atlasCount * m_atlasCount); + for (int i = 0; i < loadcount; ++i) + m_cache->request(m_pagesToLoad[i].m_page, blitViewId); + } + else + { + // The problem here is that all pages in cache are requested and the new or high res ones don't get uploaded + // We can adjust the mip bias to make it all fit. This solves the problem of page cache thrashing + --m_mipBias; + } + + // Update the page table + m_pageTable->update(blitViewId); +} + +bx::AllocatorI* VirtualTexture::s_allocator = nullptr; + +void VirtualTexture::setAllocator(bx::AllocatorI* allocator) +{ + s_allocator = allocator; +} + +bx::AllocatorI* VirtualTexture::getAllocator() +{ + return s_allocator; +} + +TileDataFile::TileDataFile(const bx::FilePath& filename, VirtualTextureInfo* _info, bool _readWrite) : m_info(_info) +{ + const char* access = _readWrite ? "w+b" : "rb"; + m_file = fopen(filename.getCPtr(), access); + m_size = m_info->GetPageSize() * m_info->GetPageSize() * s_channelCount; +} + +TileDataFile::~TileDataFile() +{ + fclose(m_file); +} + +void TileDataFile::readInfo() +{ + fseek(m_file, 0, SEEK_SET); + auto ret = fread(m_info, sizeof(*m_info), 1, m_file); + BX_UNUSED(ret); + m_size = m_info->GetPageSize() * m_info->GetPageSize() * s_channelCount; +} + +void TileDataFile::writeInfo() +{ + fseek(m_file, 0, SEEK_SET); + auto ret = fwrite(m_info, sizeof(*m_info), 1, m_file); + BX_UNUSED(ret); +} + +void TileDataFile::readPage(int index, uint8_t* data) +{ + fseek(m_file, m_size * index + s_tileFileDataOffset, SEEK_SET); + auto ret = fread(data, m_size, 1, m_file); + BX_UNUSED(ret); +} + +void TileDataFile::writePage(int index, uint8_t* data) +{ + fseek(m_file, m_size * index + s_tileFileDataOffset, SEEK_SET); + auto ret = fwrite(data, m_size, 1, m_file); + BX_UNUSED(ret); +} + +// TileGenerator +TileGenerator::TileGenerator(VirtualTextureInfo* _info) + : m_info(_info) + , m_indexer(nullptr) + , m_tileDataFile(nullptr) + , m_sourceImage(nullptr) + , m_page1Image(nullptr) + , m_page2Image(nullptr) + , m_2xtileImage(nullptr) + , m_4xtileImage(nullptr) + , m_tileImage(nullptr) +{ + m_tilesize = m_info->m_tileSize; + m_pagesize = m_info->GetPageSize(); +} + +TileGenerator::~TileGenerator() +{ + if (m_sourceImage != nullptr) + { + bimg::imageFree(m_sourceImage); + } + + BX_DELETE(VirtualTexture::getAllocator(), m_indexer); + + BX_DELETE(VirtualTexture::getAllocator(), m_page1Image); + BX_DELETE(VirtualTexture::getAllocator(), m_page2Image); + BX_DELETE(VirtualTexture::getAllocator(), m_2xtileImage); + BX_DELETE(VirtualTexture::getAllocator(), m_4xtileImage); + BX_DELETE(VirtualTexture::getAllocator(), m_tileImage); +} + +bool TileGenerator::generate(const bx::FilePath& _filePath) +{ + const bx::StringView baseName = _filePath.getBaseName(); + + // Generate cache filename + char tmp[256]; + bx::snprintf(tmp, sizeof(tmp), "%.*s.vt", baseName.getLength(), baseName.getPtr() ); + + bx::FilePath cacheFilePath("temp"); + cacheFilePath.join(tmp); + + // Check if tile file already exist + { + bx::Error err; + bx::FileReader fileReader; + + if (bx::open(&fileReader, cacheFilePath, &err) ) + { + bx::close(&fileReader); + + bx::debugPrintf("Tile data file '%s' already exists. Skipping generation.\n", cacheFilePath.getCPtr() ); + return true; + } + } + + // Read image + { + bx::debugPrintf("Reading image '%s'.\n", _filePath.getCPtr() ); + + bx::Error err; + bx::FileReader fileReader; + + if (!bx::open(&fileReader, _filePath, &err) ) + { + bx::debugPrintf("Image open failed'%s'.\n", _filePath.getCPtr() ); + return false; + } + + int64_t size = bx::getSize(&fileReader); + + if (0 == size) + { + bx::debugPrintf("Image '%s' size is 0.\n", _filePath.getCPtr() ); + return false; + } + + uint8_t* rawImage = (uint8_t*)BX_ALLOC(VirtualTexture::getAllocator(), size_t(size) ); + + bx::read(&fileReader, rawImage, int32_t(size), &err); + bx::close(&fileReader); + + if (!err.isOk() ) + { + bx::debugPrintf("Image read failed'%s'.\n", _filePath.getCPtr() ); + BX_FREE(VirtualTexture::getAllocator(), rawImage); + return false; + } + + m_sourceImage = bimg::imageParse(VirtualTexture::getAllocator(), rawImage, uint32_t(size), bimg::TextureFormat::BGRA8, &err); + BX_FREE(VirtualTexture::getAllocator(), rawImage); + + if (!err.isOk() ) + { + bx::debugPrintf("Image parse failed'%s'.\n", _filePath.getCPtr() ); + return false; + } + } + + // Setup + m_info->m_virtualTextureSize = int(m_sourceImage->m_width); + m_indexer = BX_NEW(VirtualTexture::getAllocator(), PageIndexer)(m_info); + + // Open tile data file + m_tileDataFile = BX_NEW(VirtualTexture::getAllocator(), TileDataFile)(cacheFilePath, m_info, true); + m_page1Image = BX_NEW(VirtualTexture::getAllocator(), SimpleImage)(m_pagesize, m_pagesize, s_channelCount, 0xff); + m_page2Image = BX_NEW(VirtualTexture::getAllocator(), SimpleImage)(m_pagesize, m_pagesize, s_channelCount, 0xff); + m_tileImage = BX_NEW(VirtualTexture::getAllocator(), SimpleImage)(m_tilesize, m_tilesize, s_channelCount, 0xff); + m_2xtileImage = BX_NEW(VirtualTexture::getAllocator(), SimpleImage)(m_tilesize * 2, m_tilesize * 2, s_channelCount, 0xff); + m_4xtileImage = BX_NEW(VirtualTexture::getAllocator(), SimpleImage)(m_tilesize * 4, m_tilesize * 4, s_channelCount, 0xff); + + // Generate tiles + bx::debugPrintf("Generating tiles\n"); + auto mipcount = m_indexer->getMipCount(); + for (int i = 0; i < mipcount; ++i) + { + int count = (m_info->m_virtualTextureSize / m_tilesize) >> i; + bx::debugPrintf("Generating Mip:%d Count:%dx%d\n", i, count, count); + for (int y = 0; y < count; ++y) + { + for (int x = 0; x < count; ++x) + { + Page page = { x, y, i }; + int index = m_indexer->getIndexFromPage(page); + CopyTile(*m_page1Image, page); + m_tileDataFile->writePage(index, &m_page1Image->m_data[0]); + } + } + } + + bx::debugPrintf("Finising\n"); + // Write header + m_tileDataFile->writeInfo(); + // Close tile file + BX_DELETE(VirtualTexture::getAllocator(), m_tileDataFile); + m_tileDataFile = nullptr; + bx::debugPrintf("Done!\n"); + return true; +} + +void TileGenerator::CopyTile(SimpleImage& image, Page request) +{ + if (request.m_mip == 0) + { + int x = request.m_x * m_tilesize - m_info->m_borderSize; + int y = request.m_y * m_tilesize - m_info->m_borderSize; + // Copy sub-image with border + auto srcPitch = m_sourceImage->m_width * s_channelCount; + auto src = (uint8_t*)m_sourceImage->m_data; + auto dstPitch = image.m_width * image.m_channelCount; + auto dst = &image.m_data[0]; + for (int iy = 0; iy < m_pagesize; ++iy) + { + int ry = bx::clamp(y + iy, 0, (int)m_sourceImage->m_height - 1); + for (int ix = 0; ix < m_pagesize; ++ix) + { + int rx = bx::clamp(x + ix, 0, (int)m_sourceImage->m_width - 1); + bx::memCopy(&dst[iy * dstPitch + ix * image.m_channelCount], &src[ry * srcPitch + rx * s_channelCount], image.m_channelCount); + } + } + } + else + { + int xpos = request.m_x << 1; + int ypos = request.m_y << 1; + int mip = request.m_mip - 1; + + int size = m_info->GetPageTableSize() >> mip; + + m_4xtileImage->clear((uint8_t)request.m_mip); + + for (int y = 0; y < 4; ++y) + { + for (int x = 0; x < 4; ++x) + { + Page page = { xpos + x - 1, ypos + y - 1, mip }; + + // Wrap so we get the border sections of other pages + page.m_x = (int)bx::mod((float)page.m_x, (float)size); + page.m_y = (int)bx::mod((float)page.m_y, (float)size); + + m_tileDataFile->readPage(m_indexer->getIndexFromPage(page), &m_page2Image->m_data[0]); + + Rect src_rect = { m_info->m_borderSize, m_info->m_borderSize, m_tilesize, m_tilesize }; + Point dst_offset = { x * m_tilesize, y * m_tilesize }; + + m_4xtileImage->copy(dst_offset, *m_page2Image, src_rect); + } + } + + SimpleImage::mipmap(&m_4xtileImage->m_data[0], m_4xtileImage->m_width, s_channelCount, &m_2xtileImage->m_data[0]); + + Rect srect = { m_tilesize / 2 - m_info->m_borderSize, m_tilesize / 2 - m_info->m_borderSize, m_pagesize, m_pagesize }; + image.copy({ 0,0 }, *m_2xtileImage, srect); + } +} + +} // namespace vt diff --git a/3rdparty/bgfx/examples/40-svt/vt.h b/3rdparty/bgfx/examples/40-svt/vt.h new file mode 100644 index 00000000000..211cf153dd8 --- /dev/null +++ b/3rdparty/bgfx/examples/40-svt/vt.h @@ -0,0 +1,443 @@ +/* + * Copyright 2018 Ales Mlakar. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + + /* + * Reference(s): + * - Sparse Virtual Textures by Sean Barrett + * http://web.archive.org/web/20190103162611/http://silverspaceship.com/src/svt/ + * - Based on Virtual Texture Demo by Brad Blanchard + * http://web.archive.org/web/20190103162638/http://linedef.com/virtual-texture-demo.html + * - Mars texture + * http://web.archive.org/web/20190103162730/http://www.celestiamotherlode.net/catalog/mars.php + */ + +#pragma once + +#include <bimg/decode.h> +#include <tinystl/allocator.h> +#include <tinystl/unordered_set.h> +#include <tinystl/vector.h> +#include <functional> + +#include "common.h" +#include "bgfx_utils.h" + +#include <stdio.h> // FILE + +namespace vt +{ + +// Forward declarations +class PageCache; +class TextureAtlas; +class TileDataFile; + +// Point +struct Point +{ + int m_x, m_y; +}; + +// Rect +struct Rect +{ + int minX() const + { + return m_x; + } + + int minY() const + { + return m_y; + } + + int maxX() const + { + return m_x + m_width; + } + + int maxY() const + { + return m_y + m_height; + } + + bool contains(const Point& p) const + { + return p.m_x >= minX() && p.m_y >= minY() && p.m_x < maxX() && p.m_y < maxY(); + } + + int m_x, m_y, m_width, m_height; +}; + +// Color +struct Color +{ + uint8_t m_r, m_g, m_b, m_a; +}; + +// Page +struct Page +{ + operator size_t() const; + + int m_x; + int m_y; + int m_mip; +}; + +// PageCount +struct PageCount +{ + Page m_page; + int m_count; + + PageCount(Page _page, int _count); + + int compareTo(const PageCount& other) const; +}; + +// VirtualTextureInfo +struct VirtualTextureInfo +{ + VirtualTextureInfo(); + int GetPageSize() const; + int GetPageTableSize() const; + + int m_virtualTextureSize = 0; + int m_tileSize = 0; + int m_borderSize = 0; +}; + +// StagingPool +class StagingPool +{ +public: + StagingPool(int _width, int _height, int _count, bool _readBack); + ~StagingPool(); + + void grow(int count); + + bgfx::TextureHandle getTexture(); + void next(); + +private: + tinystl::vector<bgfx::TextureHandle> m_stagingTextures; + + int m_stagingTextureIndex; + int m_width; + int m_height; + uint64_t m_flags; +}; + +// PageIndexer +struct PageIndexer +{ +public: + PageIndexer(VirtualTextureInfo* _info); + + int getIndexFromPage(Page page); + Page getPageFromIndex(int index); + + bool isValid(Page page); + int getCount() const; + int getMipCount() const; + +private: + VirtualTextureInfo* m_info; + int m_mipcount; + int m_count; + + tinystl::vector<int> m_offsets; // This stores the offsets to the first page of the start of a mipmap level + tinystl::vector<int> m_sizes; // This stores the sizes of various mip levels + tinystl::vector<Page> m_reverse; +}; + +// SimpleImage +struct SimpleImage +{ + SimpleImage(int _width, int _height, int _channelCount, uint8_t _clearValue = 0); + SimpleImage(int _width, int _height, int _channelCount, tinystl::vector<uint8_t>& _data); + + void copy(Point dest_offset, SimpleImage& src, Rect src_rect); + void clear(uint8_t clearValue = 0); + void fill(Rect rect, uint8_t r, uint8_t g, uint8_t b, uint8_t a); + + static void mipmap(uint8_t* source, int size, int channels, uint8_t* dest); + + int m_width = 0; + int m_height = 0; + int m_channelCount = 0; + + tinystl::vector<uint8_t> m_data; +}; + +// Quadtree +struct Quadtree +{ + Quadtree(Rect _rect, int _level); + ~Quadtree(); + + void add(Page request, Point mapping); + void remove(Page request); + void write(SimpleImage& image, int miplevel); + Rect getRectangle(int index); + + void write(Quadtree* node, SimpleImage& image, int miplevel); + static Quadtree* findPage(Quadtree* node, Page request, int* index); + + Rect m_rectangle; + int m_level; + Point m_mapping; + Quadtree* m_children[4]; +}; + +// PageTable +class PageTable +{ +public: + PageTable(PageCache* _cache, VirtualTextureInfo* _info, PageIndexer* _indexer); + ~PageTable(); + + void update(bgfx::ViewId blitViewId); + bgfx::TextureHandle getTexture(); + +private: + VirtualTextureInfo* m_info; + bgfx::TextureHandle m_texture; + PageIndexer* m_indexer; + Quadtree* m_quadtree; + bool m_quadtreeDirty; + + tinystl::vector<SimpleImage*> m_images; + tinystl::vector<bgfx::TextureHandle> m_stagingTextures; +}; + +// PageLoader +class PageLoader +{ +public: + struct ReadState + { + Page m_page; + tinystl::vector<uint8_t> m_data; + }; + + PageLoader(TileDataFile* _tileDataFile, PageIndexer* _indexer, VirtualTextureInfo* _info); + void submit(Page request); + void loadPage(ReadState& state); + void onPageLoadComplete(ReadState& state); + void copyBorder(uint8_t* image); + void copyColor(uint8_t* image, Page request); + + std::function<void(Page, uint8_t*)> loadComplete; + + bool m_colorMipLevels; + bool m_showBorders; + +private: + TileDataFile* m_tileDataFile; + PageIndexer* m_indexer; + VirtualTextureInfo* m_info; +}; + +// PageCache +class PageCache +{ +public: + PageCache(TextureAtlas* _atlas, PageLoader* _loader, int _count); + bool touch(Page page); + bool request(Page request, bgfx::ViewId blitViewId); + void clear(); + void loadComplete(Page page, uint8_t* data); + + // These callbacks are used to notify the other systems + std::function<void(Page, Point)> removed; + std::function<void(Page, Point)> added; + +private: + TextureAtlas* m_atlas; + PageLoader* m_loader; + + int m_count; + + struct LruPage + { + Page m_page; + Point m_point; + + bool operator==(const Page& other) const + { + return m_page == other; + } + }; + + int m_current; // This is used for generating the texture atlas indices before the lru is full + + tinystl::unordered_set<Page> m_lru_used; + tinystl::vector<LruPage> m_lru; + tinystl::unordered_set<Page> m_loading; + + bgfx::ViewId m_blitViewId; +}; + +// TextureAtlas +class TextureAtlas +{ +public: + TextureAtlas(VirtualTextureInfo* _info, int count, int uploadsperframe); + ~TextureAtlas(); + + void setUploadsPerFrame(int count); + void uploadPage(Point pt, uint8_t* data, bgfx::ViewId blitViewId); + + bgfx::TextureHandle getTexture(); + +private: + VirtualTextureInfo* m_info; + bgfx::TextureHandle m_texture; + StagingPool m_stagingPool; +}; + +// FeedbackBuffer +class FeedbackBuffer +{ +public: + FeedbackBuffer(VirtualTextureInfo* _info, int _width, int _height); + ~FeedbackBuffer(); + + void clear(); + + void copy(bgfx::ViewId viewId); + void download(); + + // This function validates the pages and adds the page's parents + // We do this so that we can fall back to them if we run out of memory + void addRequestAndParents(Page request); + + const tinystl::vector<int>& getRequests() const; + bgfx::FrameBufferHandle getFrameBuffer(); + + int getWidth() const; + int getHeight() const; + +private: + VirtualTextureInfo* m_info; + PageIndexer* m_indexer; + + int m_width = 0; + int m_height = 0; + + StagingPool m_stagingPool; + bgfx::TextureHandle m_lastStagingTexture; + bgfx::FrameBufferHandle m_feedbackFrameBuffer; + + // This stores the pages by index. The int value is number of requests. + tinystl::vector<int> m_requests; + tinystl::vector<uint8_t> m_downloadBuffer; +}; + +// VirtualTexture +class VirtualTexture +{ +public: + VirtualTexture(TileDataFile* _tileDataFile, VirtualTextureInfo* _info, int _atlassize, int _uploadsperframe, int _mipBias = 4); + ~VirtualTexture(); + + int getMipBias() const; + void setMipBias(int value); + + void setUploadsPerFrame(int count); + int getUploadsPerFrame() const; + + void enableShowBoarders(bool enable); + bool isShowBoardersEnabled() const; + + void enableColorMipLevels(bool enable); + bool isColorMipLevelsEnabled() const; + + bgfx::TextureHandle getAtlastTexture(); + bgfx::TextureHandle getPageTableTexture(); + + void clear(); + void update(const tinystl::vector<int>& requests, bgfx::ViewId blitViewId); + + void setUniforms(); + + static void setAllocator(bx::AllocatorI* allocator); + static bx::AllocatorI* getAllocator(); + +private: + TileDataFile* m_tileDataFile; + VirtualTextureInfo* m_info; + PageIndexer* m_indexer; + PageTable* m_pageTable; + TextureAtlas* m_atlas; + PageLoader* m_loader; + PageCache* m_cache; + + int m_atlasCount; + int m_uploadsPerFrame; + + tinystl::vector<PageCount> m_pagesToLoad; + + int m_mipBias; + + bgfx::UniformHandle u_vt_settings_1; + bgfx::UniformHandle u_vt_settings_2; + bgfx::UniformHandle s_vt_page_table; + bgfx::UniformHandle s_vt_texture_atlas; + + static bx::AllocatorI* s_allocator; +}; + +// TileDataFile +class TileDataFile +{ +public: + TileDataFile(const bx::FilePath& filename, VirtualTextureInfo* _info, bool _readWrite = false); + ~TileDataFile(); + + void readInfo(); + void writeInfo(); + + void readPage(int index, uint8_t* data); + void writePage(int index, uint8_t* data); + +private: + VirtualTextureInfo* m_info; + int m_size; + FILE* m_file; +}; + +// TileGenerator +class TileGenerator +{ +public: + TileGenerator(VirtualTextureInfo* _info); + ~TileGenerator(); + + bool generate(const bx::FilePath& filename); + +private: + void CopyTile(SimpleImage& image, Page request); + +private: + VirtualTextureInfo* m_info; + PageIndexer* m_indexer; + TileDataFile* m_tileDataFile; + + int m_tilesize; + int m_pagesize; + + bimg::ImageContainer* m_sourceImage; + + SimpleImage* m_page1Image; + SimpleImage* m_page2Image; + SimpleImage* m_2xtileImage; + SimpleImage* m_4xtileImage; + SimpleImage* m_tileImage; +}; + +} // namespace vt diff --git a/3rdparty/bgfx/examples/41-tess/cs_terrain_init.sc b/3rdparty/bgfx/examples/41-tess/cs_terrain_init.sc new file mode 100644 index 00000000000..b15f2397024 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/cs_terrain_init.sc @@ -0,0 +1,43 @@ +#include "bgfx_compute.sh" + +#include "uniforms.sh" + +BUFFER_WR(u_SubdBufferOut, uint, 1); +BUFFER_RW(u_CulledSubdBuffer, uint, 2); +BUFFER_RW(indirectBuffer, uvec4, 3); +BUFFER_RW(atomicCounterBuffer, uint, 4); +BUFFER_WR(u_SubdBufferIn, uint, 8); + +NUM_THREADS(1u, 1u, 1u) +void main() +{ + uint subd = 6 << (2 * u_gpu_subd - 1); + + if((2 * u_gpu_subd - 1) <= 0) { + subd = 3u; + } + + drawIndexedIndirect(indirectBuffer, 0u, subd, 0u, 0u, 0u, 0u); + dispatchIndirect(indirectBuffer, 1u, 2u / UPDATE_INDIRECT_VALUE_DIVIDE + 1u, 1u, 1u); + + u_SubdBufferOut[0] = 0; + u_SubdBufferOut[1] = 1; + u_SubdBufferOut[2] = 1; + u_SubdBufferOut[3] = 1; + + u_CulledSubdBuffer[0] = 0; + u_CulledSubdBuffer[1] = 1; + u_CulledSubdBuffer[2] = 1; + u_CulledSubdBuffer[3] = 1; + + u_SubdBufferIn[0] = 0; + u_SubdBufferIn[1] = 1; + u_SubdBufferIn[2] = 1; + u_SubdBufferIn[3] = 1; + + uint tmp; + + atomicFetchAndExchange(atomicCounterBuffer[0], 0, tmp); + atomicFetchAndExchange(atomicCounterBuffer[1], 0, tmp); + atomicFetchAndExchange(atomicCounterBuffer[2], 2, tmp); +} diff --git a/3rdparty/bgfx/examples/41-tess/cs_terrain_lod.sc b/3rdparty/bgfx/examples/41-tess/cs_terrain_lod.sc new file mode 100644 index 00000000000..eb6b24f287a --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/cs_terrain_lod.sc @@ -0,0 +1,81 @@ + +//////////////////////////////////////////////////////////////////////////////// +// Implicit Subdivision Shader for Terrain Rendering +// + +#include "terrain_common.sh" +#include "fcull.sh" + +BUFFER_RO(u_SubdBufferIn, uint, 8); +BUFFER_RW(u_CulledSubdBuffer, uint, 2); +BUFFER_RO(u_VertexBuffer, vec4, 6); +BUFFER_RO(u_IndexBuffer, uint, 7); + +/** + * Compute LoD Shader + * + * This compute shader is responsible for updating the subdivision + * buffer and visible buffer that will be sent to the rasterizer. + */ + +NUM_THREADS(COMPUTE_THREAD_COUNT, 1u, 1u) +void main() +{ + // get threadID (each key is associated to a thread) + uint threadID = gl_GlobalInvocationID.x; + + if (threadID >= u_AtomicCounterBuffer[2]) + { + return; + } + + // get coarse triangle associated to the key + uint primID = u_SubdBufferIn[threadID*2]; + + vec4 v_in[3]; + v_in[0] = u_VertexBuffer[u_IndexBuffer[primID * 3 ]]; + v_in[1] = u_VertexBuffer[u_IndexBuffer[primID * 3 + 1]]; + v_in[2] = u_VertexBuffer[u_IndexBuffer[primID * 3 + 2]]; + + // compute distance-based LOD + uint key = u_SubdBufferIn[threadID*2+1]; + + vec4 v[3]; + vec4 vp[3]; + + subd(key, v_in, v, vp); + + uint targetLod; uint parentLod; + + if (u_freeze == 0) + { + targetLod = uint(computeLod(v)); + parentLod = uint(computeLod(vp)); + } + else + { + targetLod = parentLod = findMSB_(key); + } + + updateSubdBuffer(primID, key, targetLod, parentLod); + + // Cull invisible nodes + mat4 mvp = u_modelViewProj; + vec4 bmin = min(min(v[0], v[1]), v[2]); + vec4 bmax = max(max(v[0], v[1]), v[2]); + + // account for displacement in bound computations + bmin.z = 0; + bmax.z = u_DmapFactor; + + // update CulledSubdBuffer + if (u_cull == 0 + || frustumCullingTest(mvp, bmin.xyz, bmax.xyz) ) + { + // write key + uint idx = 0; + atomicFetchAndAdd(u_AtomicCounterBuffer[1], 2, idx); + u_CulledSubdBuffer[idx] = primID; + u_CulledSubdBuffer[idx+1] = key; + } +} diff --git a/3rdparty/bgfx/examples/41-tess/cs_terrain_update_draw.sc b/3rdparty/bgfx/examples/41-tess/cs_terrain_update_draw.sc new file mode 100644 index 00000000000..3ea1882fd26 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/cs_terrain_update_draw.sc @@ -0,0 +1,19 @@ +#include "bgfx_compute.sh" +#include "uniforms.sh" + +BUFFER_RW(indirectBuffer, uvec4, 3); +BUFFER_RW(atomicCounterBuffer, uint, 4); + +NUM_THREADS(1u, 1u, 1u) +void main() +{ + uint counter = atomicCounterBuffer[1]; + + uint subd = 6 << (2 * u_gpu_subd - 1); + + if((2 * u_gpu_subd - 1) <= 0) { + subd = 3u; + } + + drawIndexedIndirect(indirectBuffer, 0, subd, counter / 2, 0u, 0u, 0u); +} diff --git a/3rdparty/bgfx/examples/41-tess/cs_terrain_update_indirect.sc b/3rdparty/bgfx/examples/41-tess/cs_terrain_update_indirect.sc new file mode 100644 index 00000000000..96041814553 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/cs_terrain_update_indirect.sc @@ -0,0 +1,23 @@ +#include "bgfx_compute.sh" +#include "uniforms.sh" + +BUFFER_RW(indirectBuffer, uvec4, 3); +BUFFER_RW(atomicCounterBuffer, uint, 4); + +NUM_THREADS(1u, 1u, 1u) +void main() +{ + uint counter; + uint counter2; + + atomicFetchAndExchange(atomicCounterBuffer[0], 0u, counter); + atomicFetchAndExchange(atomicCounterBuffer[1], 0u, counter2); + + uint cnt = (counter / 2u) / UPDATE_INDIRECT_VALUE_DIVIDE + 1u; + + uint tmp; + + atomicFetchAndExchange(atomicCounterBuffer[2], (counter / 2), tmp); + + dispatchIndirect(indirectBuffer, 1u, cnt, 1u, 1u); +} diff --git a/3rdparty/bgfx/examples/41-tess/fcull.sh b/3rdparty/bgfx/examples/41-tess/fcull.sh new file mode 100644 index 00000000000..d44280ba23b --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/fcull.sh @@ -0,0 +1,66 @@ +bool frustumCullingTest(mat4 mvp, vec3 bmin, vec3 bmax); + +struct Frustum +{ + vec4 planes[6]; +}; + +/** + * Extract Frustum Planes from MVP Matrix + * + * Based on "Fast Extraction of Viewing Frustum Planes from the World- + * View-Projection Matrix", by Gil Gribb and Klaus Hartmann. + * This procedure computes the planes of the frustum and normalizes + * them. + */ +void loadFrustum(out Frustum f, mat4 mvp) +{ + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 2; ++j) + { + f.planes[i*2+j].x = mtxGetElement(mvp, 0, 3) + (j == 0 ? mtxGetElement(mvp, 0, i) : -mtxGetElement(mvp, 0, i)); + f.planes[i*2+j].y = mtxGetElement(mvp, 1, 3) + (j == 0 ? mtxGetElement(mvp, 1, i) : -mtxGetElement(mvp, 1, i)); + f.planes[i*2+j].z = mtxGetElement(mvp, 2, 3) + (j == 0 ? mtxGetElement(mvp, 2, i) : -mtxGetElement(mvp, 2, i)); + f.planes[i*2+j].w = mtxGetElement(mvp, 3, 3) + (j == 0 ? mtxGetElement(mvp, 3, i) : -mtxGetElement(mvp, 3, i)); + f.planes[i*2+j]*= length(f.planes[i*2+j].xyz); + } + } +} + +/** + * Negative Vertex of an AABB + * + * This procedure computes the negative vertex of an AABB + * given a normal. + * See the View Frustum Culling tutorial @ LightHouse3D.com + * http://www.lighthouse3d.com/tutorials/view-frustum-culling/geometric-approach-testing-boxes-ii/ + */ +vec3 negativeVertex(vec3 bmin, vec3 bmax, vec3 n) +{ + bvec3 b = greaterThan(n, vec3(0.0, 0.0, 0.0)); + return mix(bmin, bmax, b); +} + +/** + * Frustum-AABB Culling Test + * + * This procedure returns true if the AABB is either inside, or in + * intersection with the frustum, and false otherwise. + * The test is based on the View Frustum Culling tutorial @ LightHouse3D.com + * http://www.lighthouse3d.com/tutorials/view-frustum-culling/geometric-approach-testing-boxes-ii/ + */ +bool frustumCullingTest(mat4 mvp, vec3 bmin, vec3 bmax) +{ + float a = 1.0f; + Frustum f; + + loadFrustum(f, mvp); + for (int i = 0; i < 6 && a >= 0.0f; ++i) + { + vec3 n = negativeVertex(bmin, bmax, f.planes[i].xyz); + a = dot(vec4(n, 1.0f), f.planes[i]); + } + + return (a >= 0.0); +} diff --git a/3rdparty/bgfx/examples/41-tess/fs_terrain_render.sc b/3rdparty/bgfx/examples/41-tess/fs_terrain_render.sc new file mode 100644 index 00000000000..db138a397f5 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/fs_terrain_render.sc @@ -0,0 +1,12 @@ +$input v_texcoord0 + +#include "terrain_common.sh" + +void main() +{ + vec2 s = texture2D(u_SmapSampler, v_texcoord0).rg * u_DmapFactor; + vec3 n = normalize(vec3(-s, 1)); + float d = clamp(n.z, 0.0, 1.0) / 3.14159; + vec3 r = vec3(d, d, d); + gl_FragColor = vec4(r, 1); +} diff --git a/3rdparty/bgfx/examples/41-tess/fs_terrain_render_normal.sc b/3rdparty/bgfx/examples/41-tess/fs_terrain_render_normal.sc new file mode 100644 index 00000000000..32e1d0c02d9 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/fs_terrain_render_normal.sc @@ -0,0 +1,10 @@ +$input v_texcoord0 + +#include "terrain_common.sh" + +void main() +{ + vec2 s = texture2D(u_SmapSampler, v_texcoord0).rg * u_DmapFactor; + vec3 n = normalize(vec3(-s, 1)); + gl_FragColor = vec4(abs(n), 1); +} diff --git a/3rdparty/bgfx/examples/41-tess/isubd.sh b/3rdparty/bgfx/examples/41-tess/isubd.sh new file mode 100644 index 00000000000..32100b53a46 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/isubd.sh @@ -0,0 +1,127 @@ +uint findMSB_(uint x) +{ + uint i; + uint mask; + uint res = -1; + + for (i = 0; i < 32; i++) + { + mask = 0x80000000 >> i; + + if ((x & mask) != 0) + { + res = 31 - i; + break; + } + } + + return res; +} + +uint parentKey(in uint key) +{ + return (key >> 1u); +} + +void childrenKeys(in uint key, out uint children[2]) +{ + children[0] = (key << 1u) | 0u; + children[1] = (key << 1u) | 1u; +} + +bool isRootKey(in uint key) +{ + return (key == 1u); +} + +bool isLeafKey(in uint key) +{ + return findMSB_(key) == 31; +} + +bool isChildZeroKey(in uint key) +{ + return ((key & 1u) == 0u); +} + +// barycentric interpolation +vec3 berp(in vec3 v[3], in vec2 u) +{ + return v[0] + u.x * (v[1] - v[0]) + u.y * (v[2] - v[0]); +} + +vec4 berp(in vec4 v[3], in vec2 u) +{ + return v[0] + u.x * (v[1] - v[0]) + u.y * (v[2] - v[0]); +} + +// get xform from bit value +mat3 bitToXform(in uint bit) +{ + float b = float(bit); + float c = 1.0f - b; + + vec3 c1 = vec3(0.0f, c , b ); + vec3 c2 = vec3(0.5f, b , 0.0f); + vec3 c3 = vec3(0.5f, 0.0f, c ); + + return mtxFromCols(c1, c2, c3); +} + +// get xform from key +mat3 keyToXform(in uint key) +{ + vec3 c1 = vec3(1.0f, 0.0f, 0.0f); + vec3 c2 = vec3(0.0f, 1.0f, 0.0f); + vec3 c3 = vec3(0.0f, 0.0f, 1.0f); + + mat3 xf = mtxFromCols(c1, c2, c3); + + while (key > 1u) { + xf = mul(xf, bitToXform(key & 1u)); + key = key >> 1u; + } + + return xf; +} + +// get xform from key as well as xform from parent key +mat3 keyToXform(in uint key, out mat3 xfp) +{ + xfp = keyToXform(parentKey(key)); + return keyToXform(key); +} + +// subdivision routine (vertex position only) +void subd(in uint key, in vec4 v_in[3], out vec4 v_out[3]) +{ + mat3 xf = keyToXform(key); + + mat4x3 m = mtxFromRows(v_in[0], v_in[1], v_in[2]); + + mat4x3 v = mul(xf, m); + + v_out[0] = mtxGetRow(v, 0); + v_out[1] = mtxGetRow(v, 1); + v_out[2] = mtxGetRow(v, 2); +} + +// subdivision routine (vertex position only) +// also computes parent position +void subd(in uint key, in vec4 v_in[3], out vec4 v_out[3], out vec4 v_out_p[3]) +{ + mat3 xfp; mat3 xf = keyToXform(key, xfp); + + mat4x3 m = mtxFromRows(v_in[0], v_in[1], v_in[2]); + + mat4x3 v = mul(xf, m); + mat4x3 vp = mul(xfp, m); + + v_out[0] = mtxGetRow(v, 0); + v_out[1] = mtxGetRow(v, 1); + v_out[2] = mtxGetRow(v, 2); + + v_out_p[0] = mtxGetRow(vp, 0); + v_out_p[1] = mtxGetRow(vp, 1); + v_out_p[2] = mtxGetRow(vp, 2); +} diff --git a/3rdparty/bgfx/examples/41-tess/makefile b/3rdparty/bgfx/examples/41-tess/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/41-tess/matrices.sh b/3rdparty/bgfx/examples/41-tess/matrices.sh new file mode 100644 index 00000000000..b52e5684640 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/matrices.sh @@ -0,0 +1,68 @@ + + +//I decided to keep the non square matrices definition in the example, since I am still not sure how non square matrices should be treated in bgfx (Daniel Gavin) + +#ifndef MATRICES_H_HEADER_GUARD +#define MATRICES_H_HEADER_GUARD + +#ifndef __cplusplus + +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_SPIRV || BGFX_SHADER_LANGUAGE_METAL + +# define mat3x4 float4x3 +# define mat4x3 float3x4 + +#else + + +#endif // BGFX_SHADER_LANGUAGE_* + +mat4x3 mtxFromRows(vec4 _0, vec4 _1, vec4 _2) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return transpose(mat3x4(_0, _1, _2) ); +#else + return mat4x3(_0, _1, _2); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +vec4 mtxGetRow(mat4x3 _0, uint row) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return vec4(_0[0][row], _0[1][row], _0[2][row], _0[3][row]); +#else + return vec4(_0[row]); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +vec4 mtxGetRow(mat4 _0, uint row) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return vec4(_0[0][row], _0[1][row], _0[2][row], _0[3][row]); +#else + return vec4(_0[row]); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +vec4 mtxGetColumn(mat4 _0, uint column) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return vec4(_0[column]); +#else + return vec4(_0[0][column], _0[1][column], _0[2][column], _0[3][column]); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +float mtxGetElement(mat4 _0, uint column, uint row) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return _0[column][row]; +#else + return _0[row][column]; +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + + +#endif // __cplusplus + +#endif // MATRICES_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/41-tess/screenshot.png b/3rdparty/bgfx/examples/41-tess/screenshot.png Binary files differnew file mode 100644 index 00000000000..8b0ad319964 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/screenshot.png diff --git a/3rdparty/bgfx/examples/41-tess/terrain_common.sh b/3rdparty/bgfx/examples/41-tess/terrain_common.sh new file mode 100644 index 00000000000..f7d0e3e8bbd --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/terrain_common.sh @@ -0,0 +1,99 @@ +#include "bgfx_compute.sh" +#include "matrices.sh" +#include "isubd.sh" +#include "uniforms.sh" + +BUFFER_RW(u_AtomicCounterBuffer, uint, 4); +BUFFER_RW(u_SubdBufferOut, uint, 1); + +SAMPLER2D(u_DmapSampler, 0); // displacement map +SAMPLER2D(u_SmapSampler, 1); // slope map + +// displacement map +float dmap(vec2 pos) +{ + return (texture2DLod(u_DmapSampler, pos * 0.5 + 0.5, 0).x) * u_DmapFactor; +} + +float distanceToLod(float z, float lodFactor) +{ + // Note that we multiply the result by two because the triangles + // edge lengths decreases by half every two subdivision steps. + return -2.0 * log2(clamp(z * lodFactor, 0.0f, 1.0f)); +} + +float computeLod(vec3 c) +{ + //displace + c.z += dmap(mtxGetColumn(u_invView, 3).xy); + + vec3 cxf = mul(u_modelView, vec4(c.x, c.y, c.z, 1)).xyz; + float z = length(cxf); + + return distanceToLod(z, u_LodFactor); +} + +float computeLod(in vec4 v[3]) +{ + vec3 c = (v[1].xyz + v[2].xyz) / 2.0; + return computeLod(c); +} + +float computeLod(in vec3 v[3]) +{ + vec3 c = (v[1].xyz + v[2].xyz) / 2.0; + return computeLod(c); +} + +void writeKey(uint primID, uint key) +{ + uint idx = 0; + + atomicFetchAndAdd(u_AtomicCounterBuffer[0], 2, idx); + + u_SubdBufferOut[idx] = primID; + u_SubdBufferOut[idx+1] = key; +} + +void updateSubdBuffer( + uint primID + , uint key + , uint targetLod + , uint parentLod + , bool isVisible + ) +{ + // extract subdivision level associated to the key + uint keyLod = findMSB_(key); + + // update the key accordingly + if (/* subdivide ? */ keyLod < targetLod && !isLeafKey(key) && isVisible) + { + uint children[2]; childrenKeys(key, children); + + writeKey(primID, children[0]); + writeKey(primID, children[1]); + } + else if (/* keep ? */ keyLod < (parentLod + 1) && isVisible) + { + writeKey(primID, key); + } + else /* merge ? */ + { + + if (/* is root ? */isRootKey(key)) + { + writeKey(primID, key); + } + + else if (/* is zero child ? */isChildZeroKey(key)) { + writeKey(primID, parentKey(key)); + } + + } +} + +void updateSubdBuffer(uint primID, uint key, uint targetLod, uint parentLod) +{ + updateSubdBuffer(primID, key, targetLod, parentLod, true); +} diff --git a/3rdparty/bgfx/examples/41-tess/tess.cpp b/3rdparty/bgfx/examples/41-tess/tess.cpp new file mode 100644 index 00000000000..8f0ef16433a --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/tess.cpp @@ -0,0 +1,931 @@ +/* + * Copyright 2019 Daniel Gavin. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + + /* + * Reference(s): + * + * - Adaptive GPU Tessellation with Compute Shaders by Jad Khoury, Jonathan Dupuy, and Christophe Riccio + * http://onrendering.com/data/papers/isubd/isubd.pdf + * https://github.com/jdupuy/opengl-framework/tree/master/demo-isubd-terrain#implicit-subdivision-on-the-gpu + */ + +#include <bx/allocator.h> +#include <bx/debug.h> +#include <bx/file.h> +#include <bx/math.h> + +#include "bgfx_utils.h" +#include "camera.h" +#include "common.h" +#include "imgui/imgui.h" + +namespace +{ +static const char* s_shaderOptions[] = +{ + "Normal", + "Diffuse" +}; + +static const float s_verticesL0[] = +{ + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, +}; + +static const uint32_t s_indexesL0[] = { 0u, 1u, 2u }; + +static const float s_verticesL1[] = +{ + 0.0f, 1.0f, + 0.5f, 0.5f, + 0.0f, 0.5f, + 0.0f, 0.0f, + 0.5f, 0.0f, + 1.0f, 0.0f, +}; + +static const uint32_t s_indexesL1[] = +{ + 1u, 0u, 2u, + 1u, 2u, 3u, + 1u, 3u, 4u, + 1u, 4u, 5u, +}; + +static const float s_verticesL2[] = +{ + 0.25f, 0.75f, + 0.0f, 1.0f, + 0.0f, 0.75f, + 0.0f, 0.5f, + 0.25f, 0.5f, + 0.5f, 0.5f, + + 0.25f, 0.25f, + 0.0f, 0.25f, + 0.0f, 0.0f, + 0.25f, 0.0f, + 0.5f, 0.0f, + 0.5f, 0.25f, + 0.75f, 0.25f, + 0.75f, 0.0f, + 1.0f, 0.0f, +}; + +static const uint32_t s_indexesL2[] = +{ + 0u, 1u, 2u, + 0u, 2u, 3u, + 0u, 3u, 4u, + 0u, 4u, 5u, + + 6u, 5u, 4u, + 6u, 4u, 3u, + 6u, 3u, 7u, + 6u, 7u, 8u, + + 6u, 8u, 9u, + 6u, 9u, 10u, + 6u, 10u, 11u, + 6u, 11u, 5u, + + 12u, 5u, 11u, + 12u, 11u, 10u, + 12u, 10u, 13u, + 12u, 13u, 14u, +}; + +static const float s_verticesL3[] = +{ + 0.25f*0.5f, 0.75f*0.5f + 0.5f, + 0.0f*0.5f, 1.0f*0.5f + 0.5f, + 0.0f*0.5f, 0.75f*0.5f + 0.5f, + 0.0f*0.5f , 0.5f*0.5f + 0.5f, + 0.25f*0.5f, 0.5f*0.5f + 0.5f, + 0.5f*0.5f, 0.5f*0.5f + 0.5f, + 0.25f*0.5f, 0.25f*0.5f + 0.5f, + 0.0f*0.5f, 0.25f*0.5f + 0.5f, + 0.0f*0.5f, 0.0f*0.5f + 0.5f, + 0.25f*0.5f, 0.0f*0.5f + 0.5f, + 0.5f*0.5f, 0.0f*0.5f + 0.5f, + 0.5f*0.5f, 0.25f*0.5f + 0.5f, + 0.75f*0.5f, 0.25f*0.5f + 0.5f, + 0.75f*0.5f, 0.0f*0.5f + 0.5f, + 1.0f*0.5f, 0.0f*0.5f + 0.5f, //14 + + 0.375f, 0.375f, + 0.25f, 0.375f, + 0.25f, 0.25f, + 0.375f, 0.25f, + 0.5f, 0.25f, + 0.5f, 0.375f, //20 + + 0.125f, 0.375f, + 0.0f, 0.375f, + 0.0f, 0.25f, + 0.125f, 0.25f, //24 + + 0.125f, 0.125f, + 0.0f, 0.125f, + 0.0f, 0.0f, + 0.125f, 0.0f, + 0.25f, 0.0f, + 0.25f, 0.125f, //30 + + 0.375f, 0.125f, + 0.375f, 0.0f, + 0.5f, 0.0f, + 0.5f, 0.125f, //34 + + 0.625f, 0.375f, + 0.625f, 0.25f, + 0.75f, 0.25f, //37 + + 0.625f, 0.125f, + 0.625f, 0.0f, + 0.75f, 0.0f, + 0.75f, 0.125f, //41 + + 0.875f, 0.125f, + 0.875f, 0.0f, + 1.0f, 0.0f, //44 +}; + +static const uint32_t s_indexesL3[] = +{ + 0u, 1u, 2u, + 0u, 2u, 3u, + 0u, 3u, 4u, + 0u, 4u, 5u, + + 6u, 5u, 4u, + 6u, 4u, 3u, + 6u, 3u, 7u, + 6u, 7u, 8u, + + 6u, 8u, 9u, + 6u, 9u, 10u, + 6u, 10u, 11u, + 6u, 11u, 5u, + + 12u, 5u, 11u, + 12u, 11u, 10u, + 12u, 10u, 13u, + 12u, 13u, 14u, //End fo first big triangle + + 15u, 14u, 13u, + 15u, 13u, 10u, + 15u, 10u, 16u, + 15u, 16u, 17u, + 15u, 17u, 18u, + 15u, 18u, 19u, + 15u, 19u, 20u, + 15u, 20u, 14u, + + 21u, 10u, 9u, + 21u, 9u, 8u, + 21u, 8u, 22u, + 21u, 22u, 23u, + 21u, 23u, 24u, + 21u, 24u, 17u, + 21u, 17u, 16u, + 21u, 16u, 10u, + + 25u, 17u, 24u, + 25u, 24u, 23u, + 25u, 23u, 26u, + 25u, 26u, 27u, + 25u, 27u, 28u, + 25u, 28u, 29u, + 25u, 29u, 30u, + 25u, 30u, 17u, + + 31u, 19u, 18u, + 31u, 18u, 17u, + 31u, 17u, 30u, + 31u, 30u, 29u, + 31u, 29u, 32u, + 31u, 32u, 33u, + 31u, 33u, 34u, + 31u, 34u, 19u, + + 35u, 14u, 20u, + 35u, 20u, 19u, + 35u, 19u, 36u, + 35u, 36u, 37u, + + 38u, 37u, 36u, + 38u, 36u, 19u, + 38u, 19u, 34u, + 38u, 34u, 33u, + 38u, 33u, 39u, + 38u, 39u, 40u, + 38u, 40u, 41u, + 38u, 41u, 37u, + + 42u, 37u, 41u, + 42u, 41u, 40u, + 42u, 40u, 43u, + 42u, 43u, 44u, +}; + +enum +{ + PROGRAM_TERRAIN_NORMAL, + PROGRAM_TERRAIN, + + SHADING_COUNT +}; + +enum +{ + BUFFER_SUBD +}; + +enum +{ + PROGRAM_SUBD_CS_LOD, + PROGRAM_UPDATE_INDIRECT, + PROGRAM_INIT_INDIRECT, + PROGRAM_UPDATE_DRAW, + + PROGRAM_COUNT +}; + +enum +{ + TERRAIN_DMAP_SAMPLER, + TERRAIN_SMAP_SAMPLER, + + SAMPLER_COUNT +}; + +enum +{ + TEXTURE_DMAP, + TEXTURE_SMAP, + + TEXTURE_COUNT +}; + +constexpr int32_t kNumVec4 = 2; + +struct Uniforms +{ + void init() + { + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, kNumVec4); + + cull = 1; + freeze = 0; + gpuSubd = 3; + + } + + void submit() + { + bgfx::setUniform(u_params, params, kNumVec4); + } + + void destroy() + { + bgfx::destroy(u_params); + } + + union + { + struct + { + float dmapFactor; + float lodFactor; + float cull; + float freeze; + + float gpuSubd; + float padding0; + float padding1; + float padding2; + }; + + float params[kNumVec4 * 4]; + }; + + bgfx::UniformHandle u_params; +}; + +class ExampleTessellation : public entry::AppI +{ +public: + ExampleTessellation(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_NONE; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + m_dmap = { "textures/dmap.png", 0.45f }; + m_computeThreadCount = 5; + m_shading = PROGRAM_TERRAIN; + m_primitivePixelLengthTarget = 7.0f; + m_fovy = 60.0f; + m_pingPong = 0; + m_restart = true; + + // Enable m_debug text. + bgfx::setDebug(m_debug); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + bgfx::setViewClear(1 + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + // Imgui. + imguiCreate(); + + m_timeOffset = bx::getHPCounter(); + + m_oldWidth = 0; + m_oldHeight = 0; + m_oldReset = m_reset; + + cameraCreate(); + cameraSetPosition({ 0.0f, 0.5f, 0.0f }); + cameraSetVerticalAngle(0); + + m_wireframe = false; + m_freeze = false; + m_cull = true; + + loadPrograms(); + loadBuffers(); + loadTextures(); + + createAtomicCounters(); + + m_dispatchIndirect = bgfx::createIndirectBuffer(2); + } + + virtual int shutdown() override + { + // Cleanup. + cameraDestroy(); + imguiDestroy(); + + m_uniforms.destroy(); + + bgfx::destroy(m_bufferCounter); + bgfx::destroy(m_bufferCulledSubd); + bgfx::destroy(m_bufferSubd[0]); + bgfx::destroy(m_bufferSubd[1]); + bgfx::destroy(m_dispatchIndirect); + bgfx::destroy(m_geometryIndices); + bgfx::destroy(m_geometryVertices); + bgfx::destroy(m_instancedGeometryIndices); + bgfx::destroy(m_instancedGeometryVertices); + + for (uint32_t i = 0; i < PROGRAM_COUNT; ++i) + { + bgfx::destroy(m_programsCompute[i]); + } + + for (uint32_t i = 0; i < SHADING_COUNT; ++i) + { + bgfx::destroy(m_programsDraw[i]); + } + + for (uint32_t i = 0; i < SAMPLER_COUNT; ++i) + { + bgfx::destroy(m_samplers[i]); + } + + for (uint32_t i = 0; i < TEXTURE_COUNT; ++i) + { + bgfx::destroy(m_textures[i]); + } + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency() ); + const float deltaTime = float(frameTime / freq); + + imguiBeginFrame( + m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 3.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings", NULL, 0); + + if (ImGui::Checkbox("Debug wireframe", &m_wireframe) ) + { + bgfx::setDebug(m_wireframe + ? BGFX_DEBUG_WIREFRAME + : BGFX_DEBUG_NONE + ); + } + + ImGui::SameLine(); + + if (ImGui::Checkbox("Cull", &m_cull) ) + { + m_uniforms.cull = m_cull ? 1.0f : 0.0f; + } + + ImGui::SameLine(); + + if (ImGui::Checkbox("Freeze subdividing", &m_freeze) ) + { + m_uniforms.freeze = m_freeze ? 1.0f : 0.0f; + } + + + ImGui::SliderFloat("Pixels per edge", &m_primitivePixelLengthTarget, 1, 20); + + int gpuSlider = (int)m_uniforms.gpuSubd; + + if (ImGui::SliderInt("Triangle Patch level", &gpuSlider, 0, 3) ) + { + m_restart = true; + m_uniforms.gpuSubd = float(gpuSlider); + } + + ImGui::Combo("Shading", &m_shading, s_shaderOptions, 2); + + ImGui::Text("Some variables require rebuilding the subdivide buffers and causes a stutter."); + + ImGui::End(); + + // Update camera. + cameraUpdate(deltaTime*0.01f, m_mouseState, ImGui::MouseOverArea() ); + + bgfx::touch(0); + bgfx::touch(1); + + configureUniforms(); + + cameraGetViewMtx(m_viewMtx); + + float model[16]; + + bx::mtxRotateX(model, bx::toRad(90) ); + + bx::mtxProj(m_projMtx, m_fovy, float(m_width) / float(m_height), 0.0001f, 2000.0f, bgfx::getCaps()->homogeneousDepth); + + // Set view 0 + bgfx::setViewTransform(0, m_viewMtx, m_projMtx); + + // Set view 1 + bgfx::setViewRect(1, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(1, m_viewMtx, m_projMtx); + + m_uniforms.submit(); + + // update the subd buffers + if (m_restart) + { + m_pingPong = 1; + + bgfx::destroy(m_instancedGeometryVertices); + bgfx::destroy(m_instancedGeometryIndices); + + bgfx::destroy(m_bufferSubd[BUFFER_SUBD]); + bgfx::destroy(m_bufferSubd[BUFFER_SUBD + 1]); + bgfx::destroy(m_bufferCulledSubd); + + loadInstancedGeometryBuffers(); + loadSubdivisionBuffers(); + + //init indirect + bgfx::setBuffer(1, m_bufferSubd[m_pingPong], bgfx::Access::ReadWrite); + bgfx::setBuffer(2, m_bufferCulledSubd, bgfx::Access::ReadWrite); + bgfx::setBuffer(3, m_dispatchIndirect, bgfx::Access::ReadWrite); + bgfx::setBuffer(4, m_bufferCounter, bgfx::Access::ReadWrite); + bgfx::setBuffer(8, m_bufferSubd[1 - m_pingPong], bgfx::Access::ReadWrite); + bgfx::dispatch(0, m_programsCompute[PROGRAM_INIT_INDIRECT], 1, 1, 1); + + + m_restart = false; + } + else + { + // update batch + bgfx::setBuffer(3, m_dispatchIndirect, bgfx::Access::ReadWrite); + bgfx::setBuffer(4, m_bufferCounter, bgfx::Access::ReadWrite); + bgfx::dispatch(0, m_programsCompute[PROGRAM_UPDATE_INDIRECT], 1, 1, 1); + } + + bgfx::setBuffer(1, m_bufferSubd[m_pingPong], bgfx::Access::ReadWrite); + bgfx::setBuffer(2, m_bufferCulledSubd, bgfx::Access::ReadWrite); + bgfx::setBuffer(4, m_bufferCounter, bgfx::Access::ReadWrite); + bgfx::setBuffer(6, m_geometryVertices, bgfx::Access::Read); + bgfx::setBuffer(7, m_geometryIndices, bgfx::Access::Read); + bgfx::setBuffer(8, m_bufferSubd[1 - m_pingPong], bgfx::Access::Read); + bgfx::setTransform(model); + + bgfx::setTexture(0, m_samplers[TERRAIN_DMAP_SAMPLER], m_textures[TEXTURE_DMAP], BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP); + + m_uniforms.submit(); + + // update the subd buffer + bgfx::dispatch(0, m_programsCompute[PROGRAM_SUBD_CS_LOD], m_dispatchIndirect, 1); + + // update draw + bgfx::setBuffer(3, m_dispatchIndirect, bgfx::Access::ReadWrite); + bgfx::setBuffer(4, m_bufferCounter, bgfx::Access::ReadWrite); + + m_uniforms.submit(); + + bgfx::dispatch(1, m_programsCompute[PROGRAM_UPDATE_DRAW], 1, 1, 1); + + // render the terrain + bgfx::setTexture(0, m_samplers[TERRAIN_DMAP_SAMPLER], m_textures[TEXTURE_DMAP], BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP); + bgfx::setTexture(1, m_samplers[TERRAIN_SMAP_SAMPLER], m_textures[TEXTURE_SMAP], BGFX_SAMPLER_MIN_ANISOTROPIC | BGFX_SAMPLER_MAG_ANISOTROPIC); + + bgfx::setTransform(model); + bgfx::setVertexBuffer(0, m_instancedGeometryVertices); + bgfx::setIndexBuffer(m_instancedGeometryIndices); + bgfx::setBuffer(2, m_bufferCulledSubd, bgfx::Access::Read); + bgfx::setBuffer(3, m_geometryVertices, bgfx::Access::Read); + bgfx::setBuffer(4, m_geometryIndices, bgfx::Access::Read); + bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_Z | BGFX_STATE_DEPTH_TEST_LESS); + + m_uniforms.submit(); + + bgfx::submit(1, m_programsDraw[m_shading], m_dispatchIndirect); + + m_pingPong = 1 - m_pingPong; + + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(false); + + return true; + } + + return false; + } + + void createAtomicCounters() + { + m_bufferCounter = bgfx::createDynamicIndexBuffer(3, BGFX_BUFFER_INDEX32 | BGFX_BUFFER_COMPUTE_READ_WRITE); + } + + void configureUniforms() + { + float lodFactor = 2.0f * bx::tan(bx::toRad(m_fovy) / 2.0f) + / m_width * (1 << (int)m_uniforms.gpuSubd) + * m_primitivePixelLengthTarget + ; + + m_uniforms.lodFactor = lodFactor; + m_uniforms.dmapFactor = m_dmap.scale; + } + + /** + * Load the Terrain Program + * + * This program renders an adaptive terrain using the implicit subdivision + * technique described in GPU Zen 2. + **/ + void loadPrograms() + { + m_samplers[TERRAIN_DMAP_SAMPLER] = bgfx::createUniform("u_DmapSampler", bgfx::UniformType::Sampler); + m_samplers[TERRAIN_SMAP_SAMPLER] = bgfx::createUniform("u_SmapSampler", bgfx::UniformType::Sampler); + + m_uniforms.init(); + + m_programsDraw[PROGRAM_TERRAIN] = loadProgram("vs_terrain_render", "fs_terrain_render"); + m_programsDraw[PROGRAM_TERRAIN_NORMAL] = loadProgram("vs_terrain_render", "fs_terrain_render_normal"); + + m_programsCompute[PROGRAM_SUBD_CS_LOD] = bgfx::createProgram(loadShader("cs_terrain_lod"), true); + m_programsCompute[PROGRAM_UPDATE_INDIRECT] = bgfx::createProgram(loadShader("cs_terrain_update_indirect"), true); + m_programsCompute[PROGRAM_UPDATE_DRAW] = bgfx::createProgram(loadShader("cs_terrain_update_draw"), true); + m_programsCompute[PROGRAM_INIT_INDIRECT] = bgfx::createProgram(loadShader("cs_terrain_init"), true); + } + + void loadSmapTexture() + { + int w = dmap->m_width; + int h = dmap->m_height; + + const uint16_t *texels = (const uint16_t *)dmap->m_data; + + int mipcnt = dmap->m_numMips; + + const bgfx::Memory* mem = bgfx::alloc(w * h * 2 * sizeof(float) ); + float* smap = (float*)mem->data; + + for (int j = 0; j < h; ++j) + { + for (int i = 0; i < w; ++i) + { + int i1 = bx::max(0, i - 1); + int i2 = bx::min(w - 1, i + 1); + int j1 = bx::max(0, j - 1); + int j2 = bx::min(h - 1, j + 1); + uint16_t px_l = texels[i1 + w * j]; // in [0,2^16-1] + uint16_t px_r = texels[i2 + w * j]; // in [0,2^16-1] + uint16_t px_b = texels[i + w * j1]; // in [0,2^16-1] + uint16_t px_t = texels[i + w * j2]; // in [0,2^16-1] + float z_l = (float)px_l / 65535.0f; // in [0, 1] + float z_r = (float)px_r / 65535.0f; // in [0, 1] + float z_b = (float)px_b / 65535.0f; // in [0, 1] + float z_t = (float)px_t / 65535.0f; // in [0, 1] + float slope_x = (float)w * 0.5f * (z_r - z_l); + float slope_y = (float)h * 0.5f * (z_t - z_b); + + smap[2 * (i + w * j)] = slope_x; + smap[1 + 2 * (i + w * j)] = slope_y; + } + } + + m_textures[TEXTURE_SMAP] = bgfx::createTexture2D( + (uint16_t)w + , (uint16_t)h + , mipcnt > 1 + , 1 + , bgfx::TextureFormat::RG32F + , BGFX_TEXTURE_NONE + , mem + ); + } + + /** + * Load the Displacement Texture + * + * This loads an R16 texture used as a displacement map + */ + void loadDmapTexture() + { + dmap = imageLoad(m_dmap.pathToFile.getCPtr(), bgfx::TextureFormat::R16); + + m_textures[TEXTURE_DMAP] = bgfx::createTexture2D( + (uint16_t)dmap->m_width + , (uint16_t)dmap->m_height + , false + , 1 + , bgfx::TextureFormat::R16 + , BGFX_TEXTURE_NONE + , bgfx::makeRef(dmap->m_data, dmap->m_size) + ); + } + + void loadTextures() + { + loadDmapTexture(); + loadSmapTexture(); + } + + /** + * Load the Geometry Buffer + * + * This procedure loads the scene geometry into an index and + * vertex buffer. Here, we only load 2 triangles to define the + * terrain. + **/ + void loadGeometryBuffers() + { + const float vertices[] = + { + -1.0f, -1.0f, 0.0f, 1.0f, + +1.0f, -1.0f, 0.0f, 1.0f, + +1.0f, +1.0f, 0.0f, 1.0f, + -1.0f, +1.0f, 0.0f, 1.0f, + }; + + const uint32_t indices[] = { 0, 1, 3, 2, 3, 1 }; + + m_geometryLayout.begin().add(bgfx::Attrib::Position, 4, bgfx::AttribType::Float).end(); + + m_geometryVertices = bgfx::createVertexBuffer( + bgfx::copy(vertices, sizeof(vertices) ) + , m_geometryLayout + , BGFX_BUFFER_COMPUTE_READ + ); + m_geometryIndices = bgfx::createIndexBuffer( + bgfx::copy(indices, sizeof(indices) ) + , BGFX_BUFFER_COMPUTE_READ | BGFX_BUFFER_INDEX32 + ); + } + + void loadSubdivisionBuffers() + { + const uint32_t bufferCapacity = 1 << 27; + + m_bufferSubd[BUFFER_SUBD] = bgfx::createDynamicIndexBuffer( + bufferCapacity + , BGFX_BUFFER_COMPUTE_READ_WRITE | BGFX_BUFFER_INDEX32 + ); + + m_bufferSubd[BUFFER_SUBD + 1] = bgfx::createDynamicIndexBuffer( + bufferCapacity + , BGFX_BUFFER_COMPUTE_READ_WRITE | BGFX_BUFFER_INDEX32 + ); + + m_bufferCulledSubd = bgfx::createDynamicIndexBuffer( + bufferCapacity + , BGFX_BUFFER_COMPUTE_READ_WRITE | BGFX_BUFFER_INDEX32 + ); + } + + /** + * Load All Buffers + * + */ + void loadBuffers() + { + loadSubdivisionBuffers(); + loadGeometryBuffers(); + loadInstancedGeometryBuffers(); + } + + /** + * This will be used to instantiate a triangle grid for each subdivision + * key present in the subd buffer. + */ + void loadInstancedGeometryBuffers() + { + const float* vertices; + const uint32_t* indexes; + + switch (int32_t(m_uniforms.gpuSubd) ) + { + case 0: + m_instancedMeshVertexCount = 3; + m_instancedMeshPrimitiveCount = 1; + vertices = s_verticesL0; + indexes = s_indexesL0; + break; + + case 1: + m_instancedMeshVertexCount = 6; + m_instancedMeshPrimitiveCount = 4; + vertices = s_verticesL1; + indexes = s_indexesL1; + break; + + case 2: + m_instancedMeshVertexCount = 15; + m_instancedMeshPrimitiveCount = 16; + vertices = s_verticesL2; + indexes = s_indexesL2; + break; + + default: + m_instancedMeshVertexCount = 45; + m_instancedMeshPrimitiveCount = 64; + vertices = s_verticesL3; + indexes = s_indexesL3; + break; + } + + m_instancedGeometryLayout + .begin() + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + + m_instancedGeometryVertices = bgfx::createVertexBuffer( + bgfx::makeRef(vertices, sizeof(float) * 2 * m_instancedMeshVertexCount) + , m_instancedGeometryLayout + ); + + m_instancedGeometryIndices = bgfx::createIndexBuffer( + bgfx::makeRef(indexes, sizeof(uint32_t) * m_instancedMeshPrimitiveCount * 3) + , BGFX_BUFFER_INDEX32 + ); + } + + Uniforms m_uniforms; + + bgfx::ProgramHandle m_programsCompute[PROGRAM_COUNT]; + bgfx::ProgramHandle m_programsDraw[SHADING_COUNT]; + bgfx::TextureHandle m_textures[TEXTURE_COUNT]; + bgfx::UniformHandle m_samplers[SAMPLER_COUNT]; + + bgfx::DynamicIndexBufferHandle m_bufferSubd[2]; + bgfx::DynamicIndexBufferHandle m_bufferCulledSubd; + + bgfx::DynamicIndexBufferHandle m_bufferCounter; + + bgfx::IndexBufferHandle m_geometryIndices; + bgfx::VertexBufferHandle m_geometryVertices; + bgfx::VertexLayout m_geometryLayout; + + bgfx::IndexBufferHandle m_instancedGeometryIndices; + bgfx::VertexBufferHandle m_instancedGeometryVertices; + bgfx::VertexLayout m_instancedGeometryLayout; + + bgfx::IndirectBufferHandle m_dispatchIndirect; + + bimg::ImageContainer* dmap; + + float m_viewMtx[16]; + float m_projMtx[16]; + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + uint32_t m_oldWidth; + uint32_t m_oldHeight; + uint32_t m_oldReset; + + uint32_t m_instancedMeshVertexCount; + uint32_t m_instancedMeshPrimitiveCount; + + entry::MouseState m_mouseState; + + int64_t m_timeOffset; + + struct DMap + { + bx::FilePath pathToFile; + float scale; + }; + + DMap m_dmap; + + int m_computeThreadCount; + int m_shading; + int m_gpuSubd; + int m_pingPong; + + float m_primitivePixelLengthTarget; + float m_fovy; + + bool m_restart; + bool m_wireframe; + bool m_cull; + bool m_freeze; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExampleTessellation + , "41-tess" + , "Adaptive GPU Tessellation." + , "https://bkaradzic.github.io/bgfx/examples.html#tess" + ); diff --git a/3rdparty/bgfx/examples/41-tess/uniforms.sh b/3rdparty/bgfx/examples/41-tess/uniforms.sh new file mode 100644 index 00000000000..38fe7820a06 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/uniforms.sh @@ -0,0 +1,15 @@ + +uniform vec4 u_params[2]; + + +#define u_DmapFactor u_params[0].x +#define u_LodFactor u_params[0].y +#define u_cull u_params[0].z +#define u_freeze u_params[0].w +#define u_gpu_subd int(u_params[1].x) + + +#define COMPUTE_THREAD_COUNT 32u +#define UPDATE_INDIRECT_VALUE_DIVIDE 32u + + diff --git a/3rdparty/bgfx/examples/41-tess/varying.def.sc b/3rdparty/bgfx/examples/41-tess/varying.def.sc new file mode 100644 index 00000000000..741df32452c --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/varying.def.sc @@ -0,0 +1,13 @@ +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec3 v_position : TEXCOORD1 = vec3(0.0, 0.0, 0.0); +vec3 v_view : TEXCOORD2 = vec3(0.0, 0.0, 0.0); +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); +vec3 v_tangent : TANGENT = vec3(1.0, 0.0, 0.0); +vec3 v_bitangent : BINORMAL = vec3(0.0, 1.0, 0.0); +vec4 v_color0 : COLOR = vec4(1.0, 0.0, 0.0, 1.0); + +vec3 a_position : POSITION; +vec4 a_normal : NORMAL; +vec4 a_tangent : TANGENT; +vec2 a_texcoord0 : TEXCOORD0; +vec4 a_color0 : COLOR0; diff --git a/3rdparty/bgfx/examples/41-tess/vs_terrain_render.sc b/3rdparty/bgfx/examples/41-tess/vs_terrain_render.sc new file mode 100644 index 00000000000..a0538f9a983 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/vs_terrain_render.sc @@ -0,0 +1,39 @@ +$input a_texcoord0 +$output v_texcoord0 + +#include "terrain_common.sh" + +BUFFER_RO(u_CulledSubdBuffer, uint, 2); +BUFFER_RO(u_VertexBuffer, vec4, 3); +BUFFER_RO(u_IndexBuffer, uint, 4); + +void main() +{ + // get threadID (each key is associated to a thread) + int threadID = gl_InstanceID; + + // get coarse triangle associated to the key + uint primID = u_CulledSubdBuffer[threadID*2]; + + vec4 v_in[3]; + + v_in[0] = u_VertexBuffer[u_IndexBuffer[primID * 3 ]]; + v_in[1] = u_VertexBuffer[u_IndexBuffer[primID * 3 + 1]]; + v_in[2] = u_VertexBuffer[u_IndexBuffer[primID * 3 + 2]]; + + // compute sub-triangle associated to the key + uint key = u_CulledSubdBuffer[threadID*2+1]; + + vec4 v[3]; + + subd(key, v_in, v); + + // compute vertex location + vec4 finalVertex = berp(v, a_texcoord0); + + finalVertex.z+= dmap(finalVertex.xy); + + v_texcoord0 = finalVertex.xy * 0.5 + 0.5; + + gl_Position = mul(u_modelViewProj, finalVertex); +} diff --git a/3rdparty/bgfx/examples/42-bunnylod/bunnylod.cpp b/3rdparty/bgfx/examples/42-bunnylod/bunnylod.cpp new file mode 100644 index 00000000000..8330b8afcf6 --- /dev/null +++ b/3rdparty/bgfx/examples/42-bunnylod/bunnylod.cpp @@ -0,0 +1,506 @@ +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include <bx/easing.h> +#include <bx/file.h> +#include "common.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" + +extern "C" void ProgressiveMesh(int vert_n, int vert_stride, const float *v, int tri_n, const int *tri, int *map, int *permutation); + +namespace +{ + +class ExampleBunnyLOD : public entry::AppI +{ +public: + ExampleBunnyLOD(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) + { + } + + void PermuteMesh(const bgfx::Memory* _vb, const bgfx::Memory* _ib, const bgfx::VertexLayout& _layout) + { + const uint32_t stride = _layout.getStride(); + const uint32_t offset = _layout.getOffset(bgfx::Attrib::Position); + const uint32_t numVertices = _vb->size / stride; + const uint32_t numTriangles = _ib->size / (3 * sizeof(uint32_t) ); + + if (m_cachePermutation == NULL) + { + m_cachePermutation = (uint32_t*)BX_ALLOC(entry::getAllocator(), numVertices * sizeof(uint32_t) ); + m_map = (uint32_t*)BX_ALLOC(entry::getAllocator(), numVertices * sizeof(uint32_t) ); + + // It will takes long time if there are too many vertices. + ProgressiveMesh( + numVertices + , stride + , (const float*)(_vb->data + offset) + , numTriangles + , (const int*)_ib->data + , (int*)m_map + , (int*)m_cachePermutation + ); + } + + // rearrange the vertex Array + char* temp = (char*)BX_ALLOC(entry::getAllocator(), numVertices * stride); + bx::memCopy(temp, _vb->data, _vb->size); + + for (uint32_t ii = 0; ii < numVertices; ++ii) + { + bx::memCopy(_vb->data + m_cachePermutation[ii] * stride , temp + ii * stride, stride); + } + + BX_FREE(entry::getAllocator(), temp); + + // update the changes in the entries in the triangle Array + for (uint32_t ii = 0, num = numTriangles*3; ii < num; ++ii) + { + uint32_t* indices = (uint32_t*)(_ib->data + ii * sizeof(uint32_t) ); + *indices = m_cachePermutation[*indices]; + } + } + + static void remapIndices(uint32_t* _indices, uint32_t _num) + { + uint32_t target = 0; + for (uint32_t i = 0; i < _num; i++) + { + uint32_t map = _indices[i]; + if (i != map) + { + _indices[i] = _indices[map]; + } + else + { + _indices[i] = target; + ++target; + } + } + } + + static const bgfx::Memory* mergeVertices(const uint8_t* _vb, uint16_t _stride, const uint32_t* _indices, uint32_t _num, uint32_t _numMerged) + { + const bgfx::Memory* mem = bgfx::alloc(_stride * _numMerged); + + for (uint32_t ii = 0; ii < _num; ++ii) + { + bx::memCopy(mem->data + _indices[ii]*_stride, _vb + ii*_stride, _stride); + } + + return mem; + } + + void loadMesh(Mesh* _mesh) + { + // merge sub mesh + uint32_t numVertices = 0; + uint32_t numIndices = 0; + + for (GroupArray::const_iterator it = _mesh->m_groups.begin(), itEnd = _mesh->m_groups.end() + ; it != itEnd + ; ++it + ) + { + numVertices += it->m_numVertices; + numIndices += it->m_numIndices; + } + + const bgfx::Memory* ib = bgfx::alloc(numIndices * sizeof(uint32_t) ); + uint8_t* vbData = (uint8_t*)BX_ALLOC(entry::getAllocator(), _mesh->m_layout.getSize(numVertices) ); + + { + uint32_t voffset = 0; + uint32_t ioffset = 0; + uint32_t index = 0; + + for (GroupArray::const_iterator it = _mesh->m_groups.begin(), itEnd = _mesh->m_groups.end() + ; it != itEnd + ; ++it + ) + { + const uint32_t vsize = _mesh->m_layout.getSize(it->m_numVertices); + bx::memCopy(vbData + voffset, it->m_vertices, vsize); + + uint32_t* ibptr = (uint32_t*)(ib->data + ioffset); + + for (uint32_t ii = 0, num = it->m_numIndices; ii < num; ++ii) + { + ibptr[ii] = it->m_indices[ii] + index; + } + + voffset += vsize; + ioffset += uint32_t(it->m_numIndices * sizeof(uint32_t) ); + index += uint32_t(it->m_numVertices); + } + } + + bool cacheInvalid = false; + loadCache(); + + if (m_originalVertices != numVertices + || m_cacheWeld == NULL) + { + cacheInvalid = true; + m_originalVertices = numVertices; + + BX_FREE(entry::getAllocator(), m_cachePermutation); + m_cachePermutation = NULL; + + BX_FREE(entry::getAllocator(), m_cacheWeld); + m_cacheWeld = (uint32_t*)BX_ALLOC(entry::getAllocator(), numVertices * sizeof(uint32_t) ); + + m_totalVertices = bgfx::weldVertices(m_cacheWeld, _mesh->m_layout, vbData, numVertices, true, 0.00001f); + remapIndices(m_cacheWeld, numVertices); + } + + const bgfx::Memory* vb = mergeVertices( + vbData + , _mesh->m_layout.getStride() + , m_cacheWeld + , numVertices + , m_totalVertices + ); + BX_FREE(entry::getAllocator(), vbData); + + { + uint32_t* ibData = (uint32_t*)ib->data; + for (uint32_t ii = 0; ii < numIndices; ++ii) + { + ibData[ii] = m_cacheWeld[ibData[ii] ]; + } + } + + PermuteMesh(vb, ib, _mesh->m_layout); + + if (cacheInvalid) + { + saveCache(); + } + + m_triangle = (uint32_t*)BX_ALLOC(entry::getAllocator(), ib->size); + bx::memCopy(m_triangle, ib->data, ib->size); + + m_vb = bgfx::createVertexBuffer(vb, _mesh->m_layout); + m_ib = bgfx::createDynamicIndexBuffer(ib, BGFX_BUFFER_INDEX32); + + m_numVertices = m_totalVertices; + m_numTriangles = numIndices/3; + m_totalTriangles = m_numTriangles; + } + + const bx::FilePath kCacheFilePath = bx::FilePath("temp/bunnylod.cache"); + + void loadCache() + { + m_cacheWeld = NULL; + m_cachePermutation = NULL; + m_originalVertices = 0; + + bx::Error err; + + bx::FileReader reader; + + if (bx::open(&reader, kCacheFilePath) ) + { + bx::read(&reader, m_originalVertices, &err); + bx::read(&reader, m_totalVertices, &err); + m_cacheWeld = (uint32_t*)BX_ALLOC(entry::getAllocator(), m_originalVertices * sizeof(uint32_t) ); + + bx::read(&reader, m_cacheWeld, m_originalVertices * sizeof(uint32_t), &err); + m_cachePermutation = (uint32_t*)BX_ALLOC(entry::getAllocator(), m_totalVertices * sizeof(uint32_t) ); + + bx::read(&reader, m_cachePermutation, m_totalVertices * sizeof(uint32_t), &err); + m_map = (uint32_t*)BX_ALLOC(entry::getAllocator(), m_totalVertices * sizeof(uint32_t) ); + + bx::read(&reader, m_map, m_totalVertices * sizeof(uint32_t), &err); + + if (!err.isOk() ) + { + // read fail + BX_FREE(entry::getAllocator(), m_cacheWeld); + m_cacheWeld = NULL; + + BX_FREE(entry::getAllocator(), m_cachePermutation); + m_cachePermutation = NULL; + + BX_FREE(entry::getAllocator(), m_map); + m_map = NULL; + } + + bx::close(&reader); + } + } + + void saveCache() + { + bx::FileWriter writer; + + if (bx::open(&writer, kCacheFilePath) ) + { + bx::Error err; + + bx::write(&writer, m_originalVertices, &err); + bx::write(&writer, m_totalVertices, &err); + bx::write(&writer, m_cacheWeld, m_originalVertices * sizeof(uint32_t), &err); + bx::write(&writer, m_cachePermutation, m_totalVertices * sizeof(uint32_t), &err); + bx::write(&writer, m_map, m_totalVertices * sizeof(uint32_t), &err); + + bx::close(&writer); + } + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + u_tint = bgfx::createUniform("u_tint", bgfx::UniformType::Vec4); + + // Create program from shaders. + m_program = loadProgram("vs_bunnylod", "fs_bunnylod"); + + Mesh* mesh = meshLoad("meshes/bunny_patched.bin", true); + loadMesh(mesh); + meshUnload(mesh); + + m_timeOffset = bx::getHPCounter(); + m_LOD = 1.0f; + m_lastLOD = m_LOD; + + imguiCreate(); + } + + int shutdown() override + { + imguiDestroy(); + + // Cleanup. + bgfx::destroy(m_program); + bgfx::destroy(m_vb); + bgfx::destroy(m_ib); + bgfx::destroy(u_tint); + + BX_FREE(entry::getAllocator(), m_map); + BX_FREE(entry::getAllocator(), m_triangle); + BX_FREE(entry::getAllocator(), m_cacheWeld); + BX_FREE(entry::getAllocator(), m_cachePermutation); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + void updateIndexBuffer() + { + int verts = int(bx::easeInQuad(m_LOD) * m_totalVertices); + if (verts <= 0) + { + return; + } + + int tris = 0; + const bgfx::Memory* ib = bgfx::alloc(m_totalTriangles * 3 * sizeof(uint32_t) ); + + for (uint32_t ii = 0; ii < m_totalTriangles; ++ii) + { + int v[3]; + + for (uint32_t jj = 0; jj < 3; ++jj) + { + int idx = m_triangle[ii*3+jj]; + while (idx >= verts) + { + idx = m_map[idx]; + } + + v[jj] = idx; + } + + if (v[0] != v[1] + && v[0] != v[2] + && v[1] != v[2]) + { + bx::memCopy(ib->data + tris * 3 * sizeof(uint32_t), v, 3 * sizeof(int) ); + ++tris; + } + } + + m_numTriangles = tris; + m_numVertices = verts; + + bgfx::update(m_ib, 0, ib); + } + + void submitLod(bgfx::ViewId _viewid, const float* _mtx) + { + bgfx::setTransform(_mtx); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + | BGFX_STATE_CULL_CCW + | BGFX_STATE_MSAA + ); + + if (m_LOD != m_lastLOD) + { + updateIndexBuffer(); + m_lastLOD = m_LOD; + } + + bgfx::setIndexBuffer(m_ib, 0, m_numTriangles*3); + bgfx::setVertexBuffer(0, m_vb, 0, m_numVertices); + bgfx::submit(_viewid, m_program); + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 2.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + ImGui::Text("Vertices: %d", m_numVertices); + ImGui::Text("Triangles: %d", m_numTriangles); + + ImGui::SliderFloat("LOD Level", &m_LOD, 0.05f, 1.0f); + + ImGui::End(); + + imguiEndFrame(); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + + // This dummy draw call is here to make sure that view 0 is cleared + // if no other draw calls are submitted to view 0. + bgfx::touch(0); + + float time = (float)( (bx::getHPCounter()-m_timeOffset)/double(bx::getHPFrequency() ) ); + const float BasicColor[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + bgfx::setUniform(u_tint, BasicColor); + + const bx::Vec3 at = { 0.0f, 1.0f, 0.0f }; + const bx::Vec3 eye = { 0.0f, 1.0f, -2.5f }; + + // Set view and projection matrix for view 0. + { + float view[16]; + bx::mtxLookAt(view, eye, at); + + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f, bgfx::getCaps()->homogeneousDepth); + bgfx::setViewTransform(0, view, proj); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + } + + float mtx[16]; + bx::mtxRotateXY(mtx + , 0.0f + , time*0.37f + ); + + submitLod(0, mtx); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + + return true; + } + + return false; + } + + entry::MouseState m_mouseState; + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + float m_lastLOD; + float m_LOD; + uint32_t m_numVertices; + uint32_t m_numTriangles; + uint32_t m_totalVertices; + uint32_t m_totalTriangles; + uint32_t m_originalVertices; + + uint32_t* m_map; + uint32_t* m_triangle; + uint32_t* m_cacheWeld; + uint32_t* m_cachePermutation; + + int64_t m_timeOffset; + bgfx::VertexBufferHandle m_vb; + bgfx::DynamicIndexBufferHandle m_ib; + bgfx::ProgramHandle m_program; + bgfx::UniformHandle u_tint; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExampleBunnyLOD + , "42-bunnylod" + , "Progressive Mesh LOD" + , "https://bkaradzic.github.io/bgfx/examples.html#bunnylod" + ); diff --git a/3rdparty/bgfx/examples/42-bunnylod/fs_bunnylod.sc b/3rdparty/bgfx/examples/42-bunnylod/fs_bunnylod.sc new file mode 100644 index 00000000000..3e8f850e34a --- /dev/null +++ b/3rdparty/bgfx/examples/42-bunnylod/fs_bunnylod.sc @@ -0,0 +1,17 @@ +$input v_world, v_color0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +void main() +{ + vec3 normal = normalize(cross(dFdx(v_world), dFdy(v_world) ) ); + vec3 lightDir = vec3(0.0, 0.0, 1.0); + float ndotl = max(dot(normal, lightDir), 0.0); + float spec = pow(ndotl, 30.0); + gl_FragColor = pow(pow(v_color0, vec4_splat(2.2) ) * ndotl + spec, vec4_splat(1.0/2.2) ); +} diff --git a/3rdparty/bgfx/examples/42-bunnylod/makefile b/3rdparty/bgfx/examples/42-bunnylod/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/42-bunnylod/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/42-bunnylod/progmesh.c b/3rdparty/bgfx/examples/42-bunnylod/progmesh.c new file mode 100644 index 00000000000..2738c0999c6 --- /dev/null +++ b/3rdparty/bgfx/examples/42-bunnylod/progmesh.c @@ -0,0 +1,555 @@ +/* + * Progressive Mesh type Polygon Reduction Algorithm + * + * Original version by Stan Melax (c) 1998 + * C version by Cloud Wu (c) 2020 + * + * The function ProgressiveMesh() takes a model in an "indexed face + * set" sort of way. i.e. Array of vertices and Array of triangles. + * The function then does the polygon reduction algorithm + * internally and reduces the model all the way down to 0 + * vertices and then returns the order in which the + * vertices are collapsed and to which neighbor each vertex + * is collapsed to. More specifically the returned "permutation" + * indicates how to reorder your vertices so you can render + * an object by using the first n vertices (for the n + * vertex version). After permuting your vertices, the + * map Array indicates to which vertex each vertex is collapsed to. + */ + +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 Stan Melax + * Copyright (c) 2020 Cloud Wu + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <assert.h> +#include <math.h> +#include <stdlib.h> + +#define ARRAY_SIZE 16 + +struct triangle { + int vertex[3]; // the 3 points (id) that make this tri + float normal[3]; // unit vector othogonal to this face +}; + +struct array { + int n; + int cap; + int *buffer; + int tmp[ARRAY_SIZE]; +}; + +struct vertex { + float position[3]; // location of point in euclidean space + int id; // place of vertex in original Array + struct array neighbor; // adjacent vertices + struct array face; // adjacent triangles + float objdist; // cached cost of collapsing edge + int collapse; // candidate vertex (id) for collapse +}; + +struct mesh { + int n_face; + int n_vertex; + struct vertex *v; + struct triangle *t; +}; + +// vec3 math + +static inline void +vec3_sub(const float v0[3], const float v1[3], float v[3]) { + v[0] = v0[0] - v1[0]; + v[1] = v0[1] - v1[1]; + v[2] = v0[2] - v1[2]; +} + +static inline void +vec3_cross(const float a[3], const float b[3], float v[3]) { + v[0] = a[1]*b[2] - a[2]*b[1]; + v[1] = a[2]*b[0] - a[0]*b[2]; + v[2] = a[0]*b[1] - a[1]*b[0]; +} + +static inline float +vec3_dot(const float a[3], const float b[3]) { + return a[0]*b[0] + a[1]*b[1] + a[2] * b[2]; +} + +static inline float +vec3_length(const float v[3]) { + return sqrtf(vec3_dot(v,v)); +} + +static inline void +vec3_normalize(float v[3]) { + const float invLen = 1.0f/vec3_length(v); + v[0] *= invLen; + v[1] *= invLen; + v[2] *= invLen; +} + +// array + +static void +array_init(struct array *a) { + a->n = 0; + a->cap = ARRAY_SIZE; + a->buffer = a->tmp; +} + +static void +array_deinit(struct array *a) { + if (a->buffer != a->tmp) { + free(a->buffer); + a->buffer = a->tmp; + a->cap = ARRAY_SIZE; + a->n = 0; + } +} + +static inline int +array_index(struct array *a, int idx) { + return a->buffer[idx]; +} + +static void +array_push(struct array *a, int v) { + if (a->n >= a->cap) { + int *old = a->buffer; + a->cap *= 2; + a->buffer = (int *)malloc(a->cap * sizeof(int)); + int i; + for (i=0;i<a->n;i++) { + a->buffer[i] = old[i]; + } + if (old != a->tmp) + free(old); + } + a->buffer[a->n++] = v; +} + +static inline void +array_remove_index(struct array *a, int idx) { + a->buffer[idx] = a->buffer[--a->n]; +} + +static void +array_remove(struct array *a, int v) { + int i; + for (i=0; i<a->n; i++) { + if (a->buffer[i] == v) { + array_remove_index(a, i); + return; + } + } +} + +static inline struct vertex * +Vertex(struct mesh *M, int id) { + return &M->v[id]; +} + +static inline struct triangle * +Triangle(struct mesh *M, int id) { + return &M->t[id]; +} + +static inline struct triangle * +Face(struct mesh *M, struct vertex *v, int idx) { + return Triangle(M, array_index(&v->face, idx)); +} + +static void +AddVertex(struct mesh *M, const float v[3]) { + int id = M->n_vertex++; + struct vertex * tmp = Vertex(M, id); + tmp->position[0] = v[0]; + tmp->position[1] = v[1]; + tmp->position[2] = v[2]; + tmp->id = id; + array_init(&tmp->neighbor); + array_init(&tmp->face); + tmp->objdist = 0; + tmp->collapse = -1; +} + +static void +RemoveVertex(struct mesh *M, int id) { + struct vertex * v = Vertex(M, id); + assert(v->id == id); + assert(v->face.n == 0); + int i; + for (i=0;i<v->face.n;i++) { + struct vertex * nv = Vertex(M, array_index(&v->face, i)); + array_remove(&nv->neighbor, id); + } + v->id = -1; // invalid vertex id + array_deinit(&v->neighbor); + array_deinit(&v->face); +} + +static void +ComputeNormal(struct mesh *M, struct triangle *t) { + struct vertex * v0 = Vertex(M, t->vertex[0]); + struct vertex * v1 = Vertex(M, t->vertex[1]); + struct vertex * v2 = Vertex(M, t->vertex[2]); + float a[3], b[3]; + vec3_sub(v1->position, v0->position, a); + vec3_sub(v2->position, v1->position, b); + vec3_cross(a,b, t->normal); + vec3_normalize(t->normal); +} + +static void +AddNeighbor(struct mesh *M, int vid, int id) { + struct vertex *v = Vertex(M, vid); + int i; + for (i=0;i<v->neighbor.n;i++) { + if (array_index(&v->neighbor,i) == id) + return; + } + array_push(&v->neighbor, id); +} + +#include <stdio.h> + +static void +AddTriangle(struct mesh *M, const int v[3]) { + int v0 = v[0]; + int v1 = v[1]; + int v2 = v[2]; + if (v0 == v1 || v0 == v2 || v1 == v2) + return; + assert(v0 < M->n_vertex); + assert(v1 < M->n_vertex); + assert(v2 < M->n_vertex); + int id = M->n_face++; + struct triangle * tmp = Triangle(M, id); + tmp->vertex[0] = v0; + tmp->vertex[1] = v1; + tmp->vertex[2] = v2; + ComputeNormal(M, tmp); + + int i; + for(i=0;i<3;i++) { + struct vertex *obj = Vertex(M, v[i]); + array_push(&obj->face, id); + } + + AddNeighbor(M, v0, v1); + AddNeighbor(M, v0, v2); + AddNeighbor(M, v1, v0); + AddNeighbor(M, v1, v2); + AddNeighbor(M, v2, v0); + AddNeighbor(M, v2, v1); +} + +static int +HasVertex(struct triangle * t, int vid) { + return (t->vertex[0] == vid || t->vertex[1] == vid || t->vertex[2] == vid); +} + +static void +RemoveIfNonNeighbor_(struct mesh *M, struct vertex *v, int id) { + int i,j; + for (i=0;i<v->neighbor.n;i++) { + if (array_index(&v->neighbor, i) == id) { + for (j=0;j<v->face.n;j++) { + if (HasVertex(Face(M, v, j), id)) + return; + } + // remove from neighbors + array_remove_index(&v->neighbor, i); + return; + } + } +} + +static void +RemoveIfNonNeighbor(struct mesh *M, struct vertex *v0, struct vertex *v1) { + if (v0 == NULL || v1 == NULL) + return; + RemoveIfNonNeighbor_(M, v0, v1->id); + RemoveIfNonNeighbor_(M, v1, v0->id); +} + +static void +RemoveTriangle(struct mesh *M, int id) { + struct triangle * face = Triangle(M, id); + struct vertex * v[3]; + int i; + for (i=0;i<3;i++) { + v[i] = Vertex(M, face->vertex[i]); + if (v[i]->id < 0) + v[i] = NULL; + else { + array_remove(&v[i]->face, id); + } + } + RemoveIfNonNeighbor(M, v[0], v[1]); + RemoveIfNonNeighbor(M, v[1], v[2]); + RemoveIfNonNeighbor(M, v[2], v[0]); +} + +static void +ReplaceVertex(struct mesh *M, int faceid, int oldid, int newid) { + struct triangle * face = Triangle(M, faceid); + assert(oldid >=0 && newid >= 0); + assert(HasVertex(face, oldid)); + assert(!HasVertex(face, newid)); + if(oldid==face->vertex[0]){ + face->vertex[0]=newid; + } else if(oldid==face->vertex[1]){ + face->vertex[1]=newid; + } else { + face->vertex[2]=newid; + } + struct vertex *vold = Vertex(M, oldid); + struct vertex *vnew = Vertex(M, newid); + + array_remove(&vold->face, faceid); + array_push(&vnew->face, faceid); + + int i; + for (i = 0; i<3; i++) { + struct vertex *v = Vertex(M, face->vertex[i]); + RemoveIfNonNeighbor(M, vold, v); + } + + AddNeighbor(M, face->vertex[0], face->vertex[1]); + AddNeighbor(M, face->vertex[0], face->vertex[2]); + AddNeighbor(M, face->vertex[1], face->vertex[0]); + AddNeighbor(M, face->vertex[1], face->vertex[2]); + AddNeighbor(M, face->vertex[2], face->vertex[0]); + AddNeighbor(M, face->vertex[2], face->vertex[1]); + + ComputeNormal(M, face); +} + +static void +mesh_init(struct mesh *M, int vert_n, int tri_n) { + M->n_face = 0; + M->n_vertex = 0; + M->v = (struct vertex *)malloc(vert_n * sizeof(struct vertex)); + M->t = (struct triangle *)malloc(tri_n * sizeof(struct triangle)); +} + +static void +mesh_deinit(struct mesh *M) { + free(M->v); + free(M->t); +} + +static float +ComputeEdgeCollapseCost(struct mesh *M, struct vertex *u, int vid) { + // if we collapse edge uv by moving u to v then how + // much different will the model change, i.e. how much "error". + // Texture, vertex normal, and border vertex code was removed + // to keep this demo as simple as possible. + // The method of determining cost was designed in order + // to exploit small and coplanar regions for + // effective polygon reduction. + // Is is possible to add some checks here to see if "folds" + // would be generated. i.e. normal of a remaining face gets + // flipped. I never seemed to run into this problem and + // therefore never added code to detect this case. + struct vertex *v = Vertex(M, vid); + float tmp[3]; + vec3_sub(v->position, u->position, tmp); + float edgelength = vec3_length(tmp); + float curvature=0; + + // find the "sides" triangles that are on the edge uv + struct array sides; + array_init(&sides); + int i,j; + for (i = 0; i<u->face.n; i++) { + if (HasVertex(Face(M, u, i), vid)) { + array_push(&sides, array_index(&u->face, i)); + } + } + // use the triangle facing most away from the sides + // to determine our curvature term + for (i = 0; i<u->face.n; i++) { + float mincurv=1; // curve for face i and closer side to it + for (j = 0; j<sides.n; j++) { + float dotprod = vec3_dot(Triangle(M, array_index(&u->face, i))->normal, + Triangle(M, array_index(&sides,j))->normal); // use dot product of face normals. + float t = (1-dotprod)/2.0f; + if (t < mincurv) { + mincurv = t; + } + } + if (mincurv > curvature) + curvature = mincurv; + } + array_deinit(&sides); + // the more coplanar the lower the curvature term + return edgelength * curvature; +} + +static void +ComputeEdgeCostAtVertex(struct mesh *M, struct vertex *v) { + // compute the edge collapse cost for all edges that start + // from vertex v. Since we are only interested in reducing + // the object by selecting the min cost edge at each step, we + // only cache the cost of the least cost edge at this vertex + // (in member variable collapse) as well as the value of the + // cost (in member variable objdist). + if (v->neighbor.n == 0) { + // v doesn't have neighbors so it costs nothing to collapse + v->collapse=-1; + v->objdist=-0.01f; + return; + } + v->objdist = 1000000; + v->collapse=-1; + // search all neighboring edges for "least cost" edge + int i; + for (i = 0; i<v->neighbor.n; i++) { + float dist; + dist = ComputeEdgeCollapseCost(M, v, array_index(&v->neighbor, i)); + if(dist<v->objdist) { + v->collapse=array_index(&v->neighbor, i); // candidate for edge collapse + v->objdist=dist; // cost of the collapse + } + } +} + +static void +ComputeAllEdgeCollapseCosts(struct mesh *M) { + // For all the edges, compute the difference it would make + // to the model if it was collapsed. The least of these + // per vertex is cached in each vertex object. + int i; + for (i = 0; i<M->n_vertex; i++) { + ComputeEdgeCostAtVertex(M, Vertex(M, i)); + } +} + +static void +Collapse(struct mesh *M, int uid, int vid) { + // Collapse the edge uv by moving vertex u onto v + // Actually remove tris on uv, then update tris that + // have u to have v, and then remove u. + struct vertex *u = Vertex(M, uid); + if(vid < 0) { + // u is a vertex all by itself so just delete it + RemoveVertex(M, uid); + return; + } + + struct array tmp; + array_init(&tmp); + int i; + // make tmp a Array of all the neighbors of u + for (i = 0; i<u->neighbor.n; i++) { + array_push(&tmp, array_index(&u->neighbor, i)); + } + + // delete triangles on edge uv: + { + i = u->face.n; + while (i--) { + if (HasVertex(Face(M, u, i), vid)) { + RemoveTriangle(M, array_index(&u->face, i)); + } + } + } + // update remaining triangles to have v instead of u + { + i = u->face.n; + while (i--) { + ReplaceVertex(M, array_index(&u->face, i), uid, vid); + } + } + RemoveVertex(M, uid); + // recompute the edge collapse costs for neighboring vertices + for (i = 0; i<tmp.n; i++) { + ComputeEdgeCostAtVertex(M, Vertex(M, array_index(&tmp, i))); + } + array_deinit(&tmp); +} + +static struct vertex * +MinimumCostEdge(struct mesh *M) { + // Find the edge that when collapsed will affect model the least. + // This function actually returns a Vertex, the second vertex + // of the edge (collapse candidate) is stored in the vertex data. + // Serious optimization opportunity here: this function currently + // does a sequential search through an unsorted Array :-( + // Our algorithm could be O(n*lg(n)) instead of O(n*n) + int i; + struct vertex *mn = NULL; + for (i = 0; i<M->n_vertex; i++) { + struct vertex *v = Vertex(M, i); + if (v->id >=0) { + if (mn == NULL || v->objdist < mn->objdist) { + mn = v; + } + } + } + return mn; +} + +void +ProgressiveMesh(int vert_n, int vert_stride, const float *v, int tri_n, const int *tri, int *map, int *permutation) { + struct mesh M; + mesh_init(&M, vert_n, tri_n); + + // put input data into our data structures M + int i; + const char * tmp = (const char *)v; + for (i=0;i<vert_n;i++) { + AddVertex(&M, (const float *) tmp); + tmp += vert_stride; + } + + for (i=0;i<tri_n;i++) { + AddTriangle(&M, &tri[i*3]); + } + + ComputeAllEdgeCollapseCosts(&M); // cache all edge collapse costs + + for (i = vert_n-1; i>=0; i--) { + // get the next vertex to collapse + struct vertex *mn = MinimumCostEdge(&M); + // keep track of this vertex, i.e. the collapse ordering + permutation[mn->id] = i; + // keep track of vertex to which we collapse to + map[i] = mn->collapse; + // Collapse this edge + Collapse(&M, mn->id, mn->collapse); + } + + // reorder the map Array based on the collapse ordering + for (i = 0; i<vert_n; i++) { + map[i] = (map[i]==-1)?0:permutation[map[i]]; + } + // The caller of this function should reorder their vertices + // according to the returned "permutation". + + mesh_deinit(&M); +} diff --git a/3rdparty/bgfx/examples/42-bunnylod/screenshot.png b/3rdparty/bgfx/examples/42-bunnylod/screenshot.png Binary files differnew file mode 100644 index 00000000000..d87d4464cd3 --- /dev/null +++ b/3rdparty/bgfx/examples/42-bunnylod/screenshot.png diff --git a/3rdparty/bgfx/examples/42-bunnylod/varying.def.sc b/3rdparty/bgfx/examples/42-bunnylod/varying.def.sc new file mode 100644 index 00000000000..bdc7f97fce8 --- /dev/null +++ b/3rdparty/bgfx/examples/42-bunnylod/varying.def.sc @@ -0,0 +1,5 @@ +vec3 v_world : TEXCOORD0 = vec3(0.0, 0.0, 0.0); +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); + +vec3 a_position : POSITION; +vec3 a_normal : NORMAL; diff --git a/3rdparty/bgfx/examples/42-bunnylod/vs_bunnylod.sc b/3rdparty/bgfx/examples/42-bunnylod/vs_bunnylod.sc new file mode 100644 index 00000000000..74209e35239 --- /dev/null +++ b/3rdparty/bgfx/examples/42-bunnylod/vs_bunnylod.sc @@ -0,0 +1,16 @@ +$input a_position, a_normal +$output v_world, v_color0 + +/* + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); + v_world = mul(u_model[0], vec4(a_position, 1.0) ).xyz; + v_color0 = vec4(a_normal, 1.0); +} diff --git a/3rdparty/bgfx/examples/43-denoise/denoise.cpp b/3rdparty/bgfx/examples/43-denoise/denoise.cpp new file mode 100644 index 00000000000..f9ff556a001 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/denoise.cpp @@ -0,0 +1,1128 @@ +/* + * Copyright 2021 elven cache. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +/* + * Implement SVGF style denoising as bgfx example. Goal is to explore various + * options and parameters, not produce an optimized, efficient denoiser. + * + * Starts with deferred rendering scene with very basic lighting. Lighting is + * masked out with a noise pattern to provide something to denoise. There are + * two options for the noise pattern. One is a fixed 2x2 dither pattern to + * stand-in for lighting at quarter resolution. The other is the common + * shadertoy random pattern as a stand-in for some fancier lighting without + * enough samples per pixel, like ray tracing. + * + * First a temporal denoising filter is applied. The temporal filter is only + * using normals to reject previous samples. The SVGF paper also describes using + * depth comparison to reject samples but that is not implemented here. + * + * Followed by some number of spatial filters. These are implemented like in the + * SVGF paper. As an alternative to the 5x5 Edge-Avoiding A-Trous filter, can + * select a 3x3 filter instead. The 3x3 filter takes fewer samples and covers a + * smaller area, but takes less time to compute. From a loosely eyeballed + * comparison, N 5x5 passes looks similar to N+1 3x3 passes. The wider spatial + * filters take a fair chunk of time to compute. I wonder if it would be a good + * idea to interleave the input texture before computing, after the first pass + * which skips zero pixels. + * + * I have not implemetened the variance guided part. + * + * There's also an optional TXAA pass to be applied after. I am not happy with + * its implementation yet, so it defaults to off here. + */ + +/* + * Reference(s): + * + * - Spatiotemporal Variance-Guided Filtering: Real-Time Reconstruction for Path-Traced Global Illumination. + * https://web.archive.org/web/20170720213354/https://research.nvidia.com/sites/default/files/pubs/2017-07_Spatiotemporal-Variance-Guided-Filtering%3A/svgf_preprint.pdf + * + * - Streaming G-Buffer Compression for Multi-Sample Anti-Aliasing. + * https://web.archive.org/web/20200807211002/https://software.intel.com/content/www/us/en/develop/articles/streaming-g-buffer-compression-for-multi-sample-anti-aliasing.html + * + * - Edge-Avoiding A-Trous Wavelet Transform for fast Global Illumination Filtering + * https://web.archive.org/web/20130412085423/https://www.uni-ulm.de/fileadmin/website_uni_ulm/iui.inst.100/institut/Papers/atrousGIfilter.pdf + * + */ + +#include <common.h> +#include <camera.h> +#include <bgfx_utils.h> +#include <imgui/imgui.h> +#include <bx/rng.h> +#include <bx/os.h> + +namespace { + +#define DENOISE_MAX_PASSES 6 + +// Gbuffer has multiple render targets +#define GBUFFER_RT_COLOR 0 +#define GBUFFER_RT_NORMAL 1 +#define GBUFFER_RT_VELOCITY 2 +#define GBUFFER_RT_DEPTH 3 +#define GBUFFER_RENDER_TARGETS 4 + +#define MODEL_COUNT 100 + +static const char * s_meshPaths[] = +{ + "meshes/column.bin", + "meshes/tree.bin", + "meshes/hollowcube.bin", + "meshes/bunny.bin" +}; + +static const float s_meshScale[] = +{ + 0.05f, + 0.15f, + 0.25f, + 0.25f +}; + +// Vertex decl for our screen space quad (used in deferred rendering) +struct PosTexCoord0Vertex +{ + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + } + + static bgfx::VertexLayout ms_layout; +}; + +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; + +struct Uniforms +{ + enum { NumVec4 = 13 }; + + void init() { + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, NumVec4); + }; + + void submit() const { + bgfx::setUniform(u_params, m_params, NumVec4); + } + + void destroy() { + bgfx::destroy(u_params); + } + + union + { + struct + { + /* 0 */ struct { float m_cameraJitterCurr[2]; float m_cameraJitterPrev[2]; }; + /* 1 */ struct { float m_feedbackMin; float m_feedbackMax; float m_unused1[2]; }; + /* 2 */ struct { float m_unused2; float m_applyMitchellFilter; float m_options[2]; }; + /* 3-6 */ struct { float m_worldToViewPrev[16]; }; + /* 7-10 */ struct { float m_viewToProjPrev[16]; }; + /* 11 */ struct { float m_frameOffsetForNoise; float m_noiseType; float m_unused11[2]; }; + /* 12 */ struct { float m_denoiseStep; float m_sigmaDepth; float m_sigmaNormal; float m_unused12; }; + }; + + float m_params[NumVec4 * 4]; + }; + + bgfx::UniformHandle u_params; +}; + +struct RenderTarget +{ + void init(uint32_t _width, uint32_t _height, bgfx::TextureFormat::Enum _format, uint64_t _flags) + { + m_texture = bgfx::createTexture2D(uint16_t(_width), uint16_t(_height), false, 1, _format, _flags); + const bool destroyTextures = true; + m_buffer = bgfx::createFrameBuffer(1, &m_texture, destroyTextures); + } + + void destroy() + { + // also responsible for destroying texture + bgfx::destroy(m_buffer); + } + + bgfx::TextureHandle m_texture; + bgfx::FrameBufferHandle m_buffer; +}; + +void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) +{ + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout) ) + { + bgfx::TransientVertexBuffer vb; + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); + PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; + + const float minx = -_width; + const float maxx = _width; + const float miny = 0.0f; + const float maxy = _height * 2.0f; + + const float texelHalfW = _texelHalf / _textureWidth; + const float texelHalfH = _texelHalf / _textureHeight; + const float minu = -1.0f + texelHalfW; + const float maxu = 1.0f + texelHalfW; + + const float zz = 0.0f; + + float minv = texelHalfH; + float maxv = 2.0f + texelHalfH; + + if (_originBottomLeft) + { + float temp = minv; + minv = maxv; + maxv = temp; + + minv -= 1.0f; + maxv -= 1.0f; + } + + vertex[0].m_x = minx; + vertex[0].m_y = miny; + vertex[0].m_z = zz; + vertex[0].m_u = minu; + vertex[0].m_v = minv; + + vertex[1].m_x = maxx; + vertex[1].m_y = miny; + vertex[1].m_z = zz; + vertex[1].m_u = maxu; + vertex[1].m_v = minv; + + vertex[2].m_x = maxx; + vertex[2].m_y = maxy; + vertex[2].m_z = zz; + vertex[2].m_u = maxu; + vertex[2].m_v = maxv; + + bgfx::setVertexBuffer(0, &vb); + } +} + +void vec2Set(float* _v, float _x, float _y) +{ + _v[0] = _x; + _v[1] = _y; +} + +void mat4Set(float * _m, const float * _src) +{ + const uint32_t MAT4_FLOATS = 16; + for (uint32_t ii = 0; ii < MAT4_FLOATS; ++ii) { + _m[ii] = _src[ii]; + } +} + +class ExampleDenoise : public entry::AppI +{ +public: + ExampleDenoise(const char* _name, const char* _description) + : entry::AppI(_name, _description) + , m_currFrame(UINT32_MAX) + , m_texelHalf(0.0f) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Create uniforms + m_uniforms.init(); + + // Create texture sampler uniforms (used when we bind textures) + s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler); // Model's source albedo + s_color = bgfx::createUniform("s_color", bgfx::UniformType::Sampler); // Color (albedo) gbuffer, default color input + s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Sampler); // Normal gbuffer, Model's source normal + s_velocity = bgfx::createUniform("s_velocity", bgfx::UniformType::Sampler); // Velocity gbuffer + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler); // Depth gbuffer + s_previousColor = bgfx::createUniform("s_previousColor", bgfx::UniformType::Sampler); // Previous frame's result + s_previousNormal = bgfx::createUniform("s_previousNormal", bgfx::UniformType::Sampler); // Previous frame's gbuffer normal + + // Create program from shaders. + m_gbufferProgram = loadProgram("vs_denoise_gbuffer", "fs_denoise_gbuffer"); // Fill gbuffer + m_combineProgram = loadProgram("vs_denoise_screenquad", "fs_denoise_deferred_combine"); // Compute lighting from gbuffer + m_copyProgram = loadProgram("vs_denoise_screenquad", "fs_denoise_copy"); + m_denoiseTemporalProgram = loadProgram("vs_denoise_screenquad", "fs_denoise_temporal"); + m_denoiseSpatialProgram3x3 = loadProgram("vs_denoise_screenquad", "fs_denoise_spatial_3x3"); + m_denoiseSpatialProgram5x5 = loadProgram("vs_denoise_screenquad", "fs_denoise_spatial_5x5"); + m_denoiseApplyLighting = loadProgram("vs_denoise_screenquad", "fs_denoise_apply_lighting"); + m_txaaProgram = loadProgram("vs_denoise_screenquad", "fs_denoise_txaa"); + + // Load some meshes + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + m_meshes[ii] = meshLoad(s_meshPaths[ii]); + } + + // Randomly create some models + bx::RngMwc mwc; + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + Model& model = m_models[ii]; + + model.mesh = mwc.gen() % BX_COUNTOF(s_meshPaths); + model.position[0] = ( ( (mwc.gen() % 256) ) - 128.0f) / 20.0f; + model.position[1] = 0; + model.position[2] = ( ( (mwc.gen() % 256) ) - 128.0f) / 20.0f; + } + + // Load ground, just use the cube + m_ground = meshLoad("meshes/cube.bin"); + + m_groundTexture = loadTexture("textures/fieldstone-rgba.dds"); + m_normalTexture = loadTexture("textures/fieldstone-n.dds"); + + m_recreateFrameBuffers = false; + createFramebuffers(); + + // Vertex decl + PosTexCoord0Vertex::init(); + + // Init camera + cameraCreate(); + cameraSetPosition({ 0.0f, 1.5f, 0.0f }); + cameraSetVerticalAngle(-0.3f); + m_fovY = 60.0f; + + // Init "prev" matrices, will be same for first frame + cameraGetViewMtx(m_view); + bx::mtxProj(m_proj, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, bgfx::getCaps()->homogeneousDepth); + mat4Set(m_worldToViewPrev, m_view); + mat4Set(m_viewToProjPrev, m_proj); + + // Track whether previous results are valid + m_havePrevious = false; + + // Get renderer capabilities info. + const bgfx::RendererType::Enum renderer = bgfx::getRendererType(); + m_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f; + + imguiCreate(); + } + + int32_t shutdown() override + { + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + meshUnload(m_meshes[ii]); + } + + meshUnload(m_ground); + + bgfx::destroy(m_normalTexture); + bgfx::destroy(m_groundTexture); + + bgfx::destroy(m_gbufferProgram); + bgfx::destroy(m_combineProgram); + bgfx::destroy(m_copyProgram); + bgfx::destroy(m_denoiseTemporalProgram); + bgfx::destroy(m_denoiseSpatialProgram3x3); + bgfx::destroy(m_denoiseSpatialProgram5x5); + bgfx::destroy(m_denoiseApplyLighting); + bgfx::destroy(m_txaaProgram); + + m_uniforms.destroy(); + + bgfx::destroy(s_albedo); + bgfx::destroy(s_color); + bgfx::destroy(s_normal); + bgfx::destroy(s_velocity); + bgfx::destroy(s_depth); + bgfx::destroy(s_previousColor); + bgfx::destroy(s_previousNormal); + + destroyFramebuffers(); + + cameraDestroy(); + + imguiDestroy(); + + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + // skip processing when minimized, otherwise crashing + if (0 == m_width + || 0 == m_height) + { + return true; + } + + // Update frame timer + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency() ); + const float deltaTime = float(frameTime / freq); + const bgfx::Caps* caps = bgfx::getCaps(); + + if (m_size[0] != (int32_t)m_width + || m_size[1] != (int32_t)m_height + || m_recreateFrameBuffers) + { + destroyFramebuffers(); + createFramebuffers(); + m_recreateFrameBuffers = false; + } + + // Update camera + cameraUpdate(deltaTime*0.15f, m_mouseState, ImGui::MouseOverArea() ); + + // Set up matrices for gbuffer + cameraGetViewMtx(m_view); + + updateUniforms(); + + bx::mtxProj(m_proj, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, caps->homogeneousDepth); + bx::mtxProj(m_proj2, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, false); + + if (m_enableTxaa) + { + m_proj[2*4+0] += m_jitter[0] * (2.0f / m_size[0]); + m_proj[2*4+1] -= m_jitter[1] * (2.0f / m_size[1]); + } + + bgfx::ViewId view = 0; + + // Draw everything into gbuffer + { + bgfx::setViewName(view, "GBuffer"); + bgfx::setViewClear(view + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0 + , 1.0f + , 0 + ); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_size[0]), uint16_t(m_size[1]) ); + bgfx::setViewTransform(view, m_view, m_proj); + // Make sure when we draw it goes into gbuffer and not backbuffer + bgfx::setViewFrameBuffer(view, m_gbuffer); + + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + ); + + drawAllModels(view, m_gbufferProgram, m_uniforms); + ++view; + } + + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, caps->homogeneousDepth); + + // Shade gbuffer + { + bgfx::setViewName(view, "Combine"); + + // for some reason, previous draws texture lingering in transform stack + // need to clear out, otherwise this copy is garbled. this used to work + // and broke after updating, but i last updated like 2 years ago. + float identity[16]; + bx::mtxIdentity(identity); + bgfx::setTransform(identity); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_currentColor.m_buffer); + + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, m_gbufferTex[GBUFFER_RT_COLOR]); + bgfx::setTexture(1, s_normal, m_gbufferTex[GBUFFER_RT_NORMAL]); + + m_uniforms.submit(); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + + bgfx::submit(view, m_combineProgram); + + ++view; + } + + // update last texture written, to chain passes together + bgfx::TextureHandle lastTex = m_currentColor.m_texture; + + // denoise temporal pass + if (m_useTemporalPass && m_havePrevious) + { + bgfx::setViewName(view, "Denoise Temporal"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_temporaryColor.m_buffer); + bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A | BGFX_STATE_DEPTH_TEST_ALWAYS); + + // want color, prevColor + // normal, prevNormal + // depth, prevDepth to reject previous samples from accumulating - skipping depth for now + + bgfx::setTexture(0, s_color, lastTex); + bgfx::setTexture(1, s_normal, m_gbufferTex[GBUFFER_RT_NORMAL]); + bgfx::setTexture(2, s_velocity, m_gbufferTex[GBUFFER_RT_VELOCITY]); + bgfx::setTexture(3, s_previousColor, m_previousDenoise.m_texture); + bgfx::setTexture(4, s_previousNormal, m_previousNormal.m_texture); + + m_uniforms.submit(); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + + bgfx::submit(view, m_denoiseTemporalProgram); + + ++view; + + lastTex = m_temporaryColor.m_texture; + } + + // denoise spatial passes + if (0 < m_denoisePasses) + { + // variable number of passes for denoise, alternate between two textures/buffers + bgfx::FrameBufferHandle destBuffer[] = + { + m_previousDenoise.m_buffer, + m_currentColor.m_buffer, + m_temporaryColor.m_buffer, + m_currentColor.m_buffer, + m_temporaryColor.m_buffer, + m_currentColor.m_buffer, + }; + BX_STATIC_ASSERT(BX_COUNTOF(destBuffer) == DENOISE_MAX_PASSES); + + const uint32_t denoisePasses = bx::min(DENOISE_MAX_PASSES, m_denoisePasses); + + for (uint32_t ii = 0; ii < denoisePasses; ++ii) + { + char name[64]; + bx::snprintf(name, BX_COUNTOF(name), "Denoise %d/%d", ii, denoisePasses-1); + bgfx::setViewName(view, name); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, destBuffer[ii]); + + bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A | BGFX_STATE_DEPTH_TEST_ALWAYS); + bgfx::setTexture(0, s_color, lastTex); + bgfx::setTexture(1, s_normal, m_gbufferTex[GBUFFER_RT_NORMAL]); + bgfx::setTexture(2, s_depth, m_gbufferTex[GBUFFER_RT_DEPTH]); + + // need to update some denoise uniforms per draw + const float denoiseStepScale = bx::pow(2.0f, float(ii) ); + m_uniforms.m_denoiseStep = denoiseStepScale; + m_uniforms.submit(); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + + const bgfx::ProgramHandle spatialProgram = (0 == m_spatialSampleType) + ? m_denoiseSpatialProgram3x3 + : m_denoiseSpatialProgram5x5 + ; + bgfx::submit(view, spatialProgram); + + ++view; + + if (m_previousDenoise.m_buffer.idx == destBuffer[ii].idx) + { + lastTex = m_previousDenoise.m_texture; + } + else if (m_temporaryColor.m_buffer.idx == destBuffer[ii].idx) + { + lastTex = m_temporaryColor.m_texture; + } + else + { + lastTex = m_currentColor.m_texture; + } + } + } + else + { + // need color result for temporal denoise if not supplied by spatial pass + // (per SVGF paper, reuse previous frame's first spatial pass output as previous color + bgfx::setViewName(view, "Copy Color for Temporal Denoise"); + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_previousDenoise.m_buffer); + bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A | BGFX_STATE_DEPTH_TEST_ALWAYS); + bgfx::setTexture(0, s_color, lastTex); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_copyProgram); + + ++view; + } + + // apply lighting + { + bgfx::setViewName(view, "Apply Lighting"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + + bgfx::FrameBufferHandle destBuffer = (lastTex.idx == m_currentColor.m_texture.idx) + ? m_temporaryColor.m_buffer + : m_currentColor.m_buffer + ; + bgfx::setViewFrameBuffer(view, destBuffer); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, lastTex); + bgfx::setTexture(1, s_albedo, m_gbufferTex[GBUFFER_RT_COLOR]); + m_uniforms.submit(); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_denoiseApplyLighting); + ++view; + + lastTex = (m_temporaryColor.m_buffer.idx == destBuffer.idx) + ? m_temporaryColor.m_texture + : m_currentColor.m_texture + ; + } + + if (m_enableTxaa) + { + // Draw txaa to txaa buffer + { + bgfx::setViewName(view, "Temporal AA"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_txaaColor.m_buffer); + + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, lastTex); + bgfx::setTexture(1, s_previousColor, m_previousColor.m_texture); + bgfx::setTexture(2, s_velocity, m_gbufferTex[GBUFFER_RT_VELOCITY]); + bgfx::setTexture(3, s_depth, m_gbufferTex[GBUFFER_RT_DEPTH]); + m_uniforms.submit(); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_txaaProgram); + + ++view; + } + + // Copy txaa result to previous + { + bgfx::setViewName(view, "Copy to Previous"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_previousColor.m_buffer); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, m_txaaColor.m_texture); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_copyProgram); + + ++view; + } + + // Copy txaa result to swap chain + { + bgfx::setViewName(view, "Display"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, m_txaaColor.m_texture); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_copyProgram); + + ++view; + } + } + else + { + // Copy color result to swap chain + { + bgfx::setViewName(view, "Display"); + bgfx::setViewClear(view + , BGFX_CLEAR_NONE + , 0 + , 1.0f + , 0 + ); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + ); + bgfx::setTexture(0, s_color, lastTex); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_copyProgram); + + ++view; + } + } + + // copy the normal buffer for next time + { + bgfx::setViewName(view, "Copy Normals"); + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_previousNormal.m_buffer); + bgfx::setState(BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A | BGFX_STATE_DEPTH_TEST_ALWAYS); + bgfx::setTexture(0, s_color, m_gbufferTex[GBUFFER_RT_NORMAL]); + + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_copyProgram); + + ++view; + + // update previous status + m_havePrevious = true; + } + + // Copy matrices for next time + mat4Set(m_worldToViewPrev, m_view); + mat4Set(m_viewToProjPrev, m_proj); + + // Draw UI + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 4.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 4.0f, m_height / 1.24f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.5f); + + { + ImGui::TextWrapped( + "In this demo, noise is added to results of deferred lighting. Then denoise is applied " + "before multiplying the lit result with gbuffer albedo. Optionally, temporal antialiasing " + "can be applied after that. (off by default, implementation blurry)"); + ImGui::Separator(); + + ImGui::Text("noise controls:"); + ImGui::Combo("pattern", &m_noiseType, "none\0dither\0random\0\0"); + if (ImGui::IsItemHovered() ) + { + ImGui::BeginTooltip(); + ImGui::Text("none"); + ImGui::BulletText("compare denoised results to this"); + ImGui::BulletText("brighter than noisy images, not losing any pixel's energy"); + ImGui::Text("dither"); + ImGui::BulletText("reject 3 out of 4 pixels in 2x2 pattern"); + ImGui::BulletText("could represent lower resolution signal"); + ImGui::Text("random"); + ImGui::BulletText("reject about half pixels, using common shader random"); + ImGui::BulletText("could represent monte carlo something or other"); + ImGui::EndTooltip(); + } + + ImGui::Checkbox("dynamic noise", &m_dynamicNoise); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("update noise pattern each frame"); + } + + ImGui::Separator(); + } + + { + ImGui::Text("temporal denoise pass controls:"); + ImGui::Checkbox("use temporal pass", &m_useTemporalPass); + ImGui::Separator(); + } + + { + ImGui::Text("spatial denoise pass controls:"); + ImGui::SliderInt("spatial passes", &m_denoisePasses, 0, DENOISE_MAX_PASSES); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("set passes to 0 to turn off spatial denoise"); + } + + ImGui::Combo("spatial sample extent", &m_spatialSampleType, "three\0five\0\0"); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("select 3x3 or 5x5 filter kernel"); + } + + ImGui::SliderFloat("sigma z", &m_sigmaDepth, 0.0f, 0.1f, "%.5f"); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("lower sigma z, pickier blending across depth edges"); + } + + ImGui::SliderFloat("sigma n", &m_sigmaNormal, 1.0f, 256.0f); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("higher sigma n, pickier blending across normal edges"); + } + + ImGui::Separator(); + } + + if (ImGui::CollapsingHeader("TXAA options") ) + { + ImGui::Checkbox("use TXAA", &m_enableTxaa); + ImGui::Checkbox("apply extra blur to current color", &m_applyMitchellFilter); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("reduces flicker/crawl on thin features, maybe too much!"); + } + + ImGui::SliderFloat("feedback min", &m_feedbackMin, 0.0f, 1.0f); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("minimum amount of previous frame to blend in"); + } + + ImGui::SliderFloat("feedback max", &m_feedbackMax, 0.0f, 1.0f); + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("maximum amount of previous frame to blend in"); + } + + ImGui::Checkbox("debug TXAA with slow frame rate", &m_useTxaaSlow); + if (ImGui::IsItemHovered() ) + { + ImGui::BeginTooltip(); + ImGui::Text("sleep 100ms per frame to highlight temporal artifacts"); + ImGui::Text("high framerate compensates for flickering, masking issues"); + ImGui::EndTooltip(); + } + + ImGui::Separator(); + } + + ImGui::End(); + + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_currFrame = bgfx::frame(); + + // add artificial wait to emphasize txaa behavior + if (m_useTxaaSlow) + { + bx::sleep(100); + } + + return true; + } + + return false; + } + + void drawAllModels(bgfx::ViewId _pass, bgfx::ProgramHandle _program, const Uniforms & _uniforms) + { + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + const Model& model = m_models[ii]; + + // Set up transform matrix for each model + const float scale = s_meshScale[model.mesh]; + float mtx[16]; + bx::mtxSRT(mtx + , scale + , scale + , scale + , 0.0f + , 0.0f + , 0.0f + , model.position[0] + , model.position[1] + , model.position[2] + ); + + // Submit mesh to gbuffer + bgfx::setTexture(0, s_albedo, m_groundTexture); + bgfx::setTexture(1, s_normal, m_normalTexture); + _uniforms.submit(); + + meshSubmit(m_meshes[model.mesh], _pass, _program, mtx); + } + + // Draw ground + float mtxScale[16]; + const float scale = 10.0f; + bx::mtxScale(mtxScale, scale, scale, scale); + + float mtxTranslate[16]; + bx::mtxTranslate(mtxTranslate + , 0.0f + , -10.0f + , 0.0f + ); + + float mtx[16]; + bx::mtxMul(mtx, mtxScale, mtxTranslate); + bgfx::setTexture(0, s_albedo, m_groundTexture); + bgfx::setTexture(1, s_normal, m_normalTexture); + _uniforms.submit(); + + meshSubmit(m_ground, _pass, _program, mtx); + } + + void createFramebuffers() + { + m_size[0] = m_width; + m_size[1] = m_height; + + const uint64_t bilinearFlags = 0 + | BGFX_TEXTURE_RT + | BGFX_SAMPLER_U_CLAMP + | BGFX_SAMPLER_V_CLAMP + ; + + const uint64_t pointSampleFlags = bilinearFlags + | BGFX_SAMPLER_MIN_POINT + | BGFX_SAMPLER_MAG_POINT + | BGFX_SAMPLER_MIP_POINT + ; + + m_gbufferTex[GBUFFER_RT_COLOR] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::BGRA8, pointSampleFlags); + m_gbufferTex[GBUFFER_RT_NORMAL] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::BGRA8, pointSampleFlags); + m_gbufferTex[GBUFFER_RT_VELOCITY] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::RG16F, pointSampleFlags); + m_gbufferTex[GBUFFER_RT_DEPTH] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::D32F , pointSampleFlags); + m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_gbufferTex), m_gbufferTex, true); + + bgfx::TextureFormat::Enum format = bgfx::TextureFormat::RG11B10F; + if (!bgfx::isTextureValid(1, false, 1, format, bilinearFlags)) + { + format = bgfx::TextureFormat::RGBA16F; + } + + m_currentColor .init(m_size[0], m_size[1], format, bilinearFlags); + m_previousColor .init(m_size[0], m_size[1], format, bilinearFlags); + m_txaaColor .init(m_size[0], m_size[1], format, bilinearFlags); + m_temporaryColor .init(m_size[0], m_size[1], format, bilinearFlags); + m_previousNormal .init(m_size[0], m_size[1], format, pointSampleFlags); + m_previousDenoise.init(m_size[0], m_size[1], format, bilinearFlags); + } + + // all buffers set to destroy their textures + void destroyFramebuffers() + { + bgfx::destroy(m_gbuffer); + + m_currentColor.destroy(); + m_previousColor.destroy(); + m_txaaColor.destroy(); + m_temporaryColor.destroy(); + m_previousNormal.destroy(); + m_previousDenoise.destroy(); + } + + void updateUniforms() + { + { + uint32_t idx = m_currFrame % 8; + const float offsets[] = + { + (1.0f/ 2.0f), (1.0f/3.0f), + (1.0f/ 4.0f), (2.0f/3.0f), + (3.0f/ 4.0f), (1.0f/9.0f), + (1.0f/ 8.0f), (4.0f/9.0f), + (5.0f/ 8.0f), (7.0f/9.0f), + (3.0f/ 8.0f), (2.0f/9.0f), + (7.0f/ 8.0f), (5.0f/9.0f), + (1.0f/16.0f), (8.0f/9.0f), + }; + + // Strange constant for jitterX is because 8 values from halton2 + // sequence above do not average out to 0.5, 1/16 skews it to the + // left. Subtracting a smaller value to center the range of jitter + // around 0. Not necessary for jitterY. Not confident this makes sense... + const float jitterX = 1.0f * (offsets[2*idx] - (7.125f/16.0f) ); + const float jitterY = 1.0f * (offsets[2*idx+1] - 0.5f); + + vec2Set(m_uniforms.m_cameraJitterCurr, jitterX, jitterY); + vec2Set(m_uniforms.m_cameraJitterPrev, m_jitter[0], m_jitter[1]); + + m_jitter[0] = jitterX; + m_jitter[1] = jitterY; + } + + m_uniforms.m_feedbackMin = m_feedbackMin; + m_uniforms.m_feedbackMax = m_feedbackMax; + m_uniforms.m_applyMitchellFilter = m_applyMitchellFilter ? 1.0f : 0.0f; + + mat4Set(m_uniforms.m_worldToViewPrev, m_worldToViewPrev); + mat4Set(m_uniforms.m_viewToProjPrev, m_viewToProjPrev); + + m_uniforms.m_frameOffsetForNoise = m_dynamicNoise + ? float(m_currFrame % 8) + : 0.0f + ; + m_uniforms.m_noiseType = float(m_noiseType); + m_uniforms.m_sigmaDepth = m_sigmaDepth; + m_uniforms.m_sigmaNormal = m_sigmaNormal; + } + + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + entry::MouseState m_mouseState; + + // Resource handles + bgfx::ProgramHandle m_gbufferProgram; + bgfx::ProgramHandle m_combineProgram; + bgfx::ProgramHandle m_copyProgram; + bgfx::ProgramHandle m_denoiseTemporalProgram; + bgfx::ProgramHandle m_denoiseSpatialProgram3x3; + bgfx::ProgramHandle m_denoiseSpatialProgram5x5; + bgfx::ProgramHandle m_denoiseApplyLighting; + bgfx::ProgramHandle m_txaaProgram; + + // Shader uniforms + Uniforms m_uniforms; + + // Uniforms to identify texture samplers + bgfx::UniformHandle s_albedo; + bgfx::UniformHandle s_color; + bgfx::UniformHandle s_normal; + bgfx::UniformHandle s_velocity; + bgfx::UniformHandle s_depth; + bgfx::UniformHandle s_previousColor; + bgfx::UniformHandle s_previousNormal; + + bgfx::FrameBufferHandle m_gbuffer; + bgfx::TextureHandle m_gbufferTex[GBUFFER_RENDER_TARGETS]; + + RenderTarget m_currentColor; + RenderTarget m_previousColor; + RenderTarget m_txaaColor; + RenderTarget m_temporaryColor; // need another buffer to ping-pong results + RenderTarget m_previousNormal; + RenderTarget m_previousDenoise; // color output by first spatial denoise pass, input to next frame as previous color + + struct Model + { + uint32_t mesh; // Index of mesh in m_meshes + float position[3]; + }; + + Model m_models[MODEL_COUNT]; + Mesh* m_meshes[BX_COUNTOF(s_meshPaths)]; + Mesh* m_ground; + bgfx::TextureHandle m_groundTexture; + bgfx::TextureHandle m_normalTexture; + + uint32_t m_currFrame; + float m_texelHalf = 0.0f; + float m_fovY = 60.0f; + bool m_recreateFrameBuffers = false; + bool m_havePrevious = false; + + float m_view[16]; + float m_proj[16]; + float m_proj2[16]; + float m_viewToProjPrev[16]; + float m_worldToViewPrev[16]; + float m_jitter[2]; + int32_t m_size[2]; + + // UI parameters + int32_t m_noiseType = 2; + int32_t m_spatialSampleType = 1; + int32_t m_denoisePasses = 5; + float m_sigmaDepth = 0.05f; + float m_sigmaNormal = 128.0f; + float m_feedbackMin = 0.8f; + float m_feedbackMax = 0.95f; + bool m_dynamicNoise = true; + bool m_useTemporalPass = true; + bool m_enableTxaa = false; + bool m_applyMitchellFilter = true; + bool m_useTxaaSlow = false; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN(ExampleDenoise, "43-denoise", "Denoise."); diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_apply_lighting.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_apply_lighting.sc new file mode 100644 index 00000000000..118b4273f63 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_apply_lighting.sc @@ -0,0 +1,25 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_albedo, 1); + +void main() +{ + vec2 texCoord = v_texcoord0; + vec3 lightColor = texture2D(s_color, texCoord).xyz; + vec3 albedo = texture2D(s_albedo, texCoord).xyz; + albedo = toLinear(albedo); + + vec3 color = lightColor * albedo; + color = toGamma(color); + + gl_FragColor = vec4(color, 1.0); +} diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_copy.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_copy.sc new file mode 100644 index 00000000000..aa835a07a3f --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_copy.sc @@ -0,0 +1,18 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_color, 0); + +void main() +{ + vec2 texCoord = v_texcoord0; + vec4 color = texture2D(s_color, texCoord); + gl_FragColor = color; +} diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_deferred_combine.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_deferred_combine.sc new file mode 100644 index 00000000000..3aeeaa4da78 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_deferred_combine.sc @@ -0,0 +1,61 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" +#include "normal_encoding.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_normal, 1); + +float ShadertoyNoise (vec2 uv) { + return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + +int ModHelper (float a, float b) +{ + return int( a - (b*floor(a/b))); +} + +void main() +{ + vec2 texCoord = v_texcoord0; + + // mess with result so there's something to denosie + float sn = 1.0; + if (1.5 < u_noiseType) + { + sn = ShadertoyNoise(gl_FragCoord.xy + vec2(314.0, 159.0)*u_frameIdx); + sn = (sn < 0.5) ? 0.0 : 1.0; + } + else if (0.5 < u_noiseType) + { + // having trouble compiling for gles when using % or mod :( + int modCoordX = ModHelper(gl_FragCoord.x, 2.0); + int modCoordY = ModHelper(gl_FragCoord.y, 2.0); + int frameSelect = modCoordY * 2 + modCoordX; + int frameMod4 = ModHelper(u_frameIdx, 4.0); + sn = (frameSelect == frameMod4) ? 1.0 : 0.0; + } + + vec4 normalRoughness = texture2D(s_normal, texCoord).xyzw; + vec3 normal = NormalDecode(normalRoughness.xyz); + float roughness = 0.5; + + // need to get a valid view vector for any microfacet stuff :( + float gloss = 1.0-roughness; + float specPower = 1022.0 * gloss + 2.0; + + vec3 light = normalize(vec3(-0.2, 1.0, -0.2)); + float NdotL = saturate(dot(normal, light)); + float diff = NdotL*0.99 + 0.01; + float spec = 5.0 * pow(NdotL, specPower); + + float lightAmt = (diff + spec) * sn; + + gl_FragColor = vec4(vec3_splat(lightAmt), 1.0); +} diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_gbuffer.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_gbuffer.sc new file mode 100644 index 00000000000..8c86314aa5b --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_gbuffer.sc @@ -0,0 +1,69 @@ +$input v_normal, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3 + +#include "../common/common.sh" +#include "parameters.sh" +#include "normal_encoding.sh" + +SAMPLER2D(s_albedo, 0); +SAMPLER2D(s_normal, 1); + +// http://www.thetenthplanet.de/archives/1180 +// "followup: normal mapping without precomputed tangents" +mat3 cotangentFrame(vec3 N, vec3 p, vec2 uv) +{ + // get edge vectors of the pixel triangle + vec3 dp1 = dFdx(p); + vec3 dp2 = dFdy(p); + vec2 duv1 = dFdx(uv); + vec2 duv2 = dFdy(uv); + + // solve the linear system + vec3 dp2perp = cross(dp2, N); + vec3 dp1perp = cross(N, dp1); + vec3 T = dp2perp * duv1.x + dp1perp * duv2.x; + vec3 B = dp2perp * duv1.y + dp1perp * duv2.y; + + // construct a scale-invariant frame + float invMax = inversesqrt(max(dot(T,T), dot(B,B))); + return mat3(T*invMax, B*invMax, N); +} + +void main() +{ + vec3 albedo = toLinear(texture2D(s_albedo, v_texcoord0).xyz); + + // get vertex normal + vec3 normal = normalize(v_normal); + + // get normal map normal, unpack, and calculate z + vec3 normalMap; + normalMap.xy = texture2D(s_normal, v_texcoord0).xy; + normalMap.xy = normalMap.xy * 2.0 - 1.0; + normalMap.z = sqrt(1.0 - dot(normalMap.xy, normalMap.xy)); + + // swap x and y, because the brick texture looks flipped, don't copy this... + normalMap.xy = normalMap.yx; + + // perturb geometry normal by normal map + vec3 pos = v_texcoord2.xyz; // contains world space pos + mat3 TBN = cotangentFrame(normal, pos, v_texcoord0); + vec3 bumpedNormal = normalize(instMul(TBN, normalMap)); + + // need some proxy for roughness value w/o roughness texture + // assume horizontal (blue) normal map is smooth, and then + // modulate with albedo for some higher frequency detail + float roughness = normalMap.z * mix(0.9, 1.0, albedo.y); + roughness = roughness * 0.6 + 0.2; + + // Calculate velocity as delta position from previous frame to this + vec2 previousNDC = v_texcoord1.xy * (1.0/v_texcoord1.w); + previousNDC.y *= -1.0; + previousNDC = previousNDC * 0.5 + 0.5; + vec2 velocity = gl_FragCoord.xy*u_viewTexel.xy - previousNDC; + + vec3 bufferNormal = NormalEncode(bumpedNormal); + + gl_FragData[0] = vec4(toGamma(albedo), 1.0); + gl_FragData[1] = vec4(bufferNormal, roughness); // Todo, better packing + gl_FragData[2] = vec4(velocity, 0.0, 0.0); +} diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_3x3.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_3x3.sc new file mode 100644 index 00000000000..fc89ece5063 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_3x3.sc @@ -0,0 +1,12 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +// don't use 5x5 sample pattern for spatial denoise, use 3x3 instead +#define USE_SPATIAL_5X5 0 + +// includes main function to implement spatial pattern +#include "fs_denoise_spatial_implementation.sh" diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_5x5.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_5x5.sc new file mode 100644 index 00000000000..3656f7ee2b5 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_5x5.sc @@ -0,0 +1,12 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +// use 5x5 sample pattern for spatial denoise +#define USE_SPATIAL_5X5 1 + +// includes main function to implement spatial pattern +#include "fs_denoise_spatial_implementation.sh" diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_implementation.sh b/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_implementation.sh new file mode 100644 index 00000000000..e04a91bb9a5 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_spatial_implementation.sh @@ -0,0 +1,97 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef FS_DENOISE_SPATIAL_IMPLEMENTATION_SH +#define FS_DENOISE_SPATIAL_IMPLEMENTATION_SH + +#include "../common/common.sh" +#include "parameters.sh" +#include "normal_encoding.sh" + +SAMPLER2D(s_color, 0); // input color, signal to be denoised +SAMPLER2D(s_normal, 1); // scene's gbuffer normal, used for edge stopping function +SAMPLER2D(s_depth, 2); // scene's depth, used for edge stopping function + +void main() +{ + vec2 texCoord = v_texcoord0; + + // read center pixel + vec4 color = texture2D(s_color, texCoord); + vec3 normal = NormalDecode(texture2D(s_normal, texCoord).xyz); // * 2.0 - 1.0; + float depth = texture2D(s_depth, texCoord).x; + // want depth gradient for edge stopping function + float depthGradient = abs(dFdx(depth)) + abs(dFdy(depth)); + + float du = u_texCoordStep * u_viewTexel.x; + float dv = u_texCoordStep * u_viewTexel.y; + +#if USE_SPATIAL_5X5 + float gaussianWeights[5]; + gaussianWeights[0] = 1.0/16.0; + gaussianWeights[1] = 4.0/16.0; + gaussianWeights[2] = 6.0/16.0; + gaussianWeights[3] = 4.0/16.0; + gaussianWeights[4] = 1.0/16.0; + float initialWeight = (gaussianWeights[2]*gaussianWeights[2]); + int centerIdx = 2; + + vec4 accumulateColor = color * initialWeight; + float accumulateWeight = initialWeight; + + for (int yy = 0; yy < 5; ++yy) + { + for (int xx = 0; xx < 5; ++xx) + { +#else + float gaussianWeights[3]; + gaussianWeights[0] = 1.0/4.0; + gaussianWeights[1] = 2.0/4.0; + gaussianWeights[2] = 1.0/4.0; + float initialWeight = (gaussianWeights[1]*gaussianWeights[1]); + int centerIdx = 1; + + vec4 accumulateColor = color * initialWeight; + float accumulateWeight = initialWeight; + + for (int yy = 0; yy < 3; ++yy) + { + for (int xx = 0; xx < 3; ++xx) + { +#endif // USE_SPATIAL_5X5 + if ((centerIdx == xx) && (centerIdx == yy)) { + continue; + } + + float xOffset = float(xx) - float(centerIdx); + float yOffset = float(yy) - float(centerIdx); + vec2 sampleTexCoord = texCoord; + sampleTexCoord.x += xOffset * du; + sampleTexCoord.y += yOffset * dv; + + vec4 sampleColor = texture2D(s_color, sampleTexCoord); + vec3 sampleNormal = NormalDecode(texture2D(s_normal, sampleTexCoord).xyz); + float normalWeight = pow(saturate(dot(normal, sampleNormal)), u_sigmaNormal); + + float sampleDepth = texture2D(s_depth, sampleTexCoord).x; + float depthDelta = depth - sampleDepth; + float depthWeight = exp(-abs(depthDelta) / max(1e-5, u_sigmaDepth*u_sigmaDepth)); + + float weight = depthWeight * normalWeight; + + // apply gaussian + weight *= (gaussianWeights[xx]*gaussianWeights[yy]); + + accumulateColor += sampleColor * weight; + accumulateWeight += weight; + } + } + + accumulateColor /= max(accumulateWeight, 1e-5); + + gl_FragColor = accumulateColor; +} + +#endif // FS_DENOISE_SPATIAL_IMPLEMENTATION_SH diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_temporal.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_temporal.sc new file mode 100644 index 00000000000..63f2f22acdc --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_temporal.sc @@ -0,0 +1,96 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" +#include "normal_encoding.sh" +#include "shared_functions.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_normal, 1); +SAMPLER2D(s_velocity, 2); +SAMPLER2D(s_previousColor, 3); // previous color +SAMPLER2D(s_previousNormal, 4); // previous normal + +#define COS_PI_OVER_4 0.70710678118 + +void main() +{ + vec2 texCoord = v_texcoord0; + + // read center pixel + vec4 color = texture2D(s_color, texCoord); + vec3 normal = NormalDecode(texture2D(s_normal, texCoord).xyz); + + // offset to last pixel + vec2 velocity = texture2D(s_velocity, texCoord).xy; + vec2 texCoordPrev = GetTexCoordPreviousNoJitter(texCoord, velocity); + + // SVGF approach suggests sampling and test/rejecting 4 contributing + // samples individually and then doing custom bilinear filter of result + + // multiply texCoordPrev by dimensions to get nearest pixels, produces (X.5, Y.5) coordinate + // under no motion, so subtract half here to get correct weights for bilinear filter. + // not thrilled by this, feels like something is wrong. + vec2 screenPixelPrev = texCoordPrev * u_viewRect.zw - vec2_splat(0.5); + vec2 screenPixelMin = floor(screenPixelPrev); + vec2 screenPixelMix = fract(screenPixelPrev); + + float x0 = 1.0 - screenPixelMix.x; + float x1 = screenPixelMix.x; + float y0 = 1.0 - screenPixelMix.y; + float y1 = screenPixelMix.y; + + float coordWeights[4]; + coordWeights[0] = x0*y0; + coordWeights[1] = x1*y0; + coordWeights[2] = x0*y1; + coordWeights[3] = x1*y1; + + // adding a half texel here to correct the modification above, in addition to pixel offset + // to grab adjacent pixels for bilinear filter. not thrilled by this, feels like something is wrong. + vec2 coords[4]; + coords[0] = (screenPixelMin + vec2(0.5, 0.5)) * u_viewTexel.xy; + coords[1] = (screenPixelMin + vec2(1.5, 0.5)) * u_viewTexel.xy; + coords[2] = (screenPixelMin + vec2(0.5, 1.5)) * u_viewTexel.xy; + coords[3] = (screenPixelMin + vec2(1.5, 1.5)) * u_viewTexel.xy; + + // SVGF paper mentions comparing depths and normals to establish + // whether samples are similar enough to contribute, but does not + // describe how. References the following paper, which uses threshold + // of cos(PI/4) to accept/reject. + // https://software.intel.com/content/www/us/en/develop/articles/streaming-g-buffer-compression-for-multi-sample-anti-aliasing.html + // this paper also discusses using depth derivatives to estimate overlapping depth range + + vec4 accumulatedColor = vec4_splat(0.0); + float accumulatedWeight = 0.0; + for (int i = 0; i < 4; ++i) + { + vec3 sampleNormal = NormalDecode(texture2D(s_previousNormal, coords[i]).xyz); + float normalSimilarity = dot(normal, sampleNormal); + float weight = (normalSimilarity < COS_PI_OVER_4) ? 0.0 : 1.0; + + vec4 sampleColor = texture2D(s_previousColor, coords[i]); + + weight *= coordWeights[i]; + accumulatedColor += sampleColor * weight; + accumulatedWeight += weight; + } + + if (0.0 < accumulatedWeight) + { + accumulatedColor *= (1.0 / accumulatedWeight); + color = mix(color, accumulatedColor, 0.8); + } + else + { + // debug colorize + //color.xyz *= vec3(0.5, 0.01, 0.65); + } + + gl_FragColor = color; +} diff --git a/3rdparty/bgfx/examples/43-denoise/fs_denoise_txaa.sc b/3rdparty/bgfx/examples/43-denoise/fs_denoise_txaa.sc new file mode 100644 index 00000000000..d4cdc82ec30 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/fs_denoise_txaa.sc @@ -0,0 +1,208 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" +#include "shared_functions.sh" + +#define APPLY_TXAA_IN_LINEAR 0 +#define DEBUG_HALF_SCREEN 0 + +SAMPLER2D(s_color, 0); // this frame's shaded color +SAMPLER2D(s_previousColor, 1); // previous frame's shaded color +SAMPLER2D(s_velocity, 2); // screenspace delta from previous to current frame +SAMPLER2D(s_depth, 3); // depth buffer + +vec3 FindNearestDepth(sampler2D _depthSampler, vec2 _texCoord) { + vec2 du = vec2(u_viewTexel.x, 0.0); + vec2 dv = vec2(0.0, u_viewTexel.y); + + vec2 coord = _texCoord - du - dv; + vec3 tcd0 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord - dv; + vec3 tcd1 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord + du - dv; + vec3 tcd2 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord + du; + vec3 tcd3 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord; + vec3 tcd4 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord - du; + vec3 tcd5 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord - du + dv; + vec3 tcd6 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord + dv; + vec3 tcd7 = vec3(coord, texture2D(_depthSampler, coord).x); + coord = _texCoord + du + dv; + vec3 tcd8 = vec3(coord, texture2D(_depthSampler, coord).x); + + vec3 minTcd = tcd0; + if (tcd1.z < minTcd.z) minTcd = tcd1; + if (tcd2.z < minTcd.z) minTcd = tcd2; + if (tcd3.z < minTcd.z) minTcd = tcd3; + if (tcd4.z < minTcd.z) minTcd = tcd4; + if (tcd5.z < minTcd.z) minTcd = tcd5; + if (tcd6.z < minTcd.z) minTcd = tcd6; + if (tcd7.z < minTcd.z) minTcd = tcd7; + if (tcd8.z < minTcd.z) minTcd = tcd8; + + return minTcd; +} + +float Mitchell (float _b, float _c, float _x) { + + float v = 0.0; + float x = abs(_x); + float x2 = x*x; + float x3 = x2*x; + + if (x < 1.0) { + v = (12.0-9.0*_b-6.0*_c)*x3 + (-18.0+12.0*_b+6.0*_c)*x2 + (6.0-2.0*_b); + } + else if (x < 2.0) { + v = (-_b-6.0*_c)*x3 + (6.0*_b+30.0*_c)*x2 + (-12.0*_b-48.0*_c)*x + (8.0*_b+24.0*_c); + } + + return v*(1.0/6.0); +} + + +void main() +{ + vec2 texCoord = v_texcoord0; + vec3 colorCurr = texture2D(s_color, texCoord).xyz; + +#if DEBUG_HALF_SCREEN + if (texCoord.x > 0.5) { +#endif + + vec3 nearestCoordAndDepth = FindNearestDepth(s_depth, texCoord); + + vec2 velocity = texture2D(s_velocity, nearestCoordAndDepth.xy).xy; + vec2 texCoordPrev = GetTexCoordPrevious(texCoord, velocity); + + vec3 colorPrev = texture2D(s_previousColor, texCoordPrev).xyz; + + // Sample local neighborhood for variance clipping + vec2 du = vec2(u_viewTexel.x, 0.0); + vec2 dv = vec2(0.0, u_viewTexel.y); + + vec3 colorUL = texture2D(s_color, texCoord - du - dv).xyz; + vec3 colorUp = texture2D(s_color, texCoord - dv).xyz; + vec3 colorUR = texture2D(s_color, texCoord + du - dv).xyz; + vec3 colorRi = texture2D(s_color, texCoord + du ).xyz; + vec3 colorLe = texture2D(s_color, texCoord - du ).xyz; + vec3 colorDL = texture2D(s_color, texCoord - du + dv).xyz; + vec3 colorDo = texture2D(s_color, texCoord + dv).xyz; + vec3 colorDR = texture2D(s_color, texCoord + du + dv).xyz; + + // in an ideal world, lighting and such is in linear space, + // would possibly want to convert to gamma and apply txaa + // there. but this sample isn't storing intermediate results + // in linear space (or doing any reasonable lighting) so + // would possibly want to do the opposite. +#if APPLY_TXAA_IN_LINEAR + colorCurr = toLinear(colorCurr); + colorPrev = toLinear(colorPrev); + colorUL = toLinear(colorUL); + colorUp = toLinear(colorUp); + colorUR = toLinear(colorUR); + colorLe = toLinear(colorLe); + colorRi = toLinear(colorRi); + colorDL = toLinear(colorDL); + colorDo = toLinear(colorDo); + colorDR = toLinear(colorDR); +#endif + + // Compute variance box on color neighborhood, clip to box + float outVal = 0.0; + { + vec3 m1 = vec3_splat(0.0); + vec3 m2 = vec3_splat(0.0); + m1 += colorUL; m2 += colorUL*colorUL; + m1 += colorUp; m2 += colorUp*colorUp; + m1 += colorUR; m2 += colorUR*colorUR; + m1 += colorLe; m2 += colorLe*colorLe; + m1 += colorCurr; m2 += colorCurr*colorCurr; + m1 += colorRi; m2 += colorRi*colorRi; + m1 += colorDL; m2 += colorDL*colorDL; + m1 += colorDo; m2 += colorDo*colorDo; + m1 += colorDR; m2 += colorDR*colorDR; + m1 *= (1.0/9.0); + m2 *= (1.0/9.0); + + vec3 var = max(vec3_splat(0.0), m2 - m1*m1); + vec3 sigma = sqrt(var); + outVal = max(sigma.x, max(sigma.y, sigma.z)); + sigma *= 1.4; + vec3 colorMin = m1 - sigma; + vec3 colorMax = m1 + sigma; + + vec3 displacement = colorPrev - m1; + vec3 units = abs(displacement / sigma); + float maxUnit = max(max(units.x, units.y), max(units.z, 1.0)); + + colorPrev = m1 + displacement * (1.0/maxUnit); + } + + float lumaCurr = dot(colorCurr, vec3(0.3, 0.6, 0.1)); + float lumaPrev = dot(colorPrev, vec3(0.3, 0.6, 0.1)); + + // adjust feedback/blend amount depending on color difference + float r = abs(lumaCurr-lumaPrev) / max(max(lumaCurr, lumaPrev), 0.2); + r = 1.0-r; + r = r*r; + float feedback = mix(u_feedbackMin, u_feedbackMax, r); + + vec3 colorOut = mix(colorCurr, colorPrev, feedback); + + // optionally blur current color, since we've already taken + // the samples to build the variance window. could use more + // blur when feedback is lower, to replace temporal accumulation + // with spatial accumulation. or could use filter to sharpen. + if (u_applyMitchellFilter > 0.0) + { + // adjust filter coefficients depending on color difference + float b = mix(3.0/2.0, 1.0/3.0, r); + float c = mix(-1.0/4.0, 1.0/3.0, r); + + float m0 = Mitchell(b, c, 0.0); + float m1 = Mitchell(b, c, 1.0); + float m2 = Mitchell(b, c, sqrt(2.0)); + + vec3 colorFilter = m0 * colorCurr; + colorFilter += m1 * colorLe; + colorFilter += m1 * colorRi; + colorFilter += m1 * colorUp; + colorFilter += m1 * colorDo; + colorFilter += m2 * colorUL; + colorFilter += m2 * colorUR; + colorFilter += m2 * colorDL; + colorFilter += m2 * colorDR; + colorFilter *= 1.0/(m0 + 4.0*m1 + 4.0*m2); + + colorOut = mix(colorFilter, colorPrev, feedback); + } + + // in an ideal world, lighting and such is in linear space, + // would possibly want to convert to gamma and apply txaa + // there. but this sample isn't storing intermediate results + // in linear space (or doing any reasonable lighting) so + // would possibly want to do the opposite. +#if APPLY_TXAA_IN_LINEAR + colorCurr = toGamma(colorOut); +#else + colorCurr = colorOut; +#endif + + +#if DEBUG_HALF_SCREEN + } +#endif + + gl_FragColor = vec4(colorCurr, 1.0); +} diff --git a/3rdparty/bgfx/examples/43-denoise/makefile b/3rdparty/bgfx/examples/43-denoise/makefile new file mode 100644 index 00000000000..f9e23de2e08 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2019 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/43-denoise/normal_encoding.sh b/3rdparty/bgfx/examples/43-denoise/normal_encoding.sh new file mode 100644 index 00000000000..231cdae01b4 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/normal_encoding.sh @@ -0,0 +1,92 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef NORMAL_ENCODING_SH +#define NORMAL_ENCODING_SH + +#define NE_USE_OCTAHEDRAL_REPRESENTATION 0 + +// From "A Survey of Efficient Representations for Independent Unit Vectors" +// http://jcgt.org/published/0003/02/01/paper.pdf + +// Convert an oct24 (2x12bit normal) to an rgb8 value for storing in texture +vec3 snorm12x2_to_unorm8x3 (vec2 f) { + + f = clamp(f, -1.0, 1.0);//min(max(f, vec2(-1.0)), vec2(1.0)); + vec2 u = floor(f * 2047.0 + 2047.5); + float t = floor(u.y / 256.0); + + // "This code assumes that rounding will occur during storage." + // -- Not certain but this appears to mainly apply to the x channel. + // From paper: x = u.x / 16.0 - 0.5 + // Instead round by +0.5 and floor. + return vec3(floor(u.x / 16.0), fract(u.x / 16.0) * 256.0 + t, u.y - t * 256.0) / 255.0; +} + +// Unpack oct24 (2x12bit normal) from an rgb8 value stored in texture (normal spec) +vec2 unorm8x3_to_snorm12x2 (vec3 u) { + + u *= 255.0; + u.y *= (1.0 / 16.0); + vec2 s = vec2(u.x * 16.0 + floor(u.y), fract(u.y) * (16.0 * 256.0) + u.z); + + s = s * (1.0 / 2047.0) - 1.0; + return min(max(s, -1.0), 1.0); +} + +// Built in sign test could return 0, don't want that +vec2 signNotZero (vec2 v) { + return vec2((v.x >= 0.0) ? 1.0 : -1.0, (v.y >= 0.0) ? 1.0 : -1.0); +} + +// Assume normalized input. Output is (-1, 1) for each component +vec2 float32x3_to_oct(vec3 v) { + + // Project the sphere onto the octahedron, and then onto the xy plane + vec2 p = v.xy * (1.0 / (abs(v.x) + abs(v.y) + abs(v.z))); + + // Reflect the folds of the lower hemisphere over the diagonals + return (v.z <= 0.0) ? ((1.0 - abs(p.yx)) * signNotZero(p)) : p; +} + +// Get a float3 normal from an oct representation +vec3 oct_to_float32x3 (vec2 e) { + vec3 v = vec3(e.xy, 1.0 - abs(e.x) - abs(e.y)); + if (v.z < 0.0) { + v.xy = (1.0 - abs(v.yx)) * signNotZero(v.xy); + } + + return normalize(v); +} + +vec3 SignedNormalEncodeToOct (vec3 normal) { + + return snorm12x2_to_unorm8x3(float32x3_to_oct(normal)); +} + +vec3 SignedNormalDecodeFromOct (vec3 normal) { + + return oct_to_float32x3(unorm8x3_to_snorm12x2(normal)); +} + +vec3 NormalEncode (vec3 normal) +{ +#if NE_USE_OCTAHEDRAL_REPRESENTATION + return SignedNormalEncodeToOct(normal); +#else + return normal * 0.5 + 0.5; +#endif +} + +vec3 NormalDecode (vec3 normal) +{ +#if NE_USE_OCTAHEDRAL_REPRESENTATION + return SignedNormalDecodeFromOct(normal); +#else + return normal * 2.0 - 1.0; +#endif +} + +#endif // NORMAL_ENCODING_SH diff --git a/3rdparty/bgfx/examples/43-denoise/parameters.sh b/3rdparty/bgfx/examples/43-denoise/parameters.sh new file mode 100644 index 00000000000..11e5a44bcf9 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/parameters.sh @@ -0,0 +1,32 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef PARAMETERS_SH +#define PARAMETERS_SH + +uniform vec4 u_params[13]; + +#define u_jitterCurr (u_params[0].xy) +#define u_jitterPrev (u_params[0].zw) +#define u_feedbackMin (u_params[1].x) +#define u_feedbackMax (u_params[1].y) +#define u_applyMitchellFilter (u_params[2].y) + +#define u_worldToViewPrev0 (u_params[3]) +#define u_worldToViewPrev1 (u_params[4]) +#define u_worldToViewPrev2 (u_params[5]) +#define u_worldToViewPrev3 (u_params[6]) +#define u_viewToProjPrev0 (u_params[7]) +#define u_viewToProjPrev1 (u_params[8]) +#define u_viewToProjPrev2 (u_params[9]) +#define u_viewToProjPrev3 (u_params[10]) + +#define u_frameIdx (u_params[11].x) +#define u_noiseType (u_params[11].y) // 0=none, 1=dither, 2=random +#define u_texCoordStep (u_params[12].x) +#define u_sigmaDepth (u_params[12].y) +#define u_sigmaNormal (u_params[12].z) + +#endif // PARAMETERS_SH diff --git a/3rdparty/bgfx/examples/43-denoise/screenshot.png b/3rdparty/bgfx/examples/43-denoise/screenshot.png Binary files differnew file mode 100644 index 00000000000..1297db2f836 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/screenshot.png diff --git a/3rdparty/bgfx/examples/43-denoise/shared_functions.sh b/3rdparty/bgfx/examples/43-denoise/shared_functions.sh new file mode 100644 index 00000000000..21793ae3678 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/shared_functions.sh @@ -0,0 +1,25 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef SHARED_FUNCTIONS_SH +#define SHARED_FUNCTIONS_SH + +vec2 GetTexCoordPreviousNoJitter(vec2 texCoord, vec2 velocity) +{ + vec2 texCoordPrev = texCoord - velocity; + return texCoordPrev; +} + +vec2 GetTexCoordPrevious(vec2 texCoord, vec2 velocity) +{ + vec2 texCoordPrev = texCoord - velocity; + + vec2 jitterDelta = (u_jitterCurr-u_jitterPrev); + texCoordPrev += jitterDelta * u_viewTexel.xy; + + return texCoordPrev; +} + +#endif // SHARED_FUNCTIONS_SH diff --git a/3rdparty/bgfx/examples/43-denoise/varying.def.sc b/3rdparty/bgfx/examples/43-denoise/varying.def.sc new file mode 100644 index 00000000000..4c827e4af32 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/varying.def.sc @@ -0,0 +1,9 @@ +vec4 a_position : POSITION; +vec2 a_texcoord0 : TEXCOORD0; +vec3 a_normal : NORMAL; + +vec2 v_texcoord0 : TEXCOORD0; +vec4 v_texcoord1 : TEXCOORD1; +vec4 v_texcoord2 : TEXCOORD2; +vec4 v_texcoord3 : TEXCOORD3; +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); diff --git a/3rdparty/bgfx/examples/43-denoise/vs_denoise_gbuffer.sc b/3rdparty/bgfx/examples/43-denoise/vs_denoise_gbuffer.sc new file mode 100644 index 00000000000..bed6c25ca75 --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/vs_denoise_gbuffer.sc @@ -0,0 +1,54 @@ +$input a_position, a_normal, a_texcoord0 +$output v_normal, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +void main() +{ + // Calculate vertex position + vec3 pos = a_position.xyz; + gl_Position = mul(u_modelViewProj, vec4(pos, 1.0)); + + // Calculate previous frame's position + mat4 worldToViewPrev = mat4( + u_worldToViewPrev0, + u_worldToViewPrev1, + u_worldToViewPrev2, + u_worldToViewPrev3 + ); + mat4 viewToProjPrev = mat4( + u_viewToProjPrev0, + u_viewToProjPrev1, + u_viewToProjPrev2, + u_viewToProjPrev3 + ); + + vec3 wsPos = mul(u_model[0], vec4(pos, 1.0)).xyz; + vec3 vspPos = instMul(worldToViewPrev, vec4(wsPos, 1.0)).xyz; + vec4 pspPos = instMul(viewToProjPrev, vec4(vspPos, 1.0)); + + // Calculate normal, unpack + vec3 osNormal = a_normal.xyz * 2.0 - 1.0; + + // Transform normal into world space + vec3 wsNormal = mul(u_model[0], vec4(osNormal, 0.0)).xyz; + + v_normal.xyz = normalize(wsNormal); + v_texcoord0 = a_texcoord0; + + // Store previous frame projection space position in extra texCoord attribute + v_texcoord1 = pspPos; + + // Store world space view vector in extra texCoord attribute + vec3 wsCamPos = mul(u_invView, vec4(0.0, 0.0, 0.0, 1.0)).xyz; + vec3 view = normalize(wsCamPos - wsPos); + + v_texcoord2 = vec4(wsPos, 1.0); + v_texcoord3 = vec4(wsCamPos, 1.0); +} diff --git a/3rdparty/bgfx/examples/43-denoise/vs_denoise_screenquad.sc b/3rdparty/bgfx/examples/43-denoise/vs_denoise_screenquad.sc new file mode 100644 index 00000000000..5b137dc5c3b --- /dev/null +++ b/3rdparty/bgfx/examples/43-denoise/vs_denoise_screenquad.sc @@ -0,0 +1,10 @@ +$input a_position, a_texcoord0 +$output v_texcoord0 + +#include "../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position.xyz, 1.0)); + v_texcoord0 = a_texcoord0; +} diff --git a/3rdparty/bgfx/examples/44-sss/fs_screen_space_shadows.sc b/3rdparty/bgfx/examples/44-sss/fs_screen_space_shadows.sc new file mode 100644 index 00000000000..cf2a898342f --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/fs_screen_space_shadows.sc @@ -0,0 +1,111 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_depth, 0); + +#define DEPTH_EPSILON 1e-4 + +// from assao sample, cs_assao_prepare_depths.sc +vec3 NDCToViewspace( vec2 pos, float viewspaceDepth ) +{ + vec3 ret; + + ret.xy = (u_ndcToViewMul * pos.xy + u_ndcToViewAdd) * viewspaceDepth; + + ret.z = viewspaceDepth; + + return ret; +} + +float ShadertoyNoise (vec2 uv) { + return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + +void main() +{ + vec2 texCoord = v_texcoord0; + float linearDepth = texture2D(s_depth, texCoord).x; + vec3 viewSpacePosition = NDCToViewspace(texCoord, linearDepth); + + vec3 lightStep = normalize(u_lightPosition - viewSpacePosition); + + // screen space radius not usable directly. convert value given in pixels, + // to world units. this is important later when comparing depth in world units + float radius = u_shadowRadius; + if (0.0 < u_useScreenSpaceRadius) + { + // is there a better way to do this calculation? + float radiusTexCoordX = u_shadowRadius * u_viewTexel.x + texCoord.x; + float radiusPositionX = u_ndcToViewMul.x * radiusTexCoordX + u_ndcToViewAdd.x; + radius = abs(radiusPositionX * linearDepth - viewSpacePosition.x); + } + lightStep *= (radius / u_shadowSteps); + + vec3 samplePosition = viewSpacePosition; + float random = ShadertoyNoise(gl_FragCoord.xy + vec2(314.0, 159.0)*u_frameIdx); + float initialOffset = (0.0 < u_useNoiseOffset) ? (0.5+random) : 1.0; + samplePosition += initialOffset * lightStep; + + mat4 viewToProj = mat4( + u_viewToProj0, + u_viewToProj1, + u_viewToProj2, + u_viewToProj3 + ); + + float occluded = 0.0; + float softOccluded = 0.0; + float firstHit = u_shadowSteps; + for (int i = 0; i < int(u_shadowSteps); ++i, samplePosition += lightStep) + { + vec3 psSamplePosition = instMul(viewToProj, vec4(samplePosition, 1.0)).xyw; + psSamplePosition.xy *= (1.0/psSamplePosition.z); + + vec2 sampleCoord = psSamplePosition.xy * 0.5 + 0.5; + sampleCoord.y = 1.0 - sampleCoord.y; + + // using texture2Dlod because dx9 compiler doesn't like + // gradient instructions within this loop + float sampleDepth = texture2DLod(s_depth, sampleCoord, 0).x; + + float delta = (samplePosition.z - sampleDepth); + if (DEPTH_EPSILON < delta && delta < radius) + { + firstHit = min(firstHit, float(i)); + // for hard, soft occlusion + occluded += 1.0; + // for very soft occlusion + softOccluded += saturate(radius - delta); + } + } + + float shadow; + if (1.5 < u_contactShadowsMode) + { + // very soft occlusion, includes distance falloff above + shadow = softOccluded * (1.0 - (firstHit / u_shadowSteps)); + shadow = 1.0 - saturate(shadow); + shadow = shadow*shadow; + } + else if (0.5 < u_contactShadowsMode) + { + // soft occlusion + shadow = occluded * (1.0 - (firstHit / u_shadowSteps)); + shadow = 1.0 - saturate(shadow); + shadow = shadow*shadow; + } + else // == 0 + { + // hard occlusion + shadow = 0.0 < occluded ? 0.0 : 1.0; + } + + gl_FragColor = vec4_splat(shadow); +} diff --git a/3rdparty/bgfx/examples/44-sss/fs_sss_deferred_combine.sc b/3rdparty/bgfx/examples/44-sss/fs_sss_deferred_combine.sc new file mode 100644 index 00000000000..fb724819c1d --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/fs_sss_deferred_combine.sc @@ -0,0 +1,83 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" +#include "normal_encoding.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_normal, 1); +SAMPLER2D(s_depth, 2); +SAMPLER2D(s_shadows, 3); + +// from assao sample, cs_assao_prepare_depths.sc +vec3 NDCToViewspace( vec2 pos, float viewspaceDepth ) +{ + vec3 ret; + + ret.xy = (u_ndcToViewMul * pos.xy + u_ndcToViewAdd) * viewspaceDepth; + + ret.z = viewspaceDepth; + + return ret; +} + +void main() +{ + vec2 texCoord = v_texcoord0; + + vec4 colorId = texture2D(s_color, texCoord); + vec3 color = toLinear(colorId.xyz); + float materialId = colorId.w; + + if (0.0 < materialId) + { + vec4 normalRoughness = texture2D(s_normal, texCoord); + vec3 normal = NormalDecode(normalRoughness.xyz); + float roughness = normalRoughness.w; + + // transform normal into view space + mat4 worldToView = mat4( + u_worldToView0, + u_worldToView1, + u_worldToView2, + u_worldToView3 + ); + vec3 vsNormal = instMul(worldToView, vec4(normal, 0.0)).xyz; + + // read depth and recreate position + float linearDepth = texture2D(s_depth, texCoord).x; + vec3 viewSpacePosition = NDCToViewspace(texCoord, linearDepth); + + float shadow = texture2D(s_shadows, texCoord).x; + + // need to get a valid view vector for any microfacet stuff :( + float gloss = 1.0-roughness; + float specPower = 62.0 * gloss + 2.0; + + vec3 light = (u_lightPosition - viewSpacePosition); + float lightDistSq = dot(light, light) + 1e-5; + light = normalize(light); + float NdotL = saturate(dot(vsNormal, light)); + float diffuse = NdotL * (1.0/lightDistSq); + float specular = 5.0 * pow(NdotL, specPower); + + float lightAmount = mix(diffuse, specular, 0.04) * shadow; + + color = (color * lightAmount); + color = toGamma(color); + + // debug display shadows only + if (0.0 < u_displayShadows) + { + color = vec3_splat(shadow); + } + } + // else, assume color is unlit + + gl_FragColor = vec4(color, 1.0); +} diff --git a/3rdparty/bgfx/examples/44-sss/fs_sss_gbuffer.sc b/3rdparty/bgfx/examples/44-sss/fs_sss_gbuffer.sc new file mode 100644 index 00000000000..54c50929461 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/fs_sss_gbuffer.sc @@ -0,0 +1,62 @@ +$input v_normal, v_texcoord0, v_texcoord1 + +#include "../common/common.sh" +#include "parameters.sh" +#include "normal_encoding.sh" + +SAMPLER2D(s_albedo, 0); +SAMPLER2D(s_normal, 1); + +// http://www.thetenthplanet.de/archives/1180 +// "followup: normal mapping without precomputed tangents" +mat3 cotangentFrame(vec3 N, vec3 p, vec2 uv) +{ + // get edge vectors of the pixel triangle + vec3 dp1 = dFdx(p); + vec3 dp2 = dFdy(p); + vec2 duv1 = dFdx(uv); + vec2 duv2 = dFdy(uv); + + // solve the linear system + vec3 dp2perp = cross(dp2, N); + vec3 dp1perp = cross(N, dp1); + vec3 T = dp2perp * duv1.x + dp1perp * duv2.x; + vec3 B = dp2perp * duv1.y + dp1perp * duv2.y; + + // construct a scale-invariant frame + float invMax = inversesqrt(max(dot(T,T), dot(B,B))); + return mat3(T*invMax, B*invMax, N); +} + +void main() +{ + vec3 albedo = toLinear(texture2D(s_albedo, v_texcoord0).xyz); + + // get vertex normal + vec3 normal = normalize(v_normal); + + // get normal map normal, unpack, and calculate z + vec3 normalMap; + normalMap.xy = texture2D(s_normal, v_texcoord0).xy; + normalMap.xy = normalMap.xy * 2.0 - 1.0; + normalMap.z = sqrt(1.0 - dot(normalMap.xy, normalMap.xy)); + + // swap x and y, because the brick texture looks flipped, don't copy this... + normalMap.xy = normalMap.yx; + + // perturb geometry normal by normal map + vec3 pos = v_texcoord1.xyz; // contains world space pos + mat3 TBN = cotangentFrame(normal, pos, v_texcoord0); + vec3 bumpedNormal = normalize(instMul(TBN, normalMap)); + + // need some proxy for roughness value w/o roughness texture + // assume horizontal (blue) normal map is smooth, and then + // modulate with albedo for some higher frequency detail + float roughness = normalMap.z * mix(0.9, 1.0, albedo.y); + roughness = roughness * 0.6 + 0.2; + + vec3 bufferNormal = NormalEncode(bumpedNormal); + + gl_FragData[0] = vec4(toGamma(albedo), 1.0); + gl_FragData[1] = vec4(bufferNormal, roughness); +} diff --git a/3rdparty/bgfx/examples/44-sss/fs_sss_linear_depth.sc b/3rdparty/bgfx/examples/44-sss/fs_sss_linear_depth.sc new file mode 100644 index 00000000000..08a31ccdc85 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/fs_sss_linear_depth.sc @@ -0,0 +1,35 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_depth, 0); + +// from assao sample, cs_assao_prepare_depths.sc +float ScreenSpaceToViewSpaceDepth( float screenDepth ) +{ + float depthLinearizeMul = u_depthUnpackConsts.x; + float depthLinearizeAdd = u_depthUnpackConsts.y; + + // Optimised version of "-cameraClipNear / (cameraClipFar - projDepth * (cameraClipFar - cameraClipNear)) * cameraClipFar" + + // Set your depthLinearizeMul and depthLinearizeAdd to: + // depthLinearizeMul = ( cameraClipFar * cameraClipNear) / ( cameraClipFar - cameraClipNear ); + // depthLinearizeAdd = cameraClipFar / ( cameraClipFar - cameraClipNear ); + + return depthLinearizeMul / ( depthLinearizeAdd - screenDepth ); +} + + +void main() +{ + vec2 texCoord = v_texcoord0; + float depth = texture2D(s_depth, texCoord).x; + float linearDepth = ScreenSpaceToViewSpaceDepth(depth); + gl_FragColor = vec4_splat(linearDepth); +} diff --git a/3rdparty/bgfx/examples/44-sss/fs_sss_unlit.sc b/3rdparty/bgfx/examples/44-sss/fs_sss_unlit.sc new file mode 100644 index 00000000000..2889733da89 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/fs_sss_unlit.sc @@ -0,0 +1,21 @@ +$input v_normal, v_texcoord0, v_texcoord1 + +#include "../common/common.sh" +#include "parameters.sh" +#include "normal_encoding.sh" + +void main() +{ + vec3 albedo = vec3_splat(1.0); + + // get vertex normal + vec3 normal = normalize(v_normal); + float roughness = 1.0; + + vec3 bufferNormal = NormalEncode(normal); + + // write data to alpha channel of color buffer to signify different handling + // while lighting/shading these pixels in the gbuffer combine pass + gl_FragData[0] = vec4(toGamma(albedo), 0.0); + gl_FragData[1] = vec4(bufferNormal, roughness); +} diff --git a/3rdparty/bgfx/examples/44-sss/makefile b/3rdparty/bgfx/examples/44-sss/makefile new file mode 100644 index 00000000000..f9e23de2e08 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2019 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/44-sss/normal_encoding.sh b/3rdparty/bgfx/examples/44-sss/normal_encoding.sh new file mode 100644 index 00000000000..c83b95753da --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/normal_encoding.sh @@ -0,0 +1,92 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef NORMAL_ENCODING_SH +#define NORMAL_ENCODING_SH + +#define NE_USE_OCTAHEDRAL_REPRESENTATION 1 + +// From "A Survey of Efficient Representations for Independent Unit Vectors" +// http://jcgt.org/published/0003/02/01/paper.pdf + +// Convert an oct24 (2x12bit normal) to an rgb8 value for storing in texture +vec3 snorm12x2_to_unorm8x3 (vec2 f) { + + f = clamp(f, -1.0, 1.0);//min(max(f, vec2(-1.0)), vec2(1.0)); + vec2 u = floor(f * 2047.0 + 2047.5); + float t = floor(u.y / 256.0); + + // "This code assumes that rounding will occur during storage." + // -- Not certain but this appears to mainly apply to the x channel. + // From paper: x = u.x / 16.0 - 0.5 + // Instead round by +0.5 and floor. + return vec3(floor(u.x / 16.0), fract(u.x / 16.0) * 256.0 + t, u.y - t * 256.0) / 255.0; +} + +// Unpack oct24 (2x12bit normal) from an rgb8 value stored in texture (normal spec) +vec2 unorm8x3_to_snorm12x2 (vec3 u) { + + u *= 255.0; + u.y *= (1.0 / 16.0); + vec2 s = vec2(u.x * 16.0 + floor(u.y), fract(u.y) * (16.0 * 256.0) + u.z); + + s = s * (1.0 / 2047.0) - 1.0; + return min(max(s, -1.0), 1.0); +} + +// Built in sign test could return 0, don't want that +vec2 signNotZero (vec2 v) { + return vec2((v.x >= 0.0) ? 1.0 : -1.0, (v.y >= 0.0) ? 1.0 : -1.0); +} + +// Assume normalized input. Output is (-1, 1) for each component +vec2 float32x3_to_oct(vec3 v) { + + // Project the sphere onto the octahedron, and then onto the xy plane + vec2 p = v.xy * (1.0 / (abs(v.x) + abs(v.y) + abs(v.z))); + + // Reflect the folds of the lower hemisphere over the diagonals + return (v.z <= 0.0) ? ((1.0 - abs(p.yx)) * signNotZero(p)) : p; +} + +// Get a float3 normal from an oct representation +vec3 oct_to_float32x3 (vec2 e) { + vec3 v = vec3(e.xy, 1.0 - abs(e.x) - abs(e.y)); + if (v.z < 0.0) { + v.xy = (1.0 - abs(v.yx)) * signNotZero(v.xy); + } + + return normalize(v); +} + +vec3 SignedNormalEncodeToOct (vec3 normal) { + + return snorm12x2_to_unorm8x3(float32x3_to_oct(normal)); +} + +vec3 SignedNormalDecodeFromOct (vec3 normal) { + + return oct_to_float32x3(unorm8x3_to_snorm12x2(normal)); +} + +vec3 NormalEncode (vec3 normal) +{ +#if NE_USE_OCTAHEDRAL_REPRESENTATION + return SignedNormalEncodeToOct(normal); +#else + return normal * 0.5 + 0.5; +#endif +} + +vec3 NormalDecode (vec3 normal) +{ +#if NE_USE_OCTAHEDRAL_REPRESENTATION + return SignedNormalDecodeFromOct(normal); +#else + return normal * 2.0 - 1.0; +#endif +} + +#endif // NORMAL_ENCODING_SH diff --git a/3rdparty/bgfx/examples/44-sss/parameters.sh b/3rdparty/bgfx/examples/44-sss/parameters.sh new file mode 100644 index 00000000000..47540490217 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/parameters.sh @@ -0,0 +1,33 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef PARAMETERS_SH +#define PARAMETERS_SH + +uniform vec4 u_params[12]; + +#define u_frameIdx (u_params[0].x) +#define u_shadowRadius (u_params[0].y) +#define u_shadowSteps (u_params[0].z) +#define u_useNoiseOffset (u_params[0].w) + +#define u_depthUnpackConsts (u_params[1].xy) +#define u_contactShadowsMode (u_params[1].z) +#define u_useScreenSpaceRadius (u_params[1].w) +#define u_ndcToViewMul (u_params[2].xy) +#define u_ndcToViewAdd (u_params[2].zw) +#define u_lightPosition (u_params[3].xyz) +#define u_displayShadows (u_params[3].w) + +#define u_worldToView0 (u_params[4]) +#define u_worldToView1 (u_params[5]) +#define u_worldToView2 (u_params[6]) +#define u_worldToView3 (u_params[7]) +#define u_viewToProj0 (u_params[8]) +#define u_viewToProj1 (u_params[9]) +#define u_viewToProj2 (u_params[10]) +#define u_viewToProj3 (u_params[11]) + +#endif // PARAMETERS_SH diff --git a/3rdparty/bgfx/examples/44-sss/screen_space_shadows.cpp b/3rdparty/bgfx/examples/44-sss/screen_space_shadows.cpp new file mode 100644 index 00000000000..1bf85b0e973 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/screen_space_shadows.cpp @@ -0,0 +1,849 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +/* +* Implement screen space shadows as bgfx example. Goal is to explore various +* options and parameters. +* +* radius +* ====== +* Use radius/shadow distance defined in screen space pixels or world units. +* +* In world uints, the screen distance will shrink as objects get farther away. +* This can provide more natural looking shadows and fade out the effect at a +* distance, leaving screen space shadows as an added detail effect near the +* camera. +* +* Screen space units mean that objects will cast the same length of shadow +* regardless of how far they are away from the camera. Pull back the camera +* and objects' shadows will appear to grow. On the other hand, this can be +* desired because it will allow objects at the horizon like hills and trees to +* cast a shadow. Depending on your scene, such far objects may be outside of +* the area affected by regular shadow maps. Even with multiple cascades, you +* may not be able to afford shadow maps across the entire scene. +* +* This sample does not put effort into avoiding the initial pixel or avoiding +* resampling the same value if the step size is relatively smaller than the +* sampled distance in screen space. May want to set a minimum distance so each +* sample covers a unique value or take care to select a neighboring pixel for +* the first sample. +* +* soft contact shadows +* ==================== +* If hard screen space shadows are added to a scene that already has soft +* shadows via shadow maps, the hard edge can look out of place. Additionally, +* it is common for screen space shadows to not quite line up with other +* shadows. This is because the depth buffer does not specify thickness, +* leaving some pixels incorrectly occluded. For example, you would not want +* some thin feature like a pipe to cast a shadow as if you were seeing the +* side of a metal wall. +* +* These soft contact shadows are an attempt to minimize the problems described +* above. By adding a smoother falloff, they may blend into the scene better. +* Inspired by screen space ambient occlusion, this sample takes into account +* distance from shadowed pixel to its occluders. +* +* - hard If there's any occluder found, mark the source pixel as shadowed. +* +* - soft Modulate shadow by distance to the first occluder. Assuming a +* nearby pixel is closer and more likely to represent an accurate +* shadow, it is darker. If the first pixel to be an occluder is far +* away, it should likely cast a softer shadow. +* +* - very In addition to the same modulation used by soft mode, also +* soft reduce the occlusion contribution from pixels that are farther +* away. This sample compares the depth difference to the shadow +* radius, a 1D distance, instead of comparing the actually +* distance in 3D space. +*/ + + +#include <common.h> +#include <camera.h> +#include <bgfx_utils.h> +#include <imgui/imgui.h> +#include <bx/rng.h> +#include <bx/os.h> + + +namespace { + +// Gbuffer has multiple render targets +#define GBUFFER_RT_COLOR 0 +#define GBUFFER_RT_NORMAL 1 +#define GBUFFER_RT_DEPTH 2 +#define GBUFFER_RENDER_TARGETS 3 + +#define MODEL_COUNT 100 + +static const char * s_meshPaths[] = +{ + "meshes/unit_sphere.bin", + "meshes/column.bin", + "meshes/tree.bin", + "meshes/hollowcube.bin", + "meshes/bunny.bin" +}; + +static const float s_meshScale[] = +{ + 0.25f, + 0.05f, + 0.15f, + 0.25f, + 0.25f +}; + +// Vertex decl for our screen space quad (used in deferred rendering) +struct PosTexCoord0Vertex +{ + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + } + + static bgfx::VertexLayout ms_layout; +}; + +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; + +struct Uniforms +{ + enum { NumVec4 = 12 }; + + void init() { + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, NumVec4); + }; + + void submit() const { + bgfx::setUniform(u_params, m_params, NumVec4); + } + + void destroy() { + bgfx::destroy(u_params); + } + + union + { + struct + { + /* 0 */ struct { float m_frameIdx; float m_shadowRadius; float m_shadowSteps; float m_useNoiseOffset; }; + /* 1 */ struct { float m_depthUnpackConsts[2]; float m_contactShadowsMode; float m_useScreenSpaceRadius; }; + /* 2 */ struct { float m_ndcToViewMul[2]; float m_ndcToViewAdd[2]; }; + /* 3 */ struct { float m_lightPosition[3]; float m_displayShadows; }; + /* 4-7 */ struct { float m_worldToView[16]; }; // built-in u_view will be transform for quad during screen passes + /* 8-11 */ struct { float m_viewToProj[16]; }; // built-in u_proj will be transform for quad during screen passes + }; + + float m_params[NumVec4 * 4]; + }; + + bgfx::UniformHandle u_params; +}; + +struct RenderTarget +{ + void init(uint32_t _width, uint32_t _height, bgfx::TextureFormat::Enum _format, uint64_t _flags) + { + m_texture = bgfx::createTexture2D(uint16_t(_width), uint16_t(_height), false, 1, _format, _flags); + const bool destroyTextures = true; + m_buffer = bgfx::createFrameBuffer(1, &m_texture, destroyTextures); + } + + void destroy() + { + // also responsible for destroying texture + bgfx::destroy(m_buffer); + } + + bgfx::TextureHandle m_texture; + bgfx::FrameBufferHandle m_buffer; +}; + +void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) +{ + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout)) + { + bgfx::TransientVertexBuffer vb; + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); + PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; + + const float minx = -_width; + const float maxx = _width; + const float miny = 0.0f; + const float maxy = _height * 2.0f; + + const float texelHalfW = _texelHalf / _textureWidth; + const float texelHalfH = _texelHalf / _textureHeight; + const float minu = -1.0f + texelHalfW; + const float maxu = 1.0f + texelHalfW; + + const float zz = 0.0f; + + float minv = texelHalfH; + float maxv = 2.0f + texelHalfH; + + if (_originBottomLeft) + { + float temp = minv; + minv = maxv; + maxv = temp; + + minv -= 1.0f; + maxv -= 1.0f; + } + + vertex[0].m_x = minx; + vertex[0].m_y = miny; + vertex[0].m_z = zz; + vertex[0].m_u = minu; + vertex[0].m_v = minv; + + vertex[1].m_x = maxx; + vertex[1].m_y = miny; + vertex[1].m_z = zz; + vertex[1].m_u = maxu; + vertex[1].m_v = minv; + + vertex[2].m_x = maxx; + vertex[2].m_y = maxy; + vertex[2].m_z = zz; + vertex[2].m_u = maxu; + vertex[2].m_v = maxv; + + bgfx::setVertexBuffer(0, &vb); + } +} + +void vec2Set(float* _v, float _x, float _y) +{ + _v[0] = _x; + _v[1] = _y; +} + +void mat4Set(float * _m, const float * _src) +{ + const uint32_t MAT4_FLOATS = 16; + for (uint32_t ii = 0; ii < MAT4_FLOATS; ++ii) { + _m[ii] = _src[ii]; + } +} + +class ExampleScreenSpaceShadows : public entry::AppI +{ +public: + ExampleScreenSpaceShadows(const char* _name, const char* _description) + : entry::AppI(_name, _description) + , m_currFrame(UINT32_MAX) + , m_texelHalf(0.0f) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Create uniforms + m_uniforms.init(); + + // Create texture sampler uniforms (used when we bind textures) + s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler); // Model's source albedo + s_color = bgfx::createUniform("s_color", bgfx::UniformType::Sampler); // Color (albedo) gbuffer, default color input + s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Sampler); // Normal gbuffer, Model's source normal + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler); // Depth gbuffer + s_shadows = bgfx::createUniform("s_shadows", bgfx::UniformType::Sampler); + + // Create program from shaders. + m_gbufferProgram = loadProgram("vs_sss_gbuffer", "fs_sss_gbuffer"); // Fill gbuffer + m_sphereProgram = loadProgram("vs_sss_gbuffer", "fs_sss_unlit"); + m_linearDepthProgram = loadProgram("vs_sss_screenquad", "fs_sss_linear_depth"); + m_shadowsProgram = loadProgram("vs_sss_screenquad", "fs_screen_space_shadows"); + m_combineProgram = loadProgram("vs_sss_screenquad", "fs_sss_deferred_combine"); // Compute lighting from gbuffer + + // Load some meshes + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + m_meshes[ii] = meshLoad(s_meshPaths[ii]); + } + + // sphere is first mesh + m_lightModel.mesh = 0; + + // Randomly create some models + bx::RngMwc mwc; + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + Model& model = m_models[ii]; + + model.mesh = mwc.gen() % BX_COUNTOF(s_meshPaths); + model.position[0] = (((mwc.gen() % 256)) - 128.0f) / 20.0f; + model.position[1] = 0; + model.position[2] = (((mwc.gen() % 256)) - 128.0f) / 20.0f; + } + + // Load ground, just use the cube + m_ground = meshLoad("meshes/cube.bin"); + + m_groundTexture = loadTexture("textures/fieldstone-rgba.dds"); + m_normalTexture = loadTexture("textures/fieldstone-n.dds"); + + m_recreateFrameBuffers = false; + createFramebuffers(); + + // Vertex decl + PosTexCoord0Vertex::init(); + + // Init camera + cameraCreate(); + cameraSetPosition({ 0.0f, 1.5f, -4.0f }); + cameraSetVerticalAngle(-0.3f); + m_fovY = 60.0f; + + cameraGetViewMtx(m_view); + bx::mtxProj(m_proj, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, bgfx::getCaps()->homogeneousDepth); + + // Track whether previous results are valid + m_havePrevious = false; + + // Get renderer capabilities info. + const bgfx::RendererType::Enum renderer = bgfx::getRendererType(); + m_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f; + + imguiCreate(); + } + + int32_t shutdown() override + { + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + meshUnload(m_meshes[ii]); + } + meshUnload(m_ground); + + bgfx::destroy(m_normalTexture); + bgfx::destroy(m_groundTexture); + + bgfx::destroy(m_gbufferProgram); + bgfx::destroy(m_sphereProgram); + bgfx::destroy(m_linearDepthProgram); + bgfx::destroy(m_shadowsProgram); + bgfx::destroy(m_combineProgram); + + m_uniforms.destroy(); + + bgfx::destroy(s_albedo); + bgfx::destroy(s_color); + bgfx::destroy(s_normal); + bgfx::destroy(s_depth); + bgfx::destroy(s_shadows); + + destroyFramebuffers(); + + cameraDestroy(); + + imguiDestroy(); + + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState)) + { + // skip processing when minimized, otherwise crashing + if (0 == m_width + || 0 == m_height) + { + return true; + } + + // Update frame timer + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const float deltaTime = float(frameTime / freq); + const bgfx::Caps* caps = bgfx::getCaps(); + + if (m_size[0] != (int32_t)m_width + || m_size[1] != (int32_t)m_height + || m_recreateFrameBuffers) + { + destroyFramebuffers(); + createFramebuffers(); + m_recreateFrameBuffers = false; + } + + // rotate light + const float rotationSpeed = m_moveLight ? 0.75f : 0.0f; + m_lightRotation += deltaTime * rotationSpeed; + if (bx::kPi2 < m_lightRotation) + { + m_lightRotation -= bx::kPi2; + } + m_lightModel.position[0] = bx::cos(m_lightRotation) * 3.0f; + m_lightModel.position[1] = 1.5f; + m_lightModel.position[2] = bx::sin(m_lightRotation) * 3.0f; + + // Update camera + cameraUpdate(deltaTime*0.15f, m_mouseState, ImGui::MouseOverArea() ); + + // Set up matrices for gbuffer + cameraGetViewMtx(m_view); + + updateUniforms(); + + bx::mtxProj(m_proj, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, caps->homogeneousDepth); + bx::mtxProj(m_proj2, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, false); + + bgfx::ViewId view = 0; + + // Draw everything into gbuffer + { + bgfx::setViewName(view, "gbuffer"); + bgfx::setViewClear(view + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0 + , 1.0f + , 0 + ); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_size[0]), uint16_t(m_size[1])); + bgfx::setViewTransform(view, m_view, m_proj); + // Make sure when we draw it goes into gbuffer and not backbuffer + bgfx::setViewFrameBuffer(view, m_gbuffer); + + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + ); + + drawAllModels(view, m_gbufferProgram, m_uniforms); + + // draw sphere to visualize light + { + const float scale = s_meshScale[m_lightModel.mesh]; + float mtx[16]; + bx::mtxSRT(mtx + , scale + , scale + , scale + , 0.0f + , 0.0f + , 0.0f + , m_lightModel.position[0] + , m_lightModel.position[1] + , m_lightModel.position[2] + ); + + m_uniforms.submit(); + meshSubmit(m_meshes[m_lightModel.mesh], view, m_sphereProgram, mtx); + } + + ++view; + } + + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, caps->homogeneousDepth); + { + // clear out transform stack + float identity[16]; + bx::mtxIdentity(identity); + bgfx::setTransform(identity); + } + + // Convert depth to linear depth for shadow depth compare + { + bgfx::setViewName(view, "linear depth"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_linearDepth.m_buffer); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_depth, m_gbufferTex[GBUFFER_RT_DEPTH]); + m_uniforms.submit(); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_linearDepthProgram); + ++view; + } + + // Do screen space shadows + { + bgfx::setViewName(view, "screen space shadows"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_shadows.m_buffer); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_depth, m_linearDepth.m_texture); + m_uniforms.submit(); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_shadowsProgram); + ++view; + } + + // Shade gbuffer + { + bgfx::setViewName(view, "combine"); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, m_gbufferTex[GBUFFER_RT_COLOR]); + bgfx::setTexture(1, s_normal, m_gbufferTex[GBUFFER_RT_NORMAL]); + bgfx::setTexture(2, s_depth, m_linearDepth.m_texture); + bgfx::setTexture(3, s_shadows, m_shadows.m_texture); + m_uniforms.submit(); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_combineProgram); + ++view; + } + + // Draw UI + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 4.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 4.0f, m_height / 2.3f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.5f); + + { + ImGui::Text("shadow controls:"); + ImGui::Checkbox("screen space radius", &m_useScreenSpaceRadius); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("define radius in pixels or world units"); + + if (m_useScreenSpaceRadius) + { + ImGui::SliderFloat("radius in pixels", &m_shadowRadiusPixels, 1.0f, 100.0f); + } + else + { + ImGui::SliderFloat("radius in world units", &m_shadowRadius, 1e-3f, 1.0f); + } + + ImGui::SliderInt("shadow steps", &m_shadowSteps, 1, 64); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("number of steps/samples to take between shaded pixel and radius"); + + ImGui::Combo("contact shadows mode", &m_contactShadowsMode, "hard\0soft\0very soft\0\0"); + if (ImGui::IsItemHovered()) + { + ImGui::BeginTooltip(); + ImGui::Text("hard"); + ImGui::BulletText("any occluder, fully shadowed"); + ImGui::Text("soft"); + ImGui::BulletText("modulate shadow by distance to first occluder"); + ImGui::Text("very soft"); + ImGui::BulletText("also reduce each shadow contribution by distance"); + ImGui::EndTooltip(); + } + + ImGui::Checkbox("add random offset to initial position", &m_useNoiseOffset); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("hide banding with noise"); + + ImGui::Checkbox("use different offset each frame", &m_dynamicNoise); + ImGui::Separator(); + + ImGui::Text("scene controls:"); + ImGui::Checkbox("display shadows only", &m_displayShadows); + ImGui::Checkbox("move light", &m_moveLight); + } + + ImGui::End(); + + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_currFrame = bgfx::frame(); + + return true; + } + + return false; + } + + void drawAllModels(bgfx::ViewId _pass, bgfx::ProgramHandle _program, const Uniforms & _uniforms) + { + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + const Model& model = m_models[ii]; + + // Set up transform matrix for each model + const float scale = s_meshScale[model.mesh]; + float mtx[16]; + bx::mtxSRT(mtx + , scale + , scale + , scale + , 0.0f + , 0.0f + , 0.0f + , model.position[0] + , model.position[1] + , model.position[2] + ); + + // Submit mesh to gbuffer + bgfx::setTexture(0, s_albedo, m_groundTexture); + bgfx::setTexture(1, s_normal, m_normalTexture); + _uniforms.submit(); + + meshSubmit(m_meshes[model.mesh], _pass, _program, mtx); + } + + // Draw ground + float mtxScale[16]; + const float scale = 10.0f; + bx::mtxScale(mtxScale, scale, scale, scale); + + float mtxTranslate[16]; + bx::mtxTranslate(mtxTranslate + , 0.0f + , -10.0f + , 0.0f + ); + + float mtx[16]; + bx::mtxMul(mtx, mtxScale, mtxTranslate); + bgfx::setTexture(0, s_albedo, m_groundTexture); + bgfx::setTexture(1, s_normal, m_normalTexture); + _uniforms.submit(); + + meshSubmit(m_ground, _pass, _program, mtx); + } + + void createFramebuffers() + { + m_size[0] = m_width; + m_size[1] = m_height; + + const uint64_t pointSampleFlags = 0 + | BGFX_TEXTURE_RT + | BGFX_SAMPLER_U_CLAMP + | BGFX_SAMPLER_V_CLAMP + | BGFX_SAMPLER_MIN_POINT + | BGFX_SAMPLER_MAG_POINT + | BGFX_SAMPLER_MIP_POINT + ; + + m_gbufferTex[GBUFFER_RT_COLOR] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::BGRA8, pointSampleFlags); + m_gbufferTex[GBUFFER_RT_NORMAL] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::BGRA8, pointSampleFlags); + m_gbufferTex[GBUFFER_RT_DEPTH] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::D32F, pointSampleFlags); + m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_gbufferTex), m_gbufferTex, true); + + m_linearDepth.init(m_size[0], m_size[1], bgfx::TextureFormat::R16F, pointSampleFlags); + m_shadows.init(m_size[0], m_size[1], bgfx::TextureFormat::R16F, pointSampleFlags); + } + + // all buffers set to destroy their textures + void destroyFramebuffers() + { + bgfx::destroy(m_gbuffer); + + m_linearDepth.destroy(); + m_shadows.destroy(); + } + + void updateUniforms() + { + m_uniforms.m_displayShadows = m_displayShadows ? 1.0f : 0.0f; + m_uniforms.m_frameIdx = m_dynamicNoise + ? float(m_currFrame % 8) + : 0.0f; + m_uniforms.m_shadowRadius = m_useScreenSpaceRadius ? m_shadowRadiusPixels : m_shadowRadius; + m_uniforms.m_shadowSteps = float(m_shadowSteps); + m_uniforms.m_useNoiseOffset = m_useNoiseOffset ? 1.0f : 0.0f; + m_uniforms.m_contactShadowsMode = float(m_contactShadowsMode); + m_uniforms.m_useScreenSpaceRadius = m_useScreenSpaceRadius ? 1.0f : 0.0f; + + mat4Set(m_uniforms.m_worldToView, m_view); + mat4Set(m_uniforms.m_viewToProj, m_proj); + + // from assao sample, cs_assao_prepare_depths.sc + { + // float depthLinearizeMul = ( clipFar * clipNear ) / ( clipFar - clipNear ); + // float depthLinearizeAdd = clipFar / ( clipFar - clipNear ); + // correct the handedness issue. need to make sure this below is correct, but I think it is. + + float depthLinearizeMul = -m_proj2[3*4+2]; + float depthLinearizeAdd = m_proj2[2*4+2]; + + if (depthLinearizeMul * depthLinearizeAdd < 0) + { + depthLinearizeAdd = -depthLinearizeAdd; + } + + vec2Set(m_uniforms.m_depthUnpackConsts, depthLinearizeMul, depthLinearizeAdd); + + float tanHalfFOVY = 1.0f / m_proj2[1*4+1]; // = tanf( drawContext.Camera.GetYFOV( ) * 0.5f ); + float tanHalfFOVX = 1.0F / m_proj2[0]; // = tanHalfFOVY * drawContext.Camera.GetAspect( ); + + if (bgfx::getRendererType() == bgfx::RendererType::OpenGL) + { + vec2Set(m_uniforms.m_ndcToViewMul, tanHalfFOVX * 2.0f, tanHalfFOVY * 2.0f); + vec2Set(m_uniforms.m_ndcToViewAdd, tanHalfFOVX * -1.0f, tanHalfFOVY * -1.0f); + } + else + { + vec2Set(m_uniforms.m_ndcToViewMul, tanHalfFOVX * 2.0f, tanHalfFOVY * -2.0f); + vec2Set(m_uniforms.m_ndcToViewAdd, tanHalfFOVX * -1.0f, tanHalfFOVY * 1.0f); + } + } + + { + float lightPosition[4]; + bx::memCopy(lightPosition, m_lightModel.position, 3*sizeof(float)); + lightPosition[3] = 1.0f; + float viewSpaceLightPosition[4]; + bx::vec4MulMtx(viewSpaceLightPosition, lightPosition, m_view); + bx::memCopy(m_uniforms.m_lightPosition, viewSpaceLightPosition, 3*sizeof(float)); + } + } + + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + entry::MouseState m_mouseState; + + // Resource handles + bgfx::ProgramHandle m_gbufferProgram; + bgfx::ProgramHandle m_sphereProgram; + bgfx::ProgramHandle m_linearDepthProgram; + bgfx::ProgramHandle m_shadowsProgram; + bgfx::ProgramHandle m_combineProgram; + + // Shader uniforms + Uniforms m_uniforms; + + // Uniforms to identify texture samplers + bgfx::UniformHandle s_albedo; + bgfx::UniformHandle s_color; + bgfx::UniformHandle s_normal; + bgfx::UniformHandle s_depth; + bgfx::UniformHandle s_shadows; + + bgfx::FrameBufferHandle m_gbuffer; + bgfx::TextureHandle m_gbufferTex[GBUFFER_RENDER_TARGETS]; + + RenderTarget m_linearDepth; + RenderTarget m_shadows; + + struct Model + { + uint32_t mesh; // Index of mesh in m_meshes + float position[3]; + }; + + Model m_lightModel; + Model m_models[MODEL_COUNT]; + Mesh* m_meshes[BX_COUNTOF(s_meshPaths)]; + Mesh* m_ground; + bgfx::TextureHandle m_groundTexture; + bgfx::TextureHandle m_normalTexture; + + uint32_t m_currFrame; + float m_lightRotation = 0.0f; + float m_texelHalf = 0.0f; + float m_fovY = 60.0f; + bool m_recreateFrameBuffers = false; + bool m_havePrevious = false; + + float m_view[16]; + float m_proj[16]; + float m_proj2[16]; + int32_t m_size[2]; + + // UI parameters + bool m_displayShadows = false; + bool m_useNoiseOffset = true; + bool m_dynamicNoise = true; + float m_shadowRadius = 0.25f; + float m_shadowRadiusPixels = 25.0f; + int32_t m_shadowSteps = 8; + bool m_moveLight = true; + int32_t m_contactShadowsMode = 0; + bool m_useScreenSpaceRadius = false; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExampleScreenSpaceShadows + , "44-sss" + , "Screen Space Shadows." + ); diff --git a/3rdparty/bgfx/examples/44-sss/screenshot.png b/3rdparty/bgfx/examples/44-sss/screenshot.png Binary files differnew file mode 100644 index 00000000000..7497a5c42d9 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/screenshot.png diff --git a/3rdparty/bgfx/examples/44-sss/varying.def.sc b/3rdparty/bgfx/examples/44-sss/varying.def.sc new file mode 100644 index 00000000000..fe3825ea5b2 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/varying.def.sc @@ -0,0 +1,7 @@ +vec4 a_position : POSITION; +vec2 a_texcoord0 : TEXCOORD0; +vec3 a_normal : NORMAL; + +vec2 v_texcoord0 : TEXCOORD0; +vec4 v_texcoord1 : TEXCOORD1; +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); diff --git a/3rdparty/bgfx/examples/44-sss/vs_sss_gbuffer.sc b/3rdparty/bgfx/examples/44-sss/vs_sss_gbuffer.sc new file mode 100644 index 00000000000..f42d1b78c12 --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/vs_sss_gbuffer.sc @@ -0,0 +1,30 @@ +$input a_position, a_normal, a_texcoord0 +$output v_normal, v_texcoord0, v_texcoord1 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +void main() +{ + // Calculate vertex position + vec3 pos = a_position.xyz; + gl_Position = mul(u_modelViewProj, vec4(pos, 1.0)); + + // Calculate normal, unpack + vec3 osNormal = a_normal.xyz * 2.0 - 1.0; + + // Transform normal into world space + vec3 wsNormal = mul(u_model[0], vec4(osNormal, 0.0)).xyz; + v_normal.xyz = normalize(wsNormal); + + v_texcoord0 = a_texcoord0; + + // Pass through world space position + vec3 wsPos = mul(u_model[0], vec4(pos, 1.0)).xyz; + v_texcoord1 = vec4(wsPos, 1.0); +} diff --git a/3rdparty/bgfx/examples/44-sss/vs_sss_screenquad.sc b/3rdparty/bgfx/examples/44-sss/vs_sss_screenquad.sc new file mode 100644 index 00000000000..5b137dc5c3b --- /dev/null +++ b/3rdparty/bgfx/examples/44-sss/vs_sss_screenquad.sc @@ -0,0 +1,10 @@ +$input a_position, a_texcoord0 +$output v_texcoord0 + +#include "../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position.xyz, 1.0)); + v_texcoord0 = a_texcoord0; +} diff --git a/3rdparty/bgfx/examples/45-bokeh/bokeh.cpp b/3rdparty/bgfx/examples/45-bokeh/bokeh.cpp new file mode 100644 index 00000000000..965db747586 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/bokeh.cpp @@ -0,0 +1,1052 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +/* +* Implement bokeh depth of field as described in the blog post here: +* https://web.archive.org/web/20201215123940/https://blog.tuxedolabs.com/2018/05/04/bokeh-depth-of-field-in-single-pass.html +* +* Additionally, implement the optimizations discussed in the closing paragraph. +* Apply the effect in multiple passes. Calculate the circle of confusion and store +* in the alpha channel while downsampling the image. Then compute depth of field +* at this lower res, storing sample size in alpha. Then composite the blurred image, +* based on the sample size. Compositing the lower res like this can lead to blocky +* edges where there's a depth discontinuity and the blur is just enough. May be +* an area to improve on. +* +* Provide an alternate means of determining radius of current sample when blurring. +* I find the blog post's sample pattern to be difficult to directly reason about. It +* is not obvious, given the parameters, how many samples will be taken. And it can +* be very many samples. Though the results are good. The 'sqrt' pattern chosen here +* looks alright and allows for the number of samples to be set directly. If you are +* going to use this in a project, may be worth exploring additional sample patterns. +* And certainly update the shader to remove the pattern choice from inside the +* sample loop. +*/ + + +#include <common.h> +#include <camera.h> +#include <bgfx_utils.h> +#include <imgui/imgui.h> +#include <bx/rng.h> +#include <bx/os.h> + + +namespace { + +#define FRAMEBUFFER_RT_COLOR 0 +#define FRAMEBUFFER_RT_DEPTH 1 +#define FRAMEBUFFER_RENDER_TARGETS 2 + +enum Meshes +{ + MeshCube = 0, + MeshHollowCube +}; + +static const char * s_meshPaths[] = +{ + "meshes/cube.bin", + "meshes/hollowcube.bin" +}; + +static const float s_meshScale[] = +{ + 0.45f, + 0.30f +}; + +// Vertex decl for our screen space quad (used in deferred rendering) +struct PosTexCoord0Vertex +{ + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + } + + static bgfx::VertexLayout ms_layout; +}; + +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; + +struct PassUniforms +{ + enum { NumVec4 = 4 }; + + void init() { + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, NumVec4); + }; + + void submit() const { + bgfx::setUniform(u_params, m_params, NumVec4); + } + + void destroy() { + bgfx::destroy(u_params); + } + + union + { + struct + { + /* 0 */ struct { float m_depthUnpackConsts[2]; float m_frameIdx; float m_lobeRotation; }; + /* 1 */ struct { float m_ndcToViewMul[2]; float m_ndcToViewAdd[2]; }; + /* 2 */ struct { float m_blurSteps; float m_lobeCount; float m_lobeRadiusMin; float m_lobeRadiusDelta2x; }; + /* 3 */ struct { float m_maxBlurSize; float m_focusPoint; float m_focusScale; float m_radiusScale; }; + }; + + float m_params[NumVec4 * 4]; + }; + + bgfx::UniformHandle u_params; +}; + +struct ModelUniforms +{ + enum { NumVec4 = 2 }; + + void init() { + u_params = bgfx::createUniform("u_modelParams", bgfx::UniformType::Vec4, NumVec4); + }; + + void submit() const { + bgfx::setUniform(u_params, m_params, NumVec4); + }; + + void destroy() { + bgfx::destroy(u_params); + } + + union + { + struct + { + /* 0 */ struct { float m_color[3]; float m_unused0; }; + /* 1 */ struct { float m_lightPosition[3]; float m_unused1; }; + }; + + float m_params[NumVec4 * 4]; + }; + + bgfx::UniformHandle u_params; +}; + +struct RenderTarget +{ + void init(uint32_t _width, uint32_t _height, bgfx::TextureFormat::Enum _format, uint64_t _flags) + { + m_texture = bgfx::createTexture2D(uint16_t(_width), uint16_t(_height), false, 1, _format, _flags); + const bool destroyTextures = true; + m_buffer = bgfx::createFrameBuffer(1, &m_texture, destroyTextures); + } + + void destroy() + { + // also responsible for destroying texture + bgfx::destroy(m_buffer); + } + + bgfx::TextureHandle m_texture; + bgfx::FrameBufferHandle m_buffer; +}; + +void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) +{ + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout)) + { + bgfx::TransientVertexBuffer vb; + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); + PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; + + const float minx = -_width; + const float maxx = _width; + const float miny = 0.0f; + const float maxy = _height * 2.0f; + + const float texelHalfW = _texelHalf / _textureWidth; + const float texelHalfH = _texelHalf / _textureHeight; + const float minu = -1.0f + texelHalfW; + const float maxu = 1.0f + texelHalfW; + + const float zz = 0.0f; + + float minv = texelHalfH; + float maxv = 2.0f + texelHalfH; + + if (_originBottomLeft) + { + float temp = minv; + minv = maxv; + maxv = temp; + + minv -= 1.0f; + maxv -= 1.0f; + } + + vertex[0].m_x = minx; + vertex[0].m_y = miny; + vertex[0].m_z = zz; + vertex[0].m_u = minu; + vertex[0].m_v = minv; + + vertex[1].m_x = maxx; + vertex[1].m_y = miny; + vertex[1].m_z = zz; + vertex[1].m_u = maxu; + vertex[1].m_v = minv; + + vertex[2].m_x = maxx; + vertex[2].m_y = maxy; + vertex[2].m_z = zz; + vertex[2].m_u = maxu; + vertex[2].m_v = maxv; + + bgfx::setVertexBuffer(0, &vb); + } +} + +void vec2Set(float* _v, float _x, float _y) +{ + _v[0] = _x; + _v[1] = _y; +} + +class ExampleBokeh : public entry::AppI +{ +public: + ExampleBokeh(const char* _name, const char* _description) + : entry::AppI(_name, _description) + , m_currFrame(UINT32_MAX) + , m_texelHalf(0.0f) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Create uniforms for screen passes and models + m_uniforms.init(); + m_modelUniforms.init(); + + // Create texture sampler uniforms (used when we bind textures) + s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler); + s_color = bgfx::createUniform("s_color", bgfx::UniformType::Sampler); + s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Sampler); + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Sampler); + s_blurredColor = bgfx::createUniform("s_blurredColor", bgfx::UniformType::Sampler); + + // Create program from shaders. + m_forwardProgram = loadProgram("vs_bokeh_forward", "fs_bokeh_forward"); + m_gridProgram = loadProgram("vs_bokeh_forward", "fs_bokeh_forward_grid"); + m_copyProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_copy"); + m_copyLinearToGammaProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_copy_linear_to_gamma"); + m_linearDepthProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_linear_depth"); + m_dofSinglePassProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_dof_single_pass"); + m_dofDownsampleProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_dof_downsample"); + m_dofQuarterProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_dof_second_pass"); + m_dofCombineProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_dof_combine"); + m_dofDebugProgram = loadProgram("vs_bokeh_screenquad", "fs_bokeh_dof_debug"); + + // Load some meshes + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + m_meshes[ii] = meshLoad(s_meshPaths[ii]); + } + + m_groundTexture = loadTexture("textures/fieldstone-rgba.dds"); + m_normalTexture = loadTexture("textures/fieldstone-n.dds"); + + m_recreateFrameBuffers = false; + createFramebuffers(); + + // Vertex decl + PosTexCoord0Vertex::init(); + + // Init camera + cameraCreate(); + cameraSetPosition({ 0.0f, 2.5f, -20.0f }); + cameraSetVerticalAngle(-0.3f); + m_fovY = 60.0f; + + // Init "prev" matrices, will be same for first frame + cameraGetViewMtx(m_view); + bx::mtxProj(m_proj, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, bgfx::getCaps()->homogeneousDepth); + + // Get renderer capabilities info. + const bgfx::RendererType::Enum renderer = bgfx::getRendererType(); + m_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f; + + m_bokehTexture.idx = bgfx::kInvalidHandle; + updateDisplayBokehTexture(m_radiusScale, m_maxBlurSize, m_lobeCount, (1.0f-m_lobePinch), 1.0f, m_lobeRotation); + + imguiCreate(); + } + + int32_t shutdown() override + { + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + meshUnload(m_meshes[ii]); + } + + bgfx::destroy(m_normalTexture); + bgfx::destroy(m_groundTexture); + bgfx::destroy(m_bokehTexture); + + bgfx::destroy(m_forwardProgram); + bgfx::destroy(m_gridProgram); + bgfx::destroy(m_copyProgram); + bgfx::destroy(m_copyLinearToGammaProgram); + bgfx::destroy(m_linearDepthProgram); + bgfx::destroy(m_dofSinglePassProgram); + bgfx::destroy(m_dofDownsampleProgram); + bgfx::destroy(m_dofQuarterProgram); + bgfx::destroy(m_dofCombineProgram); + bgfx::destroy(m_dofDebugProgram); + + m_uniforms.destroy(); + m_modelUniforms.destroy(); + + bgfx::destroy(s_albedo); + bgfx::destroy(s_color); + bgfx::destroy(s_normal); + bgfx::destroy(s_depth); + bgfx::destroy(s_blurredColor); + + destroyFramebuffers(); + + cameraDestroy(); + + imguiDestroy(); + + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState)) + { + // skip processing when minimized, otherwise crashing + if (0 == m_width || 0 == m_height) + { + return true; + } + + // Update frame timer + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const float deltaTime = float(frameTime / freq); + const bgfx::Caps* caps = bgfx::getCaps(); + + if (m_size[0] != (int32_t)m_width + || m_size[1] != (int32_t)m_height + || m_recreateFrameBuffers) + { + destroyFramebuffers(); + createFramebuffers(); + m_recreateFrameBuffers = false; + } + + // update animation time + const float rotationSpeed = 0.75f; + m_animationTime += deltaTime * rotationSpeed; + if (bx::kPi2 < m_animationTime) + { + m_animationTime -= bx::kPi2; + } + + // Update camera + cameraUpdate(deltaTime*0.15f, m_mouseState, ImGui::MouseOverArea() ); + + cameraGetViewMtx(m_view); + + updateUniforms(); + + bx::mtxProj(m_proj, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, caps->homogeneousDepth); + bx::mtxProj(m_proj2, m_fovY, float(m_size[0]) / float(m_size[1]), 0.01f, 100.0f, false); + + bgfx::ViewId view = 0; + + // Draw models into scene + { + bgfx::setViewName(view, "forward scene"); + bgfx::setViewClear(view + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x7fb8ffff // clear to a sky blue + , 1.0f + , 0 + ); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_size[0]), uint16_t(m_size[1])); + bgfx::setViewTransform(view, m_view, m_proj); + bgfx::setViewFrameBuffer(view, m_frameBuffer); + + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + ); + + drawAllModels(view, m_forwardProgram, m_modelUniforms); + + ++view; + } + + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, caps->homogeneousDepth); + { + // clear out transform stack + float identity[16]; + bx::mtxIdentity(identity); + bgfx::setTransform(identity); + } + + // Convert depth to linear depth for shadow depth compare + { + bgfx::setViewName(view, "linear depth"); + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_linearDepth.m_buffer); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_depth, m_frameBufferTex[FRAMEBUFFER_RT_DEPTH]); + m_uniforms.submit(); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_linearDepthProgram); + ++view; + } + + // optionally, apply dof + const bool useOrDebugDof = m_useBokehDof || m_showDebugVisualization; + if (useOrDebugDof) + { + view = drawDepthOfField(view, m_frameBufferTex[FRAMEBUFFER_RT_COLOR], orthoProj, caps->originBottomLeft); + } + else + { + bgfx::setViewName(view, "display"); + bgfx::setViewClear(view + , BGFX_CLEAR_NONE + , 0 + , 1.0f + , 0 + ); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + ); + bgfx::setTexture(0, s_color, m_frameBufferTex[FRAMEBUFFER_RT_COLOR]); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_copyLinearToGammaProgram); + ++view; + } + + // Draw UI + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 4.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 4.0f, m_height / 1.35f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.5f); + + { + ImGui::Checkbox("use bokeh dof", &m_useBokehDof); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("turn effect on and off"); + + ImGui::Checkbox("use single pass at full res", &m_useSinglePassBokehDof); + if (ImGui::IsItemHovered()) + { + ImGui::BeginTooltip(); + ImGui::Text("calculate in a single pass at full resolution or use"); + ImGui::Text("multiple passes to compute at lower res and composite"); + ImGui::EndTooltip(); + } + + ImGui::Checkbox("show debug vis", &m_showDebugVisualization); + if (ImGui::IsItemHovered()) + { + ImGui::BeginTooltip(); + ImGui::Text("apply coloration to screen. fades from grey to orange with"); + ImGui::Text("increasing foreground blur. from grey to blue in background"); + ImGui::EndTooltip(); + } + ImGui::Separator(); + + bool isChanged = false; + + ImGui::Text("blur controls:"); + isChanged |= ImGui::SliderFloat("max blur size", &m_maxBlurSize, 10.0f, 50.0f); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("maximum blur size in screen pixels"); + + ImGui::SliderFloat("focusPoint", &m_focusPoint, 1.0f, 20.0f); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("distance to focus plane"); + + ImGui::SliderFloat("focusScale", &m_focusScale, 0.0f, 10.0f); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("multiply focus calculation, larger=tighter focus"); + ImGui::Separator(); + + ImGui::Text("bokeh shape and sample controls:"); + isChanged |= ImGui::SliderFloat("radiusScale", &m_radiusScale, 0.5f, 4.0f); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("controls number of samples taken"); + + isChanged |= ImGui::SliderInt("lobe count", &m_lobeCount, 1, 8); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("using triangle lobes to emulate aperture blades"); + + isChanged |= ImGui::SliderFloat("lobe pinch", &m_lobePinch, 0.0f, 1.0f); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("adjust lobe shape, 0=round, 1=starry"); + + isChanged |= ImGui::SliderFloat("lobe rotation", &m_lobeRotation, -1.0f, 1.0f); + + if (isChanged) + { + updateDisplayBokehTexture(m_radiusScale, m_maxBlurSize, m_lobeCount, (1.0f-m_lobePinch), 1.0f, m_lobeRotation); + } + + ImGui::Text("number of samples taken: %d", m_sampleCount); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("number of sample taps as determined by radiusScale and maxBlurSize"); + + + ImGui::Image(m_bokehTexture, ImVec2(128.0f, 128.0f) ); + } + + ImGui::End(); + + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_currFrame = bgfx::frame(); + + return true; + } + + return false; + } + + void drawAllModels(bgfx::ViewId _pass, bgfx::ProgramHandle _program, ModelUniforms & _uniforms) + { + const int32_t width = 6; + const int32_t length = 20; + + float c0[] = { 72.0f/255.0f, 126.0f/255.0f, 149.0f/255.0f }; // blue + float c1[] = { 235.0f/255.0f, 146.0f/255.0f, 251.0f/255.0f }; // purple + float c2[] = { 199.0f/255.0f, 0.0f/255.0f, 57.0f/255.0f }; // pink + + for (int32_t zz = 0; zz < length; ++zz) + { + // make a color gradient, nothing special about this for example + float * ca = c0; + float * cb = c1; + float lerpVal = float(zz) / float(length); + + if (0.5f <= lerpVal) + { + ca = c1; + cb = c2; + } + lerpVal = bx::fract(2.0f*lerpVal); + + float r = bx::lerp(ca[0], cb[0], lerpVal); + float g = bx::lerp(ca[1], cb[1], lerpVal); + float b = bx::lerp(ca[2], cb[2], lerpVal); + + for (int32_t xx = 0; xx < width; ++xx) + { + const float angle = m_animationTime + float(zz)*(bx::kPi2/length) + float(xx)*(bx::kPiHalf/width); + + const float posX = 2.0f * xx - width + 1.0f; + const float posY = bx::sin(angle); + const float posZ = 2.0f * zz - length + 1.0f; + + const float scale = s_meshScale[MeshHollowCube]; + float mtx[16]; + bx::mtxSRT(mtx + , scale + , scale + , scale + , 0.0f + , 0.0f + , 0.0f + , posX + , posY + , posZ + ); + + bgfx::setTexture(0, s_albedo, m_groundTexture); + bgfx::setTexture(1, s_normal, m_normalTexture); + _uniforms.m_color[0] = r; + _uniforms.m_color[1] = g; + _uniforms.m_color[2] = b; + _uniforms.submit(); + + meshSubmit(m_meshes[MeshHollowCube], _pass, _program, mtx); + } + } + + // draw box as ground plane + { + const float posY = -2.0f; + const float scale = length; + float mtx[16]; + bx::mtxSRT(mtx + , scale + , scale + , scale + , 0.0f + , 0.0f + , 0.0f + , 0.0f + , -scale + posY + , 0.0f + ); + + _uniforms.m_color[0] = 0.5f; + _uniforms.m_color[1] = 0.5f; + _uniforms.m_color[2] = 0.5f; + _uniforms.submit(); + + meshSubmit(m_meshes[MeshCube], _pass, m_gridProgram, mtx); + } + } + + bgfx::ViewId drawDepthOfField(bgfx::ViewId _pass, bgfx::TextureHandle _colorTexture, float* _orthoProj, bool _originBottomLeft) + { + bgfx::ViewId view = _pass; + bgfx::TextureHandle lastTex = _colorTexture; + + if (m_showDebugVisualization) + { + bgfx::setViewName(view, "bokeh dof debug pass"); + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, _orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, lastTex); + bgfx::setTexture(1, s_depth, m_linearDepth.m_texture); + m_uniforms.submit(); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, _originBottomLeft); + bgfx::submit(view, m_dofDebugProgram); + ++view; + } + else if (m_useSinglePassBokehDof) + { + bgfx::setViewName(view, "bokeh dof single pass"); + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, _orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, lastTex); + bgfx::setTexture(1, s_depth, m_linearDepth.m_texture); + m_uniforms.submit(); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, _originBottomLeft); + bgfx::submit(view, m_dofSinglePassProgram); + ++view; + } + else + { + unsigned halfWidth = (m_width/2); + unsigned halfHeight = (m_height/2); + + bgfx::setViewName(view, "bokeh dof downsample"); + bgfx::setViewRect(view, 0, 0, uint16_t(halfWidth), uint16_t(halfHeight)); + bgfx::setViewTransform(view, NULL, _orthoProj); + bgfx::setViewFrameBuffer(view, m_dofQuarterInput.m_buffer); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, lastTex); + bgfx::setTexture(1, s_depth, m_linearDepth.m_texture); + m_uniforms.submit(); + screenSpaceQuad(float(halfWidth), float(halfHeight), m_texelHalf, _originBottomLeft); + bgfx::submit(view, m_dofDownsampleProgram); + ++view; + lastTex = m_dofQuarterInput.m_texture; + + /* + replace the copy with bokeh dof combine + able to read circle of confusion and color from downsample pass + along with full res color and depth? + do we need half res depth? i'm confused about that... + */ + + bgfx::setViewName(view, "bokeh dof quarter"); + bgfx::setViewRect(view, 0, 0, uint16_t(halfWidth), uint16_t(halfHeight)); + bgfx::setViewTransform(view, NULL, _orthoProj); + bgfx::setViewFrameBuffer(view, m_dofQuarterOutput.m_buffer); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, lastTex); + m_uniforms.submit(); + screenSpaceQuad(float(halfWidth), float(halfHeight), m_texelHalf, _originBottomLeft); + bgfx::submit(view, m_dofQuarterProgram); + ++view; + lastTex = m_dofQuarterOutput.m_texture; + + bgfx::setViewName(view, "bokeh dof combine"); + bgfx::setViewRect(view, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(view, NULL, _orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_DEPTH_TEST_ALWAYS + ); + bgfx::setTexture(0, s_color, _colorTexture); + bgfx::setTexture(1, s_blurredColor, lastTex); + m_uniforms.submit(); + screenSpaceQuad(float(m_width), float(m_height), m_texelHalf, _originBottomLeft); + bgfx::submit(view, m_dofCombineProgram); + ++view; + } + + return view; + } + + void createFramebuffers() + { + m_size[0] = m_width; + m_size[1] = m_height; + + const uint64_t bilinearFlags = 0 + | BGFX_TEXTURE_RT + | BGFX_SAMPLER_U_CLAMP + | BGFX_SAMPLER_V_CLAMP + ; + + m_frameBufferTex[FRAMEBUFFER_RT_COLOR] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::RGBA16F, bilinearFlags); + m_frameBufferTex[FRAMEBUFFER_RT_DEPTH] = bgfx::createTexture2D(uint16_t(m_size[0]), uint16_t(m_size[1]), false, 1, bgfx::TextureFormat::D32F, bilinearFlags); + m_frameBuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_frameBufferTex), m_frameBufferTex, true); + + m_linearDepth.init(m_size[0], m_size[1], bgfx::TextureFormat::R16F, bilinearFlags); + + unsigned halfWidth = m_size[0]/2; + unsigned halfHeight = m_size[1]/2; + m_dofQuarterInput.init(halfWidth, halfHeight, bgfx::TextureFormat::RGBA16F, bilinearFlags); + m_dofQuarterOutput.init(halfWidth, halfHeight, bgfx::TextureFormat::RGBA16F, bilinearFlags); + } + + // all buffers set to destroy their textures + void destroyFramebuffers() + { + bgfx::destroy(m_frameBuffer); + + m_linearDepth.destroy(); + m_dofQuarterInput.destroy(); + m_dofQuarterOutput.destroy(); + } + + void updateUniforms() + { + // from assao sample, cs_assao_prepare_depths.sc + { + // float depthLinearizeMul = ( clipFar * clipNear ) / ( clipFar - clipNear ); + // float depthLinearizeAdd = clipFar / ( clipFar - clipNear ); + // correct the handedness issue. need to make sure this below is correct, but I think it is. + + float depthLinearizeMul = -m_proj2[3*4+2]; + float depthLinearizeAdd = m_proj2[2*4+2]; + + if (depthLinearizeMul * depthLinearizeAdd < 0) + { + depthLinearizeAdd = -depthLinearizeAdd; + } + + vec2Set(m_uniforms.m_depthUnpackConsts, depthLinearizeMul, depthLinearizeAdd); + + float tanHalfFOVY = 1.0f / m_proj2[1*4+1]; // = tanf( drawContext.Camera.GetYFOV( ) * 0.5f ); + float tanHalfFOVX = 1.0F / m_proj2[0]; // = tanHalfFOVY * drawContext.Camera.GetAspect( ); + + if (bgfx::getRendererType() == bgfx::RendererType::OpenGL) + { + vec2Set(m_uniforms.m_ndcToViewMul, tanHalfFOVX * 2.0f, tanHalfFOVY * 2.0f); + vec2Set(m_uniforms.m_ndcToViewAdd, tanHalfFOVX * -1.0f, tanHalfFOVY * -1.0f); + } + else + { + vec2Set(m_uniforms.m_ndcToViewMul, tanHalfFOVX * 2.0f, tanHalfFOVY * -2.0f); + vec2Set(m_uniforms.m_ndcToViewAdd, tanHalfFOVX * -1.0f, tanHalfFOVY * 1.0f); + } + } + + m_uniforms.m_frameIdx = float(m_currFrame % 8); + + { + float lightPosition[] = { 0.0f, 6.0f, 10.0f }; + bx::memCopy(m_modelUniforms.m_lightPosition, lightPosition, 3*sizeof(float)); + } + + // bokeh depth of field + { + // reduce dimensions by half to go along with smaller render target + const float blurScale = (m_useSinglePassBokehDof) ? 1.0f : 0.5f; + m_uniforms.m_blurSteps = m_blurSteps; + m_uniforms.m_lobeCount = float(m_lobeCount); + m_uniforms.m_lobeRadiusMin = (1.0f - m_lobePinch); + m_uniforms.m_lobeRadiusDelta2x = 2.0f * m_lobePinch; + m_uniforms.m_maxBlurSize = m_maxBlurSize * blurScale; + m_uniforms.m_focusPoint = m_focusPoint; + m_uniforms.m_focusScale = m_focusScale; + m_uniforms.m_radiusScale = m_radiusScale * blurScale; + m_uniforms.m_lobeRotation = m_lobeRotation; + } + } + + static float bokehShapeFromAngle (int _lobeCount, float _radiusMin, float _radiusDelta2x, float _rotation, float _theta) + { + // don't shape for 0, 1 blades... + if (_lobeCount <= 1) + { + return 1.0f; + } + + // divide edge into some number of lobes + const float invPeriod = float(_lobeCount) / (bx::kPi2); + float periodFraction = bx::fract(_theta * invPeriod + _rotation); + + // apply triangle shape to each lobe to approximate blades of a camera aperture + periodFraction = bx::abs(periodFraction - 0.5f); + return periodFraction * _radiusDelta2x + _radiusMin; + } + + void updateDisplayBokehTexture( + float _radiusScale, + float _maxBlurSize, + int _lobeCount, + float _lobeRadiusMin, + float _lobeRadiusMax, + float _lobeRotation) + { + if (m_bokehTexture.idx != bgfx::kInvalidHandle) + { + bgfx::destroy(m_bokehTexture); + } + BX_ASSERT(0 < _lobeCount, ""); + + const int32_t bokehSize = 128; + + const bgfx::Memory* mem = bgfx::alloc(bokehSize*bokehSize*4); + bx::memSet(mem->data, 0x00, bokehSize*bokehSize*4); + + const float thetaStep = 2.39996323f; // golden angle + float loopValue = _radiusScale; + const float loopEnd = _maxBlurSize; + float theta = 0.0f; + + // bokeh shape function multiples this by half later + const float radiusDelta2x = 2.0f * (_lobeRadiusMax - _lobeRadiusMin); + int32_t counter = 0; + + while (loopValue < loopEnd) + { + float radius = loopValue; + + // apply shape to circular distribution + const float shapeScale = bokehShapeFromAngle(_lobeCount, _lobeRadiusMin, radiusDelta2x, _lobeRotation, theta); + BX_ASSERT(_lobeRadiusMin <= shapeScale, ""); + + float spiralCoordX = bx::cos(theta) * (radius * shapeScale); + float spiralCoordY = bx::sin(theta) * (radius * shapeScale); + // normalize for texture display + spiralCoordX /= _maxBlurSize; + spiralCoordY /= _maxBlurSize; + // scale from -1,1 into 0,1 normalized texture space + spiralCoordX = spiralCoordX * 0.5f + 0.5f; + spiralCoordY = spiralCoordY * 0.5f + 0.5f; + // convert to pixel coordinates + int32_t pixelCoordX = int32_t(bx::floor(spiralCoordX * float(bokehSize-1) + 0.5f)); + int32_t pixelCoordY = int32_t(bx::floor(spiralCoordY * float(bokehSize-1) + 0.5f)); + + BX_ASSERT(0 <= pixelCoordX, ""); + BX_ASSERT(0 <= pixelCoordY, ""); + BX_ASSERT(pixelCoordX < bokehSize, ""); + BX_ASSERT(pixelCoordY < bokehSize, ""); + + // plot sample position, track for total samples + uint32_t offset = (pixelCoordY * bokehSize + pixelCoordX) * 4; + mem->data[offset + 0] = 0xff; + mem->data[offset + 1] = 0xff; + mem->data[offset + 2] = 0xff; + mem->data[offset + 3] = 0xff; + ++counter; + + theta += thetaStep; + loopValue += (_radiusScale / loopValue); + } + m_sampleCount = counter; + + // hoping texture deals with mem + m_bokehTexture = bgfx::createTexture2D(bokehSize, bokehSize, false, 1 + , bgfx::TextureFormat::BGRA8 + , 0 + | BGFX_SAMPLER_MIN_POINT + | BGFX_SAMPLER_MIP_POINT + | BGFX_SAMPLER_MAG_POINT + , mem + ); + } + + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + entry::MouseState m_mouseState; + + // Resource handles + bgfx::ProgramHandle m_forwardProgram; + bgfx::ProgramHandle m_gridProgram; + bgfx::ProgramHandle m_copyProgram; + bgfx::ProgramHandle m_copyLinearToGammaProgram; + bgfx::ProgramHandle m_linearDepthProgram; + bgfx::ProgramHandle m_dofSinglePassProgram; + bgfx::ProgramHandle m_dofDownsampleProgram; + bgfx::ProgramHandle m_dofQuarterProgram; + bgfx::ProgramHandle m_dofCombineProgram; + bgfx::ProgramHandle m_dofDebugProgram; + + // Shader uniforms + PassUniforms m_uniforms; + ModelUniforms m_modelUniforms; + + // Uniforms to identify texture samplers + bgfx::UniformHandle s_albedo; + bgfx::UniformHandle s_color; + bgfx::UniformHandle s_normal; + bgfx::UniformHandle s_depth; + bgfx::UniformHandle s_blurredColor; + + bgfx::FrameBufferHandle m_frameBuffer; + bgfx::TextureHandle m_frameBufferTex[FRAMEBUFFER_RENDER_TARGETS]; + + RenderTarget m_linearDepth; + RenderTarget m_dofQuarterInput; + RenderTarget m_dofQuarterOutput; + + struct Model + { + uint32_t mesh; // Index of mesh in m_meshes + float position[3]; + }; + + Mesh* m_meshes[BX_COUNTOF(s_meshPaths)]; + bgfx::TextureHandle m_groundTexture; + bgfx::TextureHandle m_normalTexture; + bgfx::TextureHandle m_bokehTexture; + + uint32_t m_currFrame; + float m_lightRotation = 0.0f; + float m_texelHalf = 0.0f; + float m_fovY = 60.0f; + bool m_recreateFrameBuffers = false; + float m_animationTime = 0.0f; + + float m_view[16]; + float m_proj[16]; + float m_proj2[16]; + int32_t m_size[2]; + + // UI parameters + bool m_useBokehDof = true; + bool m_useSinglePassBokehDof = false; + float m_maxBlurSize = 20.0f; + float m_focusPoint = 5.0f; + float m_focusScale = 3.0f; + float m_radiusScale = 0.5f; + float m_blurSteps = 50.0f; + bool m_showDebugVisualization = false; + int32_t m_lobeCount = 6; + float m_lobePinch = 0.2f; + float m_lobeRotation = 0.0f; + int32_t m_sampleCount = 0; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN(ExampleBokeh, "45-bokeh", "Bokeh Depth of Field"); diff --git a/3rdparty/bgfx/examples/45-bokeh/bokeh_dof.sh b/3rdparty/bgfx/examples/45-bokeh/bokeh_dof.sh new file mode 100644 index 00000000000..43c4885d1d3 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/bokeh_dof.sh @@ -0,0 +1,176 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef BOKEH_DOF_SH +#define BOKEH_DOF_SH + +#define TWO_PI (6.28318531) +#define GOLDEN_ANGLE (2.39996323) +#define MAX_BLUR_SIZE (20.0) +#define RADIUS_SCALE (0.5) + +float ShadertoyNoise (vec2 uv) { + return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + +float GetCircleOfConfusion (float depth, float focusPoint, float focusScale) +{ + // if depth is less than focusPoint, result will be negative. want to keep this + // relationship so comparison of (signed) blur size is same as comparing depth. + return clamp((1.0/focusPoint - 1.0/depth) * focusScale, -1.0, 1.0); +} + +float GetBlurSize (float depth, float focusPoint, float focusScale) +{ + float circleOfConfusion = GetCircleOfConfusion(depth, focusPoint, focusScale); + return circleOfConfusion * u_maxBlurSize; +} + +// this is the function at bottom of blog post... +//vec3 OriginalDepthOfField (vec2 texCoord, float focusPoint, float focusScale) +//{ +// float depth = texture2D(s_depth, texCoord).x; +// float centerSize = GetBlurSize(depth, focusPoint, focusScale); +// vec3 color = texture2D(s_color, texCoord).xyz; +// +// float total = 1.0; +// float radius = RADIUS_SCALE; +// for (float theta = 0.0; radius < MAX_BLUR_SIZE; theta += GOLDEN_ANGLE) +// { +// vec2 spiralCoord = texCoord + vec2(cos(theta), sin(theta)) * u_viewTexel.xy * radius; +// vec3 sampleColor = texture2D(s_color, spiralCoord).xyz; +// float sampleDepth = texture2D(s_depth, spiralCoord).x; +// +// float sampleSize = GetBlurSize(sampleDepth, focusPoint, focusScale); +// if (sampleDepth > depth) +// { +// sampleSize = clamp(sampleSize, 0.0, centerSize*2.0); +// } +// float m = smoothstep(radius-0.5, radius+0.5, sampleSize); +// color += mix(color/total, sampleColor, m); +// total += 1.0; +// radius += RADIUS_SCALE/radius; +// } +// return color * (1.0/total); +//} + + +void GetColorAndBlurSize ( + sampler2D samplerColor, + sampler2D samplerDepth, + vec2 texCoord, + float focusPoint, + float focusScale, + out vec3 outColor, + out float outBlurSize +) { +#if USE_PACKED_COLOR_AND_BLUR + vec4 colorAndBlurSize = texture2DLod(samplerColor, texCoord, 0); + vec3 color = colorAndBlurSize.xyz; + float blurSize = colorAndBlurSize.w; + + outColor = color; + outBlurSize = blurSize; +#else + vec3 color = texture2DLod(samplerColor, texCoord, 0).xyz; + float depth = texture2DLod(samplerDepth, texCoord, 0).x; + float blurSize = GetBlurSize(depth, focusPoint, focusScale); + + outColor = color; + outBlurSize = blurSize; +#endif +} + +float BokehShapeFromAngle (float lobeCount, float radiusMin, float radiusDelta2x, float rotation, float angle) +{ + // don't shape for 0, 1 blades... + if (lobeCount <= 1.0f) + { + return 1.0f; + } + + // divide edge into some number of lobes + float invPeriod = lobeCount / (2.0 * 3.1415926); + float periodFraction = fract(angle * invPeriod + rotation); + + // apply triangle shape to each lobe to approximate blades of a camera aperture + periodFraction = abs(periodFraction - 0.5); + return periodFraction*radiusDelta2x + radiusMin; +} + +vec4 DepthOfField( + sampler2D samplerColor, + sampler2D samplerDepth, + vec2 texCoord, + float focusPoint, + float focusScale +) { + vec3 color; + float centerSize; + GetColorAndBlurSize( + samplerColor, + samplerDepth, + texCoord, + focusPoint, + focusScale, + /*out*/color, + /*out*/centerSize); + float absCenterSize = abs(centerSize); + + // as sample count gets lower, visible banding. disrupt with noise. + // use a better random/noise/dither function than this.. + vec2 pixelCoord = texCoord.xy * u_viewRect.zw; + float random = ShadertoyNoise(pixelCoord + vec2(314.0, 159.0)*u_frameIdx); + float theta = random * TWO_PI; + float thetaStep = GOLDEN_ANGLE; + + float total = 1.0; + float totalSampleSize = 0.0; + float loopValue = u_radiusScale; + float loopEnd = u_maxBlurSize; + + while (loopValue < loopEnd) + { + float radius = loopValue; + float shapeScale = BokehShapeFromAngle( + u_lobeCount, + u_lobeRadiusMin, + u_lobeRadiusDelta2x, + u_lobeRotation, + theta); + vec2 spiralCoord = texCoord + vec2(cos(theta), sin(theta)) * u_viewTexel.xy * (radius * shapeScale); + + vec3 sampleColor; + float sampleSize; + GetColorAndBlurSize( + samplerColor, + samplerDepth, + spiralCoord, + focusPoint, + focusScale, + /*out*/sampleColor, + /*out*/sampleSize); + float absSampleSize = abs(sampleSize); + + // using signed sample size as proxy for depth comparison + if (sampleSize > centerSize) + { + absSampleSize = clamp(absSampleSize, 0.0, absCenterSize*2.0); + } + float m = smoothstep(radius-0.5, radius+0.5, absSampleSize); + color += mix(color/total, sampleColor, m); + totalSampleSize += absSampleSize; + total += 1.0; + theta += thetaStep; + + loopValue += (u_radiusScale/loopValue); + } + + color *= 1.0/total; + float averageSampleSize = totalSampleSize / (total-1.0); + return vec4(color, averageSampleSize); +} + +#endif diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_copy.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_copy.sc new file mode 100644 index 00000000000..aa835a07a3f --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_copy.sc @@ -0,0 +1,18 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_color, 0); + +void main() +{ + vec2 texCoord = v_texcoord0; + vec4 color = texture2D(s_color, texCoord); + gl_FragColor = color; +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_copy_linear_to_gamma.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_copy_linear_to_gamma.sc new file mode 100644 index 00000000000..aacc360d795 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_copy_linear_to_gamma.sc @@ -0,0 +1,22 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_color, 0); + +void main() +{ + vec2 texCoord = v_texcoord0; + vec4 linearColor = texture2D(s_color, texCoord); + + // this pass is writing directly out to backbuffer, convert from linear to gamma + vec4 color = vec4(toGamma(linearColor.xyz), linearColor.w); + + gl_FragColor = color; +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_combine.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_combine.sc new file mode 100644 index 00000000000..b60f7572502 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_combine.sc @@ -0,0 +1,29 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_blurredColor, 1); + +void main() +{ + vec2 texCoord = v_texcoord0.xy; + vec4 color = texture2D(s_color, texCoord); + vec4 dofColorSize = texture2D(s_blurredColor, texCoord); + vec3 dofColor = dofColorSize.xyz; + float sampleSize = dofColorSize.w; + + float m = saturate(sampleSize-1.0); + color.xyz = mix(color.xyz, dofColor, m); + + // this pass is writing directly out to backbuffer, convert from linear to gamma + color.xyz = toGamma(color.xyz); + + gl_FragColor = color; +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_debug.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_debug.sc new file mode 100644 index 00000000000..6a85b359fda --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_debug.sc @@ -0,0 +1,44 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" +#include "bokeh_dof.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_depth, 1); + +void main() +{ + vec2 texCoord = v_texcoord0.xy; + + // desaturate color to make tinted color stand out + vec3 color = texture2D(s_color, texCoord).xyz; + color = toGamma(color); + color = vec3_splat(dot(color, vec3(0.33, 0.34, 0.33))); + + // get circle of confusion from depth + float depth = texture2D(s_depth, texCoord).x; + float circleOfConfusion = GetCircleOfConfusion(depth, u_focusPoint, u_focusScale); + + // apply tint color to debug where blur applied + vec3 tintColor; + if (circleOfConfusion < 0.0) + { + // tint foreground orange + tintColor = vec3(187.0, 61.0, 7.0) / 255.0; + } + else + { + // tint background blue + tintColor = vec3(11.0, 89.0, 138.0) / 255.0; + } + tintColor *= color; + color = mix(color, tintColor, abs(circleOfConfusion)); + + gl_FragColor = vec4(color, 1.0); +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_downsample.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_downsample.sc new file mode 100644 index 00000000000..8df24c24e11 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_downsample.sc @@ -0,0 +1,24 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" +#include "bokeh_dof.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_depth, 1); + +void main() +{ + vec2 texCoord = v_texcoord0.xy; + + vec3 color = texture2D(s_color, texCoord).xyz; + float depth = texture2D(s_depth, texCoord).x; + float blurSize = GetBlurSize(depth, u_focusPoint, u_focusScale); + + gl_FragColor = vec4(color, blurSize); +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_second_pass.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_second_pass.sc new file mode 100644 index 00000000000..43797b0571a --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_second_pass.sc @@ -0,0 +1,25 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +#define USE_PACKED_COLOR_AND_BLUR 1 +#include "bokeh_dof.sh" + +SAMPLER2D(s_color, 0); + +void main() +{ + vec2 texCoord = v_texcoord0.xy; + + vec4 outColor = DepthOfField(s_color, s_color, texCoord, u_focusPoint, u_focusScale); + + // this pass isn't writing final output, leave in linear space for combining with scene color + + gl_FragColor = outColor; +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_single_pass.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_single_pass.sc new file mode 100644 index 00000000000..b74940db464 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_dof_single_pass.sc @@ -0,0 +1,25 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" +#include "bokeh_dof.sh" + +SAMPLER2D(s_color, 0); +SAMPLER2D(s_depth, 1); + +void main() +{ + vec2 texCoord = v_texcoord0.xy; + + vec3 outColor = DepthOfField(s_color, s_depth, texCoord, u_focusPoint, u_focusScale).xyz; + + // this pass is writing directly out to backbuffer, convert from linear to gamma + outColor = toGamma(outColor); + + gl_FragColor = vec4(outColor, 1.0); +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_forward.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_forward.sc new file mode 100644 index 00000000000..2ad870f481a --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_forward.sc @@ -0,0 +1,80 @@ +$input v_normal, v_texcoord0, v_texcoord1, v_texcoord2 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" + +SAMPLER2D(s_albedo, 0); +SAMPLER2D(s_normal, 1); + +// struct ModelUniforms +uniform vec4 u_modelParams[2]; + +#define u_color (u_modelParams[0].xyz) +#define u_lightPosition (u_modelParams[1].xyz) + + +// http://www.thetenthplanet.de/archives/1180 +// "followup: normal mapping without precomputed tangents" +mat3 cotangentFrame(vec3 N, vec3 p, vec2 uv) +{ + // get edge vectors of the pixel triangle + vec3 dp1 = dFdx(p); + vec3 dp2 = dFdy(p); + vec2 duv1 = dFdx(uv); + vec2 duv2 = dFdy(uv); + + // solve the linear system + vec3 dp2perp = cross(dp2, N); + vec3 dp1perp = cross(N, dp1); + vec3 T = dp2perp * duv1.x + dp1perp * duv2.x; + vec3 B = dp2perp * duv1.y + dp1perp * duv2.y; + + // construct a scale-invariant frame + float invMax = inversesqrt(max(dot(T,T), dot(B,B))); + return mat3(T*invMax, B*invMax, N); +} + +void main() +{ + vec3 albedo = toLinear(texture2D(s_albedo, v_texcoord0).xyz); + + // get vertex normal + vec3 normal = normalize(v_normal); + + // get normal map normal, unpack, and calculate z + vec3 normalMap; + normalMap.xy = texture2D(s_normal, v_texcoord0).xy; + normalMap.xy = normalMap.xy * 2.0 - 1.0; + normalMap.z = sqrt(1.0 - dot(normalMap.xy, normalMap.xy)); + + // swap x and y, because the brick texture looks flipped, don't copy this... + normalMap.xy = -normalMap.yx; + + // perturb geometry normal by normal map + vec3 pos = v_texcoord1.xyz; // contains world space pos + mat3 TBN = cotangentFrame(normal, pos, v_texcoord0); + vec3 bumpedNormal = normalize(instMul(TBN, normalMap)); + + vec3 light = (u_lightPosition - pos); + light = normalize(light); + + float NdotL = saturate(dot(bumpedNormal, light)); + float diffuse = NdotL * 1.0; + + vec3 V = v_texcoord2.xyz; // contains view vector + vec3 H = normalize(V+light); + float NdotH = saturate(dot(bumpedNormal, H)); + float specular = 5.0 * pow(NdotH, 256); + float ambient = 0.1; + + float lightAmount = ambient + diffuse; + vec3 color = u_color * albedo * lightAmount + specular; + + // leave color in linear space for better dof filter result + + gl_FragColor = vec4(color, 1.0); +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_forward_grid.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_forward_grid.sc new file mode 100644 index 00000000000..db5fd56f9c7 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_forward_grid.sc @@ -0,0 +1,58 @@ +$input v_normal, v_texcoord0, v_texcoord1, v_texcoord2 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" + +// struct ModelUniforms +uniform vec4 u_modelParams[2]; + +#define u_color (u_modelParams[0].xyz) +#define u_lightPosition (u_modelParams[1].xyz) + + +int ModHelper (float a, float b) +{ + return int( a - (b*floor(a/b))); +} + +vec3 GetGridColor (vec2 position, float width, vec3 color) +{ + position = abs(floor( position + vec2(-width, -width) )); + int posXMod = ModHelper(position.x, 2.0); + int posYMod = ModHelper(position.y, 2.0); + float gridColorScale = (posXMod == posYMod) ? 0.75 : 1.25; + return toLinear(color) * gridColorScale; +} + +void main() +{ + vec3 worldSpacePosition = v_texcoord1.xyz; // contains ws pos + vec2 gridCoord = worldSpacePosition.xz; // assuming y is up + vec3 gridColor = GetGridColor(gridCoord.xy, 0.002, u_color); + + // get vertex normal + vec3 normal = normalize(v_normal); + + vec3 light = (u_lightPosition - worldSpacePosition); + light = normalize(light); + + float NdotL = saturate(dot(normal, light)); + float diffuse = NdotL * 1.0; + + vec3 V = v_texcoord2.xyz; // contains view vector + vec3 H = normalize(V+light); + float NdotH = saturate(dot(normal, H)); + float specular = 5.0 * pow(NdotH, 256); + float ambient = 0.1; + + float lightAmount = ambient + diffuse; + vec3 color = gridColor * lightAmount + specular; + + // leave color in linear space for better dof filter result + + gl_FragColor = vec4(color, 1.0); +} diff --git a/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_linear_depth.sc b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_linear_depth.sc new file mode 100644 index 00000000000..08a31ccdc85 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/fs_bokeh_linear_depth.sc @@ -0,0 +1,35 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" +#include "parameters.sh" + +SAMPLER2D(s_depth, 0); + +// from assao sample, cs_assao_prepare_depths.sc +float ScreenSpaceToViewSpaceDepth( float screenDepth ) +{ + float depthLinearizeMul = u_depthUnpackConsts.x; + float depthLinearizeAdd = u_depthUnpackConsts.y; + + // Optimised version of "-cameraClipNear / (cameraClipFar - projDepth * (cameraClipFar - cameraClipNear)) * cameraClipFar" + + // Set your depthLinearizeMul and depthLinearizeAdd to: + // depthLinearizeMul = ( cameraClipFar * cameraClipNear) / ( cameraClipFar - cameraClipNear ); + // depthLinearizeAdd = cameraClipFar / ( cameraClipFar - cameraClipNear ); + + return depthLinearizeMul / ( depthLinearizeAdd - screenDepth ); +} + + +void main() +{ + vec2 texCoord = v_texcoord0; + float depth = texture2D(s_depth, texCoord).x; + float linearDepth = ScreenSpaceToViewSpaceDepth(depth); + gl_FragColor = vec4_splat(linearDepth); +} diff --git a/3rdparty/bgfx/examples/45-bokeh/makefile b/3rdparty/bgfx/examples/45-bokeh/makefile new file mode 100644 index 00000000000..f9e23de2e08 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2019 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/45-bokeh/parameters.sh b/3rdparty/bgfx/examples/45-bokeh/parameters.sh new file mode 100644 index 00000000000..f8d72acedb8 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/parameters.sh @@ -0,0 +1,28 @@ +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#ifndef PARAMETERS_SH +#define PARAMETERS_SH + +// struct PassUniforms +uniform vec4 u_params[13]; + +#define u_depthUnpackConsts (u_params[0].xy) +#define u_frameIdx (u_params[0].z) +#define u_lobeRotation (u_params[0].w) +#define u_ndcToViewMul (u_params[1].xy) +#define u_ndcToViewAdd (u_params[1].zw) + +#define u_blurSteps (u_params[2].x) +#define u_lobeCount (u_params[2].y) +#define u_lobeRadiusMin (u_params[2].z) +#define u_lobeRadiusDelta2x (u_params[2].w) +#define u_samplePattern (u_params[2].y) +#define u_maxBlurSize (u_params[3].x) +#define u_focusPoint (u_params[3].y) +#define u_focusScale (u_params[3].z) +#define u_radiusScale (u_params[3].w) + +#endif // PARAMETERS_SH diff --git a/3rdparty/bgfx/examples/45-bokeh/screenshot.png b/3rdparty/bgfx/examples/45-bokeh/screenshot.png Binary files differnew file mode 100644 index 00000000000..afac0eea899 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/screenshot.png diff --git a/3rdparty/bgfx/examples/45-bokeh/varying.def.sc b/3rdparty/bgfx/examples/45-bokeh/varying.def.sc new file mode 100644 index 00000000000..4c827e4af32 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/varying.def.sc @@ -0,0 +1,9 @@ +vec4 a_position : POSITION; +vec2 a_texcoord0 : TEXCOORD0; +vec3 a_normal : NORMAL; + +vec2 v_texcoord0 : TEXCOORD0; +vec4 v_texcoord1 : TEXCOORD1; +vec4 v_texcoord2 : TEXCOORD2; +vec4 v_texcoord3 : TEXCOORD3; +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); diff --git a/3rdparty/bgfx/examples/45-bokeh/vs_bokeh_forward.sc b/3rdparty/bgfx/examples/45-bokeh/vs_bokeh_forward.sc new file mode 100644 index 00000000000..d7a48221041 --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/vs_bokeh_forward.sc @@ -0,0 +1,34 @@ +$input a_position, a_normal, a_texcoord0 +$output v_normal, v_texcoord0, v_texcoord1, v_texcoord2 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" + +void main() +{ + // Calculate vertex position + vec3 pos = a_position.xyz; + gl_Position = mul(u_modelViewProj, vec4(pos, 1.0)); + + vec3 wsPos = mul(u_model[0], vec4(pos, 1.0)).xyz; + + // Calculate normal, unpack + vec3 osNormal = a_normal.xyz * 2.0 - 1.0; + + // Transform normal into world space + vec3 wsNormal = mul(u_model[0], vec4(osNormal, 0.0)).xyz; + + v_normal.xyz = normalize(wsNormal); + v_texcoord0 = a_texcoord0; + + // Store world space view vector in extra texCoord attribute + vec3 wsCamPos = mul(u_invView, vec4(0.0, 0.0, 0.0, 1.0)).xyz; + vec3 view = normalize(wsCamPos - wsPos); + + v_texcoord1 = vec4(wsPos, 1.0); + v_texcoord2 = vec4(view, 1.0); +} diff --git a/3rdparty/bgfx/examples/45-bokeh/vs_bokeh_screenquad.sc b/3rdparty/bgfx/examples/45-bokeh/vs_bokeh_screenquad.sc new file mode 100644 index 00000000000..5b137dc5c3b --- /dev/null +++ b/3rdparty/bgfx/examples/45-bokeh/vs_bokeh_screenquad.sc @@ -0,0 +1,10 @@ +$input a_position, a_texcoord0 +$output v_texcoord0 + +#include "../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position.xyz, 1.0)); + v_texcoord0 = a_texcoord0; +} diff --git a/3rdparty/bgfx/examples/46-fsr/app.cpp b/3rdparty/bgfx/examples/46-fsr/app.cpp new file mode 100644 index 00000000000..4049d3e1e7e --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/app.cpp @@ -0,0 +1,858 @@ +/* + * Copyright 2021 Richard Schubert. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + * + * AMD FidelityFX Super Resolution 1.0 (FSR) + * Based on https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/sample/ + */ + +#include <common.h> +#include <camera.h> +#include <bgfx_utils.h> +#include <imgui/imgui.h> +#include <bx/rng.h> +#include <bx/os.h> + +#include "fsr.h" + +namespace +{ + +#define FRAMEBUFFER_RT_COLOR 0 +#define FRAMEBUFFER_RT_DEPTH 1 +#define FRAMEBUFFER_RENDER_TARGETS 2 + +enum Meshes +{ + MeshCube = 0, + MeshHollowCube, +}; + +static const char *s_meshPaths[] = +{ + "meshes/cube.bin", + "meshes/hollowcube.bin", +}; + +static const float s_meshScale[] = +{ + 0.45f, + 0.30f, +}; + +// Vertex decl for our screen space quad (used in deferred rendering) +struct PosTexCoord0Vertex +{ + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + } + + static bgfx::VertexLayout ms_layout; +}; + +bgfx::VertexLayout PosTexCoord0Vertex::ms_layout; + +void screenSpaceTriangle(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f, float _offsetX = 0.0f, float _offsetY = 0.0f) +{ + if (3 == bgfx::getAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_layout) ) + { + bgfx::TransientVertexBuffer vb; + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_layout); + PosTexCoord0Vertex *vertex = (PosTexCoord0Vertex *)vb.data; + + const float minx = -_width - _offsetX; + const float maxx = _width - _offsetX; + const float miny = 0.0f - _offsetY; + const float maxy = _height * 2.0f - _offsetY; + + const float texelHalfW = _texelHalf / _textureWidth; + const float texelHalfH = _texelHalf / _textureHeight; + const float minu = -1.0f + texelHalfW; + const float maxu = 1.0f + texelHalfW; + + const float zz = 0.0f; + + float minv = texelHalfH; + float maxv = 2.0f + texelHalfH; + + if (_originBottomLeft) + { + float temp = minv; + minv = maxv; + maxv = temp; + + minv -= 1.0f; + maxv -= 1.0f; + } + + vertex[0].m_x = minx; + vertex[0].m_y = miny; + vertex[0].m_z = zz; + vertex[0].m_u = minu; + vertex[0].m_v = minv; + + vertex[1].m_x = maxx; + vertex[1].m_y = miny; + vertex[1].m_z = zz; + vertex[1].m_u = maxu; + vertex[1].m_v = minv; + + vertex[2].m_x = maxx; + vertex[2].m_y = maxy; + vertex[2].m_z = zz; + vertex[2].m_u = maxu; + vertex[2].m_v = maxv; + + bgfx::setVertexBuffer(0, &vb); + } +} + +struct ModelUniforms +{ + enum + { + NumVec4 = 2 + }; + + void init() + { + u_params = bgfx::createUniform("u_modelParams", bgfx::UniformType::Vec4, NumVec4); + }; + + void submit() const + { + bgfx::setUniform(u_params, m_params, NumVec4); + }; + + void destroy() + { + bgfx::destroy(u_params); + } + + union + { + struct + { + /* 0 */ struct + { + float m_color[3]; + float m_unused0; + }; + /* 1 */ struct + { + float m_lightPosition[3]; + float m_unused1; + }; + }; + + float m_params[NumVec4 * 4]; + }; + + bgfx::UniformHandle u_params; +}; + +struct AppState +{ + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + entry::MouseState m_mouseState; + + // Resource handles + bgfx::ProgramHandle m_forwardProgram; + bgfx::ProgramHandle m_gridProgram; + bgfx::ProgramHandle m_copyLinearToGammaProgram; + + // Shader uniforms + ModelUniforms m_modelUniforms; + + // Uniforms to identify texture samplers + bgfx::UniformHandle s_albedo; + bgfx::UniformHandle s_color; + bgfx::UniformHandle s_normal; + + bgfx::FrameBufferHandle m_frameBuffer; + bgfx::TextureHandle m_frameBufferTex[FRAMEBUFFER_RENDER_TARGETS]; + + Mesh *m_meshes[BX_COUNTOF(s_meshPaths)]; + bgfx::TextureHandle m_groundTexture; + bgfx::TextureHandle m_normalTexture; + + uint32_t m_currFrame{UINT32_MAX}; + float m_lightRotation = 0.0f; + float m_texelHalf = 0.0f; + float m_fovY = 60.0f; + float m_animationTime = 0.0f; + + float m_view[16]; + float m_proj[16]; + int32_t m_size[2]; + + // UI parameters + bool m_renderNativeResolution = false; + bool m_animateScene = false; + int32_t m_antiAliasingSetting = 2; + + Fsr m_fsr; +}; + +struct RenderTarget +{ + void init(uint32_t _width, uint32_t _height, bgfx::TextureFormat::Enum _format, uint64_t _flags) + { + m_width = _width; + m_height = _height; + m_texture = bgfx::createTexture2D(uint16_t(_width), uint16_t(_height), false, 1, _format, _flags); + m_buffer = bgfx::createFrameBuffer(1, &m_texture, true); + } + + void destroy() + { + // also responsible for destroying texture + bgfx::destroy(m_buffer); + } + + uint32_t m_width; + uint32_t m_height; + bgfx::TextureHandle m_texture; + bgfx::FrameBufferHandle m_buffer; +}; + +struct MagnifierWidget +{ + void init(uint32_t _width, uint32_t _height) + { + m_content.init(_width, _height, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT | BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT); + createWidgetTexture(_width + 6, _height + 6); + } + + void destroy() + { + bgfx::destroy(m_widgetTexture); + m_content.destroy(); + } + + void setPosition(float x, float y) + { + m_position.x = x; + m_position.y = y; + } + + void drawToScreen(bgfx::ViewId &view, AppState const &state) + { + float invScreenScaleX = 1.0f / float(state.m_width); + float invScreenScaleY = 1.0f / float(state.m_height); + float scaleX = m_widgetWidth * invScreenScaleX; + float scaleY = m_widgetHeight * invScreenScaleY; + float offsetX = -bx::min(bx::max(m_position.x - m_widgetWidth * 0.5f, -3.0f), float(state.m_width - m_widgetWidth + 3) ) * invScreenScaleX; + float offsetY = -bx::min(bx::max(m_position.y - m_widgetHeight * 0.5f, -3.0f), float(state.m_height - m_widgetHeight + 3) ) * invScreenScaleY; + + bgfx::setState(0 | BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A | BGFX_STATE_DEPTH_TEST_ALWAYS | BGFX_STATE_BLEND_ALPHA); + bgfx::setTexture(0, state.s_color, m_widgetTexture); + screenSpaceTriangle(float(m_widgetWidth), float(m_widgetHeight), state.m_texelHalf, false, scaleX, scaleY, offsetX, offsetY); + bgfx::submit(view, state.m_copyLinearToGammaProgram); + } + + void updateContent(bgfx::ViewId &view, AppState const &state, const bgfx::Caps *caps, bgfx::TextureHandle srcTexture) + { + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, caps->homogeneousDepth); + { + // clear out transform stack + float identity[16]; + bx::mtxIdentity(identity); + bgfx::setTransform(identity); + } + + const float verticalPos = caps->originBottomLeft ? state.m_height - m_position.y : m_position.y; + const float invMagScaleX = 1.0f / float(m_content.m_width); + const float invMagScaleY = 1.0f / float(m_content.m_height); + const float scaleX = state.m_width * invMagScaleX; + const float scaleY = state.m_height * invMagScaleY; + const float offsetX = bx::min(bx::max(m_position.x - m_content.m_width * 0.5f, 0.0f), float(state.m_width - m_content.m_width) ) * scaleX / state.m_width; + const float offsetY = bx::min(bx::max(verticalPos - m_content.m_height * 0.5f, 0.0f), float(state.m_height - m_content.m_height) ) * scaleY / state.m_height; + + bgfx::setViewName(view, "magnifier"); + bgfx::setViewRect(view, 0, 0, uint16_t(m_content.m_width), uint16_t(m_content.m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, m_content.m_buffer); + bgfx::setState(0 | BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A); + bgfx::setTexture(0, state.s_color, srcTexture, BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP); + screenSpaceTriangle(float(state.m_width), float(state.m_height), state.m_texelHalf, false, scaleX, scaleY, offsetX, offsetY); + bgfx::submit(view, state.m_copyLinearToGammaProgram); + ++view; + } + + uint32_t m_widgetWidth{0}; + uint32_t m_widgetHeight{0}; + bgfx::TextureHandle m_widgetTexture; + RenderTarget m_content; + ImVec2 m_position; + +private: + void createWidgetTexture(uint32_t _width, uint32_t _height) + { + const bgfx::Memory *mem = bgfx::alloc(_width * _height * sizeof(uint32_t) ); + + uint32_t *pixels = (uint32_t*)mem->data; + bx::memSet(pixels, 0, mem->size); + + const uint32_t white = 0xFFFFFFFF; + const uint32_t black = 0xFF000000; + + const uint32_t y0 = 1; + const uint32_t y1 = _height - 3; + + for (uint32_t x = 0; x < _width - 4; x++) + { + pixels[(y0 + 0) * _width + x + 1] = white; + pixels[(y0 + 1) * _width + x + 2] = black; + pixels[(y1 + 0) * _width + x + 1] = white; + pixels[(y1 + 1) * _width + x + 2] = black; + } + + const uint32_t x0 = 1; + const uint32_t x1 = _width - 3; + + for (uint32_t y = 0; y < _height - 3; y++) + { + pixels[(y + 1) * _width + x0 + 0] = white; + pixels[(y + 2) * _width + x0 + 1] = black; + pixels[(y + 1) * _width + x1 + 0] = white; + pixels[(y + 2) * _width + x1 + 1] = black; + } + + pixels[(y1 + 0) * _width + 2] = white; + + m_widgetWidth = _width; + m_widgetHeight = _height; + m_widgetTexture = bgfx::createTexture2D( + uint16_t(_width) + , uint16_t(_height) + , false + , 1 + , bgfx::TextureFormat::BGRA8 + , BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP + , mem + ); + } +}; + +class ExampleFsr : public entry::AppI +{ +public: + ExampleFsr(const char *_name, const char *_description) + : entry::AppI(_name, _description) + { + } + + void init(int32_t _argc, const char *const *_argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_state.m_width = _width; + m_state.m_height = _height; + m_state.m_debug = BGFX_DEBUG_NONE; + m_state.m_reset = 0 + | BGFX_RESET_VSYNC + | BGFX_RESET_MAXANISOTROPY + ; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.resolution.width = m_state.m_width; + init.resolution.height = m_state.m_height; + init.resolution.reset = m_state.m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_state.m_debug); + + // Create uniforms for screen passes and models + m_state.m_modelUniforms.init(); + + // Create texture sampler uniforms (used when we bind textures) + m_state.s_albedo = bgfx::createUniform("s_albedo", bgfx::UniformType::Sampler); + m_state.s_color = bgfx::createUniform("s_color", bgfx::UniformType::Sampler); + m_state.s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Sampler); + + // Create program from shaders. + m_state.m_forwardProgram = loadProgram("vs_fsr_forward", "fs_fsr_forward"); + m_state.m_gridProgram = loadProgram("vs_fsr_forward", "fs_fsr_forward_grid"); + m_state.m_copyLinearToGammaProgram = loadProgram("vs_fsr_screenquad", "fs_fsr_copy_linear_to_gamma"); + + // Load some meshes + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + m_state.m_meshes[ii] = meshLoad(s_meshPaths[ii]); + } + + m_state.m_groundTexture = loadTexture("textures/fieldstone-rgba.dds"); + m_state.m_normalTexture = loadTexture("textures/fieldstone-n.dds"); + + createFramebuffers(); + + // Vertex decl + PosTexCoord0Vertex::init(); + + // Init camera + cameraCreate(); + cameraSetPosition({-10.0f, 2.5f, -0.0f}); + cameraSetVerticalAngle(-0.2f); + cameraSetHorizontalAngle(0.8f); + + // Init "prev" matrices, will be same for first frame + cameraGetViewMtx(m_state.m_view); + bx::mtxProj(m_state.m_proj, m_state.m_fovY, float(m_state.m_size[0]) / float(m_state.m_size[1]), 0.01f, 100.0f, bgfx::getCaps()->homogeneousDepth); + + // Get renderer capabilities info. + const bgfx::RendererType::Enum renderer = bgfx::getRendererType(); + m_state.m_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f; + + const uint32_t magnifierSize = 32; + m_magnifierWidget.init(magnifierSize, magnifierSize); + m_magnifierWidget.setPosition(m_state.m_width * 0.5f, m_state.m_height * 0.5f); + + imguiCreate(); + + m_state.m_fsr.init(_width, _height); + } + + int32_t shutdown() override + { + m_state.m_fsr.destroy(); + + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + meshUnload(m_state.m_meshes[ii]); + } + + bgfx::destroy(m_state.m_normalTexture); + bgfx::destroy(m_state.m_groundTexture); + + bgfx::destroy(m_state.m_forwardProgram); + bgfx::destroy(m_state.m_gridProgram); + bgfx::destroy(m_state.m_copyLinearToGammaProgram); + + m_state.m_modelUniforms.destroy(); + + m_magnifierWidget.destroy(); + + bgfx::destroy(m_state.s_albedo); + bgfx::destroy(m_state.s_color); + bgfx::destroy(m_state.s_normal); + + destroyFramebuffers(); + + cameraDestroy(); + + imguiDestroy(); + + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_state.m_width, m_state.m_height, m_state.m_debug, m_state.m_reset, &m_state.m_mouseState) ) + { + // skip processing when minimized, otherwise crashing + if (0 == m_state.m_width + || 0 == m_state.m_height) + { + return true; + } + + if (m_state.m_mouseState.m_buttons[entry::MouseButton::Left] + && !ImGui::MouseOverArea() ) + { + m_magnifierWidget.setPosition( + float(m_state.m_mouseState.m_mx) + , float(m_state.m_mouseState.m_my) + ); + } + + // Update frame timer + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency() ); + const float deltaTime = float(frameTime / freq); + const bgfx::Caps* caps = bgfx::getCaps(); + + if (m_state.m_size[0] != (int32_t)m_state.m_width || m_state.m_size[1] != (int32_t)m_state.m_height) + { + resize(); + } + + // update animation time + const float rotationSpeed = 0.25f; + if (m_state.m_animateScene) + { + m_state.m_animationTime += deltaTime * rotationSpeed; + if (bx::kPi2 < m_state.m_animationTime) + { + m_state.m_animationTime -= bx::kPi2; + } + } + + // Update camera + cameraUpdate(deltaTime * 0.15f, m_state.m_mouseState, ImGui::MouseOverArea() ); + + cameraGetViewMtx(m_state.m_view); + + updateUniforms(); + + bx::mtxProj( + m_state.m_proj + , m_state.m_fovY + , float(m_state.m_size[0]) / float(m_state.m_size[1]) + , 0.01f + , 100.0f + , caps->homogeneousDepth + ); + + bgfx::ViewId view = 0; + + // Clear full frame buffer to avoid sampling into garbage during FSR pass + if (!m_state.m_renderNativeResolution) + { + bgfx::setViewRect(view, 0, 0, (uint16_t)m_state.m_width, (uint16_t)m_state.m_height); + bgfx::setViewClear(view, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x00000000, 1.0f, 0); + bgfx::setViewFrameBuffer(view, m_state.m_frameBuffer); + bgfx::touch(view); + + ++view; + } + + // Draw models into scene + { + bgfx::setViewName(view, "forward scene"); + bgfx::setViewClear(view, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x7fb8ffff, 1.0f, 0); + + const float viewScale = m_state.m_renderNativeResolution + ? 1.0f + : 1.0f / m_state.m_fsr.m_config.m_superSamplingFactor + ; + const uint16_t viewRectWidth = uint16_t(bx::ceil(m_state.m_size[0] * viewScale) ); + const uint16_t viewRectHeight = uint16_t(bx::ceil(m_state.m_size[1] * viewScale) ); + const uint16_t viewRectY = uint16_t(caps->originBottomLeft ? m_state.m_size[1] - viewRectHeight : 0); + + bgfx::setViewRect(view, 0, viewRectY, viewRectWidth, viewRectHeight); + bgfx::setViewTransform(view, m_state.m_view, m_state.m_proj); + bgfx::setViewFrameBuffer(view, m_state.m_frameBuffer); + + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + ); + + drawAllModels(view, m_state.m_forwardProgram, m_state.m_modelUniforms); + + ++view; + } + + // optionally run FSR + if (!m_state.m_renderNativeResolution) + { + view = m_state.m_fsr.computeFsr(view, m_state.m_frameBufferTex[FRAMEBUFFER_RT_COLOR]); + } + + // render result to screen + { + bgfx::TextureHandle srcTexture = m_state.m_frameBufferTex[FRAMEBUFFER_RT_COLOR]; + + if (!m_state.m_renderNativeResolution) + { + srcTexture = m_state.m_fsr.getResultTexture(); + } + + m_magnifierWidget.updateContent(view, m_state, caps, srcTexture); + + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, caps->homogeneousDepth); + + bgfx::setViewName(view, "display"); + bgfx::setViewClear(view, BGFX_CLEAR_NONE, 0, 1.0f, 0); + + bgfx::setViewRect(view, 0, 0, uint16_t(m_state.m_width), uint16_t(m_state.m_height) ); + bgfx::setViewTransform(view, NULL, orthoProj); + bgfx::setViewFrameBuffer(view, BGFX_INVALID_HANDLE); + bgfx::setState(0 | BGFX_STATE_WRITE_RGB | BGFX_STATE_WRITE_A); + bgfx::setTexture(0, m_state.s_color, srcTexture, BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP); + screenSpaceTriangle(float(m_state.m_width), float(m_state.m_height), m_state.m_texelHalf, caps->originBottomLeft); + bgfx::submit(view, m_state.m_copyLinearToGammaProgram); + } + + m_magnifierWidget.drawToScreen(view, m_state); + + ++view; + + // Draw UI + imguiBeginFrame(m_state.m_mouseState.m_mx, m_state.m_mouseState.m_my, (m_state.m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) | (m_state.m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) | (m_state.m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0), m_state.m_mouseState.m_mz, uint16_t(m_state.m_width), uint16_t(m_state.m_height) ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos(ImVec2(m_state.m_width - m_state.m_width / 4.0f - 10.0f, 10.0f), ImGuiCond_FirstUseEver); + ImGui::SetNextWindowSize(ImVec2(m_state.m_width / 4.0f, m_state.m_height / 1.2f), ImGuiCond_FirstUseEver); + ImGui::Begin("Settings", NULL, 0); + ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.5f); + + const ImVec2 itemSize = ImGui::GetItemRectSize(); + + { + ImGui::Checkbox("Animate scene", &m_state.m_animateScene); + + if (ImGui::Combo("Antialiasing", &m_state.m_antiAliasingSetting, "none\0""4x\0""16x\0""\0") ) + { + resize(); + } + + ImGui::Checkbox("Render native resolution", &m_state.m_renderNativeResolution); + + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("Disable super sampling and FSR."); + } + + ImGui::Image(m_magnifierWidget.m_content.m_texture, ImVec2(itemSize.x * 0.94f, itemSize.x * 0.94f) ); + + if (!m_state.m_renderNativeResolution) + { + ImGui::SliderFloat("Super sampling", &m_state.m_fsr.m_config.m_superSamplingFactor, 1.0f, 2.0f); + + if (ImGui::IsItemHovered() ) + { + ImGui::BeginTooltip(); + ImGui::Text("2.0 means the scene is rendered at half window resolution."); + ImGui::Text("1.0 means the scene is rendered at native window resolution."); + ImGui::EndTooltip(); + } + + ImGui::Separator(); + + if (m_state.m_fsr.supports16BitPrecision() ) + { + ImGui::Checkbox("Use 16 Bit", &m_state.m_fsr.m_config.m_fsr16Bit); + + if (ImGui::IsItemHovered() ) + { + ImGui::BeginTooltip(); + ImGui::Text("For better performance and less memory consumption use 16 Bit precision."); + ImGui::Text("If disabled use 32 Bit per channel precision for FSR which works better on older hardware."); + ImGui::Text("FSR in 16 Bit precision is also prone to be broken in Direct3D11, Direct3D12 works though."); + ImGui::EndTooltip(); + } + } + + ImGui::Checkbox("Apply FSR", &m_state.m_fsr.m_config.m_applyFsr); + + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("Compare between FSR and bilinear interpolation of source image."); + } + + if (m_state.m_fsr.m_config.m_applyFsr) + { + ImGui::Checkbox("Apply FSR sharpening", &m_state.m_fsr.m_config.m_applyFsrRcas); + + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("Apply the FSR RCAS sharpening pass."); + } + + if (m_state.m_fsr.m_config.m_applyFsrRcas) + { + ImGui::SliderFloat("Sharpening attenuation", &m_state.m_fsr.m_config.m_rcasAttenuation, 0.01f, 2.0f); + + if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("Lower value means sharper."); + } + } + } + } + } + + ImGui::End(); + + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_state.m_currFrame = bgfx::frame(); + + return true; + } + + return false; + } + + void drawAllModels(bgfx::ViewId _pass, bgfx::ProgramHandle _program, ModelUniforms &_uniforms) + { + const int32_t width = 6; + const int32_t length = 20; + + float c0[] = { 235.0f / 255.0f, 126.0f / 255.0f, 30.0f / 255.0f}; // orange + float c1[] = { 235.0f / 255.0f, 146.0f / 255.0f, 251.0f / 255.0f}; // purple + float c2[] = { 199.0f / 255.0f, 0.0f / 255.0f, 57.0f / 255.0f}; // pink + + for (int32_t zz = 0; zz < length; ++zz) + { + // make a color gradient, nothing special about this for example + float *ca = c0; + float *cb = c1; + float lerpVal = float(zz) / float(length); + + if (0.5f <= lerpVal) + { + ca = c1; + cb = c2; + } + lerpVal = bx::fract(2.0f * lerpVal); + + float r = bx::lerp(ca[0], cb[0], lerpVal); + float g = bx::lerp(ca[1], cb[1], lerpVal); + float b = bx::lerp(ca[2], cb[2], lerpVal); + + for (int32_t xx = 0; xx < width; ++xx) + { + const float angle = m_state.m_animationTime + float(zz) * (bx::kPi2 / length) + float(xx) * (bx::kPiHalf / width); + + const float posX = 2.0f * xx - width + 1.0f; + const float posY = bx::sin(angle); + const float posZ = 2.0f * zz - length + 1.0f; + + const float scale = s_meshScale[MeshHollowCube]; + float mtx[16]; + bx::mtxSRT(mtx, scale, scale, scale, 0.0f, 0.0f, 0.0f, posX, posY, posZ); + + bgfx::setTexture(0, m_state.s_albedo, m_state.m_groundTexture); + bgfx::setTexture(1, m_state.s_normal, m_state.m_normalTexture); + _uniforms.m_color[0] = r; + _uniforms.m_color[1] = g; + _uniforms.m_color[2] = b; + _uniforms.submit(); + + meshSubmit(m_state.m_meshes[MeshHollowCube], _pass, _program, mtx); + } + } + + // draw box as ground plane + { + const float posY = -2.0f; + const float scale = length; + float mtx[16]; + bx::mtxSRT(mtx, scale, scale, scale, 0.0f, 0.0f, 0.0f, 0.0f, -scale + posY, 0.0f); + + _uniforms.m_color[0] = 0.5f; + _uniforms.m_color[1] = 0.5f; + _uniforms.m_color[2] = 0.5f; + _uniforms.submit(); + + meshSubmit(m_state.m_meshes[MeshCube], _pass, m_state.m_gridProgram, mtx); + } + } + + void resize() + { + destroyFramebuffers(); + createFramebuffers(); + m_state.m_fsr.resize(m_state.m_width, m_state.m_height); + } + + void createFramebuffers() + { + m_state.m_size[0] = m_state.m_width; + m_state.m_size[1] = m_state.m_height; + + constexpr uint64_t msaaFlags[] = + { + BGFX_TEXTURE_NONE, + BGFX_TEXTURE_RT_MSAA_X4, + BGFX_TEXTURE_RT_MSAA_X16, + }; + + const uint64_t msaa = msaaFlags[m_state.m_antiAliasingSetting]; + const uint64_t colorFlags = 0 + | BGFX_TEXTURE_RT + | BGFX_SAMPLER_U_CLAMP + | BGFX_SAMPLER_V_CLAMP + | msaa + ; + const uint64_t depthFlags = 0 + | BGFX_TEXTURE_RT_WRITE_ONLY + | msaa + ; + + m_state.m_frameBufferTex[FRAMEBUFFER_RT_COLOR] = bgfx::createTexture2D( + uint16_t(m_state.m_size[0]) + , uint16_t(m_state.m_size[1]) + , false + , 1 + , bgfx::TextureFormat::RGBA16F + , colorFlags + ); + + m_state.m_frameBufferTex[FRAMEBUFFER_RT_DEPTH] = bgfx::createTexture2D( + uint16_t(m_state.m_size[0]) + , uint16_t(m_state.m_size[1]) + , false + , 1 + , bgfx::TextureFormat::D32F + , depthFlags + ); + + m_state.m_frameBuffer = bgfx::createFrameBuffer( + BX_COUNTOF(m_state.m_frameBufferTex) + , m_state.m_frameBufferTex + , true + ); + } + + // all buffers set to destroy their textures + void destroyFramebuffers() + { + bgfx::destroy(m_state.m_frameBuffer); + } + + void updateUniforms() + { + m_state.m_modelUniforms.m_lightPosition[0] = 0.0f; + m_state.m_modelUniforms.m_lightPosition[1] = 6.0f; + m_state.m_modelUniforms.m_lightPosition[2] = 10.0f; + } + + AppState m_state; + MagnifierWidget m_magnifierWidget; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExampleFsr + , "46-fsr" + , "AMD FidelityFX Super Resolution (FSR)\n" + "\n" + "For an optimal FSR result high quality antialiasing for the low resolution source image and negative texture LOD bias is recommended." + ); diff --git a/3rdparty/bgfx/examples/46-fsr/cs_fsr.h b/3rdparty/bgfx/examples/46-fsr/cs_fsr.h new file mode 100644 index 00000000000..928ec47ed09 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/cs_fsr.h @@ -0,0 +1,127 @@ +/* +* Copyright 2021 Richard Schubert. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +* +* AMD FidelityFX Super Resolution 1.0 (FSR) +* Port from https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/sample/src/VK/FSR_Pass.glsl +*/ + +#include "bgfx_compute.sh" + +uniform vec4 u_params[3]; + +#define ViewportSizeRcasAttenuation u_params[0] +#define SrcSize u_params[1] +#define DstSize u_params[2] + +#define A_GPU 1 + +#if BGFX_SHADER_LANGUAGE_GLSL +#define A_GLSL 1 +#define A_SKIP_EXT 1 +#else +#define A_HLSL 1 +#endif // BGFX_SHADER_LANGUAGE_GLSL + +#if SAMPLE_SLOW_FALLBACK + #include "ffx_a.h" + SAMPLER2D(InputTexture, 0); + IMAGE2D_WR(OutputTexture, rgba32f, 1); + #if SAMPLE_EASU + #define FSR_EASU_F 1 + AF4 FsrEasuRF(AF2 p) { AF4 res = textureGather(InputTexture, p, 0); return res; } + AF4 FsrEasuGF(AF2 p) { AF4 res = textureGather(InputTexture, p, 1); return res; } + AF4 FsrEasuBF(AF2 p) { AF4 res = textureGather(InputTexture, p, 2); return res; } + #endif + #if SAMPLE_RCAS + #define FSR_RCAS_F + AF4 FsrRcasLoadF(ASU2 p) { return texelFetch(InputTexture, ASU2(p), 0); } + void FsrRcasInputF(inout AF1 r, inout AF1 g, inout AF1 b) {} + #endif +#else + #define A_HALF + #include "ffx_a.h" + SAMPLER2D(InputTexture, 0); + IMAGE2D_WR(OutputTexture, rgba16f, 1); + #if SAMPLE_EASU + #define FSR_EASU_H 1 + AH4 FsrEasuRH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 0)); return res; } + AH4 FsrEasuGH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 1)); return res; } + AH4 FsrEasuBH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 2)); return res; } + #endif + #if SAMPLE_RCAS + #define FSR_RCAS_H + AH4 FsrRcasLoadH(ASW2 p) { return AH4(texelFetch(InputTexture, ASU2(p), 0)); } + void FsrRcasInputH(inout AH1 r,inout AH1 g,inout AH1 b){} + #endif +#endif + +#include "ffx_fsr1.h" + +void CurrFilter(AU2 pos, AU4 Const0, AU4 Const1, AU4 Const2, AU4 Const3, AU4 Sample) +{ +#if SAMPLE_BILINEAR + AF2 pp = (AF2(pos) * AF2_AU2(Const0.xy) + AF2_AU2(Const0.zw)) * AF2_AU2(Const1.xy) + AF2(0.5, -0.5) * AF2_AU2(Const1.zw); + imageStore(OutputTexture, ASU2(pos), texture2DLod(InputTexture, pp, 0.0)); +#endif +#if SAMPLE_EASU + #if SAMPLE_SLOW_FALLBACK + AF3 c; + FsrEasuF(c, pos, Const0, Const1, Const2, Const3); + if( Sample.x == 1 ) + c *= c; + imageStore(OutputTexture, ASU2(pos), AF4(c, 1)); + #else + AH3 c; + FsrEasuH(c, pos, Const0, Const1, Const2, Const3); + if( Sample.x == 1 ) + c *= c; + imageStore(OutputTexture, ASU2(pos), AH4(c, 1)); + #endif +#endif +#if SAMPLE_RCAS + #if SAMPLE_SLOW_FALLBACK + AF3 c; + FsrRcasF(c.r, c.g, c.b, pos, Const0); + if( Sample.x == 1 ) + c *= c; + imageStore(OutputTexture, ASU2(pos), AF4(c, 1)); + #else + AH3 c; + FsrRcasH(c.r, c.g, c.b, pos, Const0); + if( Sample.x == 1 ) + c *= c; + imageStore(OutputTexture, ASU2(pos), AH4(c, 1)); + #endif +#endif +} + +NUM_THREADS(64, 1, 1) +void main() +{ + AU4 Const0, Const1, Const2, Const3, Sample; + + // We compute these constants on GPU because bgfx does not support uniform type uint. +#if SAMPLE_EASU || SAMPLE_BILINEAR + FsrEasuCon(Const0, Const1, Const2, Const3, + ViewportSizeRcasAttenuation.x, ViewportSizeRcasAttenuation.y, // Viewport size (top left aligned) in the input image which is to be scaled. + SrcSize.x, SrcSize.y, // The size of the input image. + DstSize.x, DstSize.y); // The output resolution. + Sample.x = 0; // no HDR output +#endif +#if SAMPLE_RCAS + FsrRcasCon(Const0, ViewportSizeRcasAttenuation.z); + Sample.x = 0; // no HDR output +#endif + + // Do remapping of local xy in workgroup for a more PS-like swizzle pattern. + AU2 gxy = ARmp8x8(gl_LocalInvocationID.x) + AU2(gl_WorkGroupID.x << 4u, gl_WorkGroupID.y << 4u); + CurrFilter(gxy, Const0, Const1, Const2, Const3, Sample); + gxy.x += 8u; + CurrFilter(gxy, Const0, Const1, Const2, Const3, Sample); + gxy.y += 8u; + CurrFilter(gxy, Const0, Const1, Const2, Const3, Sample); + gxy.x -= 8u; + CurrFilter(gxy, Const0, Const1, Const2, Const3, Sample); +} + diff --git a/3rdparty/bgfx/examples/46-fsr/cs_fsr_bilinear_16.sc b/3rdparty/bgfx/examples/46-fsr/cs_fsr_bilinear_16.sc new file mode 100644 index 00000000000..c6ca756cf5d --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/cs_fsr_bilinear_16.sc @@ -0,0 +1,3 @@ +#define SAMPLE_BILINEAR 1 + +#include "cs_fsr.h" diff --git a/3rdparty/bgfx/examples/46-fsr/cs_fsr_bilinear_32.sc b/3rdparty/bgfx/examples/46-fsr/cs_fsr_bilinear_32.sc new file mode 100644 index 00000000000..c803a9ff985 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/cs_fsr_bilinear_32.sc @@ -0,0 +1,4 @@ +#define SAMPLE_BILINEAR 1 +#define SAMPLE_SLOW_FALLBACK 1 + +#include "cs_fsr.h" diff --git a/3rdparty/bgfx/examples/46-fsr/cs_fsr_easu_16.sc b/3rdparty/bgfx/examples/46-fsr/cs_fsr_easu_16.sc new file mode 100644 index 00000000000..8dc730f7f1b --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/cs_fsr_easu_16.sc @@ -0,0 +1,3 @@ +#define SAMPLE_EASU 1 + +#include "cs_fsr.h" diff --git a/3rdparty/bgfx/examples/46-fsr/cs_fsr_easu_32.sc b/3rdparty/bgfx/examples/46-fsr/cs_fsr_easu_32.sc new file mode 100644 index 00000000000..bb6c763076a --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/cs_fsr_easu_32.sc @@ -0,0 +1,4 @@ +#define SAMPLE_SLOW_FALLBACK 1 +#define SAMPLE_EASU 1 + +#include "cs_fsr.h" diff --git a/3rdparty/bgfx/examples/46-fsr/cs_fsr_rcas_16.sc b/3rdparty/bgfx/examples/46-fsr/cs_fsr_rcas_16.sc new file mode 100644 index 00000000000..c54645aaafe --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/cs_fsr_rcas_16.sc @@ -0,0 +1,3 @@ +#define SAMPLE_RCAS 1 + +#include "cs_fsr.h" diff --git a/3rdparty/bgfx/examples/46-fsr/cs_fsr_rcas_32.sc b/3rdparty/bgfx/examples/46-fsr/cs_fsr_rcas_32.sc new file mode 100644 index 00000000000..52d4693f7de --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/cs_fsr_rcas_32.sc @@ -0,0 +1,4 @@ +#define SAMPLE_SLOW_FALLBACK 1 +#define SAMPLE_RCAS 1 + +#include "cs_fsr.h" diff --git a/3rdparty/bgfx/examples/46-fsr/ffx_a.h b/3rdparty/bgfx/examples/46-fsr/ffx_a.h new file mode 100644 index 00000000000..0efcc8d8109 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/ffx_a.h @@ -0,0 +1,2637 @@ +//============================================================================================================================== +// +// [A] SHADER PORTABILITY 1.20210629 +// +//============================================================================================================================== +// FidelityFX Super Resolution Sample +// +// Copyright (c) 2021 Advanced Micro Devices, Inc. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +//------------------------------------------------------------------------------------------------------------------------------ +// MIT LICENSE +// =========== +// Copyright (c) 2014 Michal Drobot (for concepts used in "FLOAT APPROXIMATIONS"). +// ----------- +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// ----------- +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +// Software. +// ----------- +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +//------------------------------------------------------------------------------------------------------------------------------ +// ABOUT +// ===== +// Common central point for high-level shading language and C portability for various shader headers. +//------------------------------------------------------------------------------------------------------------------------------ +// DEFINES +// ======= +// A_CPU ..... Include the CPU related code. +// A_GPU ..... Include the GPU related code. +// A_GLSL .... Using GLSL. +// A_HLSL .... Using HLSL. +// A_HLSL_6_2 Using HLSL 6.2 with new 'uint16_t' and related types (requires '-enable-16bit-types'). +// A_NO_16_BIT_CAST Don't use instructions that are not available in SPIR-V (needed for running A_HLSL_6_2 on Vulkan) +// A_GCC ..... Using a GCC compatible compiler (else assume MSVC compatible compiler by default). +// ======= +// A_BYTE .... Support 8-bit integer. +// A_HALF .... Support 16-bit integer and floating point. +// A_LONG .... Support 64-bit integer. +// A_DUBL .... Support 64-bit floating point. +// ======= +// A_WAVE .... Support wave-wide operations. +//------------------------------------------------------------------------------------------------------------------------------ +// To get #include "ffx_a.h" working in GLSL use '#extension GL_GOOGLE_include_directive:require'. +//------------------------------------------------------------------------------------------------------------------------------ +// SIMPLIFIED TYPE SYSTEM +// ====================== +// - All ints will be unsigned with exception of when signed is required. +// - Type naming simplified and shortened "A<type><#components>", +// - H = 16-bit float (half) +// - F = 32-bit float (float) +// - D = 64-bit float (double) +// - P = 1-bit integer (predicate, not using bool because 'B' is used for byte) +// - B = 8-bit integer (byte) +// - W = 16-bit integer (word) +// - U = 32-bit integer (unsigned) +// - L = 64-bit integer (long) +// - Using "AS<type><#components>" for signed when required. +//------------------------------------------------------------------------------------------------------------------------------ +// TODO +// ==== +// - Make sure 'ALerp*(a,b,m)' does 'b*m+(-a*m+a)' (2 ops). +//------------------------------------------------------------------------------------------------------------------------------ +// CHANGE LOG +// ========== +// 20200914 - Expanded wave ops and prx code. +// 20200713 - Added [ZOL] section, fixed serious bugs in sRGB and Rec.709 color conversion code, etc. +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// COMMON +//============================================================================================================================== +#define A_2PI 6.28318530718 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// CPU +// +// +//============================================================================================================================== +#ifdef A_CPU + // Supporting user defined overrides. + #ifndef A_RESTRICT + #define A_RESTRICT __restrict + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifndef A_STATIC + #define A_STATIC static + #endif +//------------------------------------------------------------------------------------------------------------------------------ + // Same types across CPU and GPU. + // Predicate uses 32-bit integer (C friendly bool). + typedef uint32_t AP1; + typedef float AF1; + typedef double AD1; + typedef uint8_t AB1; + typedef uint16_t AW1; + typedef uint32_t AU1; + typedef uint64_t AL1; + typedef int8_t ASB1; + typedef int16_t ASW1; + typedef int32_t ASU1; + typedef int64_t ASL1; +//------------------------------------------------------------------------------------------------------------------------------ + #define AD1_(a) ((AD1)(a)) + #define AF1_(a) ((AF1)(a)) + #define AL1_(a) ((AL1)(a)) + #define AU1_(a) ((AU1)(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ASL1_(a) ((ASL1)(a)) + #define ASU1_(a) ((ASU1)(a)) +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AU1_AF1(AF1 a){union{AF1 f;AU1 u;}bits;bits.f=a;return bits.u;} +//------------------------------------------------------------------------------------------------------------------------------ + #define A_TRUE 1 + #define A_FALSE 0 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// CPU/GPU PORTING +// +//------------------------------------------------------------------------------------------------------------------------------ +// Get CPU and GPU to share all setup code, without duplicate code paths. +// This uses a lower-case prefix for special vector constructs. +// - In C restrict pointers are used. +// - In the shading language, in/inout/out arguments are used. +// This depends on the ability to access a vector value in both languages via array syntax (aka color[2]). +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR ARGUMENT/RETURN/INITIALIZATION PORTABILITY +//============================================================================================================================== + #define retAD2 AD1 *A_RESTRICT + #define retAD3 AD1 *A_RESTRICT + #define retAD4 AD1 *A_RESTRICT + #define retAF2 AF1 *A_RESTRICT + #define retAF3 AF1 *A_RESTRICT + #define retAF4 AF1 *A_RESTRICT + #define retAL2 AL1 *A_RESTRICT + #define retAL3 AL1 *A_RESTRICT + #define retAL4 AL1 *A_RESTRICT + #define retAU2 AU1 *A_RESTRICT + #define retAU3 AU1 *A_RESTRICT + #define retAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define inAD2 AD1 *A_RESTRICT + #define inAD3 AD1 *A_RESTRICT + #define inAD4 AD1 *A_RESTRICT + #define inAF2 AF1 *A_RESTRICT + #define inAF3 AF1 *A_RESTRICT + #define inAF4 AF1 *A_RESTRICT + #define inAL2 AL1 *A_RESTRICT + #define inAL3 AL1 *A_RESTRICT + #define inAL4 AL1 *A_RESTRICT + #define inAU2 AU1 *A_RESTRICT + #define inAU3 AU1 *A_RESTRICT + #define inAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define inoutAD2 AD1 *A_RESTRICT + #define inoutAD3 AD1 *A_RESTRICT + #define inoutAD4 AD1 *A_RESTRICT + #define inoutAF2 AF1 *A_RESTRICT + #define inoutAF3 AF1 *A_RESTRICT + #define inoutAF4 AF1 *A_RESTRICT + #define inoutAL2 AL1 *A_RESTRICT + #define inoutAL3 AL1 *A_RESTRICT + #define inoutAL4 AL1 *A_RESTRICT + #define inoutAU2 AU1 *A_RESTRICT + #define inoutAU3 AU1 *A_RESTRICT + #define inoutAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define outAD2 AD1 *A_RESTRICT + #define outAD3 AD1 *A_RESTRICT + #define outAD4 AD1 *A_RESTRICT + #define outAF2 AF1 *A_RESTRICT + #define outAF3 AF1 *A_RESTRICT + #define outAF4 AF1 *A_RESTRICT + #define outAL2 AL1 *A_RESTRICT + #define outAL3 AL1 *A_RESTRICT + #define outAL4 AL1 *A_RESTRICT + #define outAU2 AU1 *A_RESTRICT + #define outAU3 AU1 *A_RESTRICT + #define outAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define varAD2(x) AD1 x[2] + #define varAD3(x) AD1 x[3] + #define varAD4(x) AD1 x[4] + #define varAF2(x) AF1 x[2] + #define varAF3(x) AF1 x[3] + #define varAF4(x) AF1 x[4] + #define varAL2(x) AL1 x[2] + #define varAL3(x) AL1 x[3] + #define varAL4(x) AL1 x[4] + #define varAU2(x) AU1 x[2] + #define varAU3(x) AU1 x[3] + #define varAU4(x) AU1 x[4] +//------------------------------------------------------------------------------------------------------------------------------ + #define initAD2(x,y) {x,y} + #define initAD3(x,y,z) {x,y,z} + #define initAD4(x,y,z,w) {x,y,z,w} + #define initAF2(x,y) {x,y} + #define initAF3(x,y,z) {x,y,z} + #define initAF4(x,y,z,w) {x,y,z,w} + #define initAL2(x,y) {x,y} + #define initAL3(x,y,z) {x,y,z} + #define initAL4(x,y,z,w) {x,y,z,w} + #define initAU2(x,y) {x,y} + #define initAU3(x,y,z) {x,y,z} + #define initAU4(x,y,z,w) {x,y,z,w} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS +//------------------------------------------------------------------------------------------------------------------------------ +// TODO +// ==== +// - Replace transcendentals with manual versions. +//============================================================================================================================== + #ifdef A_GCC + A_STATIC AD1 AAbsD1(AD1 a){return __builtin_fabs(a);} + A_STATIC AF1 AAbsF1(AF1 a){return __builtin_fabsf(a);} + A_STATIC AU1 AAbsSU1(AU1 a){return AU1_(__builtin_abs(ASU1_(a)));} + A_STATIC AL1 AAbsSL1(AL1 a){return AL1_(__builtin_llabs(ASL1_(a)));} + #else + A_STATIC AD1 AAbsD1(AD1 a){return fabs(a);} + A_STATIC AF1 AAbsF1(AF1 a){return fabsf(a);} + A_STATIC AU1 AAbsSU1(AU1 a){return AU1_(abs(ASU1_(a)));} + A_STATIC AL1 AAbsSL1(AL1 a){return AL1_(labs((long)ASL1_(a)));} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ACosD1(AD1 a){return __builtin_cos(a);} + A_STATIC AF1 ACosF1(AF1 a){return __builtin_cosf(a);} + #else + A_STATIC AD1 ACosD1(AD1 a){return cos(a);} + A_STATIC AF1 ACosF1(AF1 a){return cosf(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ADotD2(inAD2 a,inAD2 b){return a[0]*b[0]+a[1]*b[1];} + A_STATIC AD1 ADotD3(inAD3 a,inAD3 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2];} + A_STATIC AD1 ADotD4(inAD4 a,inAD4 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];} + A_STATIC AF1 ADotF2(inAF2 a,inAF2 b){return a[0]*b[0]+a[1]*b[1];} + A_STATIC AF1 ADotF3(inAF3 a,inAF3 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2];} + A_STATIC AF1 ADotF4(inAF4 a,inAF4 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 AExp2D1(AD1 a){return __builtin_exp2(a);} + A_STATIC AF1 AExp2F1(AF1 a){return __builtin_exp2f(a);} + #else + A_STATIC AD1 AExp2D1(AD1 a){return exp2(a);} + A_STATIC AF1 AExp2F1(AF1 a){return exp2f(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 AFloorD1(AD1 a){return __builtin_floor(a);} + A_STATIC AF1 AFloorF1(AF1 a){return __builtin_floorf(a);} + #else + A_STATIC AD1 AFloorD1(AD1 a){return floor(a);} + A_STATIC AF1 AFloorF1(AF1 a){return floorf(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ALerpD1(AD1 a,AD1 b,AD1 c){return b*c+(-a*c+a);} + A_STATIC AF1 ALerpF1(AF1 a,AF1 b,AF1 c){return b*c+(-a*c+a);} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ALog2D1(AD1 a){return __builtin_log2(a);} + A_STATIC AF1 ALog2F1(AF1 a){return __builtin_log2f(a);} + #else + A_STATIC AD1 ALog2D1(AD1 a){return log2(a);} + A_STATIC AF1 ALog2F1(AF1 a){return log2f(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 AMaxD1(AD1 a,AD1 b){return a>b?a:b;} + A_STATIC AF1 AMaxF1(AF1 a,AF1 b){return a>b?a:b;} + A_STATIC AL1 AMaxL1(AL1 a,AL1 b){return a>b?a:b;} + A_STATIC AU1 AMaxU1(AU1 a,AU1 b){return a>b?a:b;} +//------------------------------------------------------------------------------------------------------------------------------ + // These follow the convention that A integer types don't have signage, until they are operated on. + A_STATIC AL1 AMaxSL1(AL1 a,AL1 b){return (ASL1_(a)>ASL1_(b))?a:b;} + A_STATIC AU1 AMaxSU1(AU1 a,AU1 b){return (ASU1_(a)>ASU1_(b))?a:b;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 AMinD1(AD1 a,AD1 b){return a<b?a:b;} + A_STATIC AF1 AMinF1(AF1 a,AF1 b){return a<b?a:b;} + A_STATIC AL1 AMinL1(AL1 a,AL1 b){return a<b?a:b;} + A_STATIC AU1 AMinU1(AU1 a,AU1 b){return a<b?a:b;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AL1 AMinSL1(AL1 a,AL1 b){return (ASL1_(a)<ASL1_(b))?a:b;} + A_STATIC AU1 AMinSU1(AU1 a,AU1 b){return (ASU1_(a)<ASU1_(b))?a:b;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ARcpD1(AD1 a){return 1.0/a;} + A_STATIC AF1 ARcpF1(AF1 a){return 1.0f/a;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AL1 AShrSL1(AL1 a,AL1 b){return AL1_(ASL1_(a)>>ASL1_(b));} + A_STATIC AU1 AShrSU1(AU1 a,AU1 b){return AU1_(ASU1_(a)>>ASU1_(b));} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ASinD1(AD1 a){return __builtin_sin(a);} + A_STATIC AF1 ASinF1(AF1 a){return __builtin_sinf(a);} + #else + A_STATIC AD1 ASinD1(AD1 a){return sin(a);} + A_STATIC AF1 ASinF1(AF1 a){return sinf(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ASqrtD1(AD1 a){return __builtin_sqrt(a);} + A_STATIC AF1 ASqrtF1(AF1 a){return __builtin_sqrtf(a);} + #else + A_STATIC AD1 ASqrtD1(AD1 a){return sqrt(a);} + A_STATIC AF1 ASqrtF1(AF1 a){return sqrtf(a);} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS - DEPENDENT +//============================================================================================================================== + A_STATIC AD1 AClampD1(AD1 x,AD1 n,AD1 m){return AMaxD1(n,AMinD1(x,m));} + A_STATIC AF1 AClampF1(AF1 x,AF1 n,AF1 m){return AMaxF1(n,AMinF1(x,m));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 AFractD1(AD1 a){return a-AFloorD1(a);} + A_STATIC AF1 AFractF1(AF1 a){return a-AFloorF1(a);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 APowD1(AD1 a,AD1 b){return AExp2D1(b*ALog2D1(a));} + A_STATIC AF1 APowF1(AF1 a,AF1 b){return AExp2F1(b*ALog2F1(a));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ARsqD1(AD1 a){return ARcpD1(ASqrtD1(a));} + A_STATIC AF1 ARsqF1(AF1 a){return ARcpF1(ASqrtF1(a));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ASatD1(AD1 a){return AMinD1(1.0,AMaxD1(0.0,a));} + A_STATIC AF1 ASatF1(AF1 a){return AMinF1(1.0f,AMaxF1(0.0f,a));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR OPS +//------------------------------------------------------------------------------------------------------------------------------ +// These are added as needed for production or prototyping, so not necessarily a complete set. +// They follow a convention of taking in a destination and also returning the destination value to increase utility. +//============================================================================================================================== + A_STATIC retAD2 opAAbsD2(outAD2 d,inAD2 a){d[0]=AAbsD1(a[0]);d[1]=AAbsD1(a[1]);return d;} + A_STATIC retAD3 opAAbsD3(outAD3 d,inAD3 a){d[0]=AAbsD1(a[0]);d[1]=AAbsD1(a[1]);d[2]=AAbsD1(a[2]);return d;} + A_STATIC retAD4 opAAbsD4(outAD4 d,inAD4 a){d[0]=AAbsD1(a[0]);d[1]=AAbsD1(a[1]);d[2]=AAbsD1(a[2]);d[3]=AAbsD1(a[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAAbsF2(outAF2 d,inAF2 a){d[0]=AAbsF1(a[0]);d[1]=AAbsF1(a[1]);return d;} + A_STATIC retAF3 opAAbsF3(outAF3 d,inAF3 a){d[0]=AAbsF1(a[0]);d[1]=AAbsF1(a[1]);d[2]=AAbsF1(a[2]);return d;} + A_STATIC retAF4 opAAbsF4(outAF4 d,inAF4 a){d[0]=AAbsF1(a[0]);d[1]=AAbsF1(a[1]);d[2]=AAbsF1(a[2]);d[3]=AAbsF1(a[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAAddD2(outAD2 d,inAD2 a,inAD2 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];return d;} + A_STATIC retAD3 opAAddD3(outAD3 d,inAD3 a,inAD3 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];return d;} + A_STATIC retAD4 opAAddD4(outAD4 d,inAD4 a,inAD4 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];d[3]=a[3]+b[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAAddF2(outAF2 d,inAF2 a,inAF2 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];return d;} + A_STATIC retAF3 opAAddF3(outAF3 d,inAF3 a,inAF3 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];return d;} + A_STATIC retAF4 opAAddF4(outAF4 d,inAF4 a,inAF4 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];d[3]=a[3]+b[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opAAddOneD2(outAD2 d,inAD2 a,AD1 b){d[0]=a[0]+b;d[1]=a[1]+b;return d;} + A_STATIC retAD3 opAAddOneD3(outAD3 d,inAD3 a,AD1 b){d[0]=a[0]+b;d[1]=a[1]+b;d[2]=a[2]+b;return d;} + A_STATIC retAD4 opAAddOneD4(outAD4 d,inAD4 a,AD1 b){d[0]=a[0]+b;d[1]=a[1]+b;d[2]=a[2]+b;d[3]=a[3]+b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAAddOneF2(outAF2 d,inAF2 a,AF1 b){d[0]=a[0]+b;d[1]=a[1]+b;return d;} + A_STATIC retAF3 opAAddOneF3(outAF3 d,inAF3 a,AF1 b){d[0]=a[0]+b;d[1]=a[1]+b;d[2]=a[2]+b;return d;} + A_STATIC retAF4 opAAddOneF4(outAF4 d,inAF4 a,AF1 b){d[0]=a[0]+b;d[1]=a[1]+b;d[2]=a[2]+b;d[3]=a[3]+b;return d;} +//============================================================================================================================== + A_STATIC retAD2 opACpyD2(outAD2 d,inAD2 a){d[0]=a[0];d[1]=a[1];return d;} + A_STATIC retAD3 opACpyD3(outAD3 d,inAD3 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d;} + A_STATIC retAD4 opACpyD4(outAD4 d,inAD4 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opACpyF2(outAF2 d,inAF2 a){d[0]=a[0];d[1]=a[1];return d;} + A_STATIC retAF3 opACpyF3(outAF3 d,inAF3 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d;} + A_STATIC retAF4 opACpyF4(outAF4 d,inAF4 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opALerpD2(outAD2 d,inAD2 a,inAD2 b,inAD2 c){d[0]=ALerpD1(a[0],b[0],c[0]);d[1]=ALerpD1(a[1],b[1],c[1]);return d;} + A_STATIC retAD3 opALerpD3(outAD3 d,inAD3 a,inAD3 b,inAD3 c){d[0]=ALerpD1(a[0],b[0],c[0]);d[1]=ALerpD1(a[1],b[1],c[1]);d[2]=ALerpD1(a[2],b[2],c[2]);return d;} + A_STATIC retAD4 opALerpD4(outAD4 d,inAD4 a,inAD4 b,inAD4 c){d[0]=ALerpD1(a[0],b[0],c[0]);d[1]=ALerpD1(a[1],b[1],c[1]);d[2]=ALerpD1(a[2],b[2],c[2]);d[3]=ALerpD1(a[3],b[3],c[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opALerpF2(outAF2 d,inAF2 a,inAF2 b,inAF2 c){d[0]=ALerpF1(a[0],b[0],c[0]);d[1]=ALerpF1(a[1],b[1],c[1]);return d;} + A_STATIC retAF3 opALerpF3(outAF3 d,inAF3 a,inAF3 b,inAF3 c){d[0]=ALerpF1(a[0],b[0],c[0]);d[1]=ALerpF1(a[1],b[1],c[1]);d[2]=ALerpF1(a[2],b[2],c[2]);return d;} + A_STATIC retAF4 opALerpF4(outAF4 d,inAF4 a,inAF4 b,inAF4 c){d[0]=ALerpF1(a[0],b[0],c[0]);d[1]=ALerpF1(a[1],b[1],c[1]);d[2]=ALerpF1(a[2],b[2],c[2]);d[3]=ALerpF1(a[3],b[3],c[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opALerpOneD2(outAD2 d,inAD2 a,inAD2 b,AD1 c){d[0]=ALerpD1(a[0],b[0],c);d[1]=ALerpD1(a[1],b[1],c);return d;} + A_STATIC retAD3 opALerpOneD3(outAD3 d,inAD3 a,inAD3 b,AD1 c){d[0]=ALerpD1(a[0],b[0],c);d[1]=ALerpD1(a[1],b[1],c);d[2]=ALerpD1(a[2],b[2],c);return d;} + A_STATIC retAD4 opALerpOneD4(outAD4 d,inAD4 a,inAD4 b,AD1 c){d[0]=ALerpD1(a[0],b[0],c);d[1]=ALerpD1(a[1],b[1],c);d[2]=ALerpD1(a[2],b[2],c);d[3]=ALerpD1(a[3],b[3],c);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opALerpOneF2(outAF2 d,inAF2 a,inAF2 b,AF1 c){d[0]=ALerpF1(a[0],b[0],c);d[1]=ALerpF1(a[1],b[1],c);return d;} + A_STATIC retAF3 opALerpOneF3(outAF3 d,inAF3 a,inAF3 b,AF1 c){d[0]=ALerpF1(a[0],b[0],c);d[1]=ALerpF1(a[1],b[1],c);d[2]=ALerpF1(a[2],b[2],c);return d;} + A_STATIC retAF4 opALerpOneF4(outAF4 d,inAF4 a,inAF4 b,AF1 c){d[0]=ALerpF1(a[0],b[0],c);d[1]=ALerpF1(a[1],b[1],c);d[2]=ALerpF1(a[2],b[2],c);d[3]=ALerpF1(a[3],b[3],c);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMaxD2(outAD2 d,inAD2 a,inAD2 b){d[0]=AMaxD1(a[0],b[0]);d[1]=AMaxD1(a[1],b[1]);return d;} + A_STATIC retAD3 opAMaxD3(outAD3 d,inAD3 a,inAD3 b){d[0]=AMaxD1(a[0],b[0]);d[1]=AMaxD1(a[1],b[1]);d[2]=AMaxD1(a[2],b[2]);return d;} + A_STATIC retAD4 opAMaxD4(outAD4 d,inAD4 a,inAD4 b){d[0]=AMaxD1(a[0],b[0]);d[1]=AMaxD1(a[1],b[1]);d[2]=AMaxD1(a[2],b[2]);d[3]=AMaxD1(a[3],b[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMaxF2(outAF2 d,inAF2 a,inAF2 b){d[0]=AMaxF1(a[0],b[0]);d[1]=AMaxF1(a[1],b[1]);return d;} + A_STATIC retAF3 opAMaxF3(outAF3 d,inAF3 a,inAF3 b){d[0]=AMaxF1(a[0],b[0]);d[1]=AMaxF1(a[1],b[1]);d[2]=AMaxF1(a[2],b[2]);return d;} + A_STATIC retAF4 opAMaxF4(outAF4 d,inAF4 a,inAF4 b){d[0]=AMaxF1(a[0],b[0]);d[1]=AMaxF1(a[1],b[1]);d[2]=AMaxF1(a[2],b[2]);d[3]=AMaxF1(a[3],b[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMinD2(outAD2 d,inAD2 a,inAD2 b){d[0]=AMinD1(a[0],b[0]);d[1]=AMinD1(a[1],b[1]);return d;} + A_STATIC retAD3 opAMinD3(outAD3 d,inAD3 a,inAD3 b){d[0]=AMinD1(a[0],b[0]);d[1]=AMinD1(a[1],b[1]);d[2]=AMinD1(a[2],b[2]);return d;} + A_STATIC retAD4 opAMinD4(outAD4 d,inAD4 a,inAD4 b){d[0]=AMinD1(a[0],b[0]);d[1]=AMinD1(a[1],b[1]);d[2]=AMinD1(a[2],b[2]);d[3]=AMinD1(a[3],b[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMinF2(outAF2 d,inAF2 a,inAF2 b){d[0]=AMinF1(a[0],b[0]);d[1]=AMinF1(a[1],b[1]);return d;} + A_STATIC retAF3 opAMinF3(outAF3 d,inAF3 a,inAF3 b){d[0]=AMinF1(a[0],b[0]);d[1]=AMinF1(a[1],b[1]);d[2]=AMinF1(a[2],b[2]);return d;} + A_STATIC retAF4 opAMinF4(outAF4 d,inAF4 a,inAF4 b){d[0]=AMinF1(a[0],b[0]);d[1]=AMinF1(a[1],b[1]);d[2]=AMinF1(a[2],b[2]);d[3]=AMinF1(a[3],b[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMulD2(outAD2 d,inAD2 a,inAD2 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];return d;} + A_STATIC retAD3 opAMulD3(outAD3 d,inAD3 a,inAD3 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];return d;} + A_STATIC retAD4 opAMulD4(outAD4 d,inAD4 a,inAD4 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];d[3]=a[3]*b[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMulF2(outAF2 d,inAF2 a,inAF2 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];return d;} + A_STATIC retAF3 opAMulF3(outAF3 d,inAF3 a,inAF3 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];return d;} + A_STATIC retAF4 opAMulF4(outAF4 d,inAF4 a,inAF4 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];d[3]=a[3]*b[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMulOneD2(outAD2 d,inAD2 a,AD1 b){d[0]=a[0]*b;d[1]=a[1]*b;return d;} + A_STATIC retAD3 opAMulOneD3(outAD3 d,inAD3 a,AD1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;return d;} + A_STATIC retAD4 opAMulOneD4(outAD4 d,inAD4 a,AD1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;d[3]=a[3]*b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMulOneF2(outAF2 d,inAF2 a,AF1 b){d[0]=a[0]*b;d[1]=a[1]*b;return d;} + A_STATIC retAF3 opAMulOneF3(outAF3 d,inAF3 a,AF1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;return d;} + A_STATIC retAF4 opAMulOneF4(outAF4 d,inAF4 a,AF1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;d[3]=a[3]*b;return d;} +//============================================================================================================================== + A_STATIC retAD2 opANegD2(outAD2 d,inAD2 a){d[0]=-a[0];d[1]=-a[1];return d;} + A_STATIC retAD3 opANegD3(outAD3 d,inAD3 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d;} + A_STATIC retAD4 opANegD4(outAD4 d,inAD4 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=-a[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opANegF2(outAF2 d,inAF2 a){d[0]=-a[0];d[1]=-a[1];return d;} + A_STATIC retAF3 opANegF3(outAF3 d,inAF3 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d;} + A_STATIC retAF4 opANegF4(outAF4 d,inAF4 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=-a[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opARcpD2(outAD2 d,inAD2 a){d[0]=ARcpD1(a[0]);d[1]=ARcpD1(a[1]);return d;} + A_STATIC retAD3 opARcpD3(outAD3 d,inAD3 a){d[0]=ARcpD1(a[0]);d[1]=ARcpD1(a[1]);d[2]=ARcpD1(a[2]);return d;} + A_STATIC retAD4 opARcpD4(outAD4 d,inAD4 a){d[0]=ARcpD1(a[0]);d[1]=ARcpD1(a[1]);d[2]=ARcpD1(a[2]);d[3]=ARcpD1(a[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opARcpF2(outAF2 d,inAF2 a){d[0]=ARcpF1(a[0]);d[1]=ARcpF1(a[1]);return d;} + A_STATIC retAF3 opARcpF3(outAF3 d,inAF3 a){d[0]=ARcpF1(a[0]);d[1]=ARcpF1(a[1]);d[2]=ARcpF1(a[2]);return d;} + A_STATIC retAF4 opARcpF4(outAF4 d,inAF4 a){d[0]=ARcpF1(a[0]);d[1]=ARcpF1(a[1]);d[2]=ARcpF1(a[2]);d[3]=ARcpF1(a[3]);return d;} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HALF FLOAT PACKING +//============================================================================================================================== + // Convert float to half (in lower 16-bits of output). + // Same fast technique as documented here: ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf + // Supports denormals. + // Conversion rules are to make computations possibly "safer" on the GPU, + // -INF & -NaN -> -65504 + // +INF & +NaN -> +65504 + A_STATIC AU1 AU1_AH1_AF1(AF1 f){ + static AW1 base[512]={ + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100, + 0x0200,0x0400,0x0800,0x0c00,0x1000,0x1400,0x1800,0x1c00,0x2000,0x2400,0x2800,0x2c00,0x3000,0x3400,0x3800,0x3c00, + 0x4000,0x4400,0x4800,0x4c00,0x5000,0x5400,0x5800,0x5c00,0x6000,0x6400,0x6800,0x6c00,0x7000,0x7400,0x7800,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8001,0x8002,0x8004,0x8008,0x8010,0x8020,0x8040,0x8080,0x8100, + 0x8200,0x8400,0x8800,0x8c00,0x9000,0x9400,0x9800,0x9c00,0xa000,0xa400,0xa800,0xac00,0xb000,0xb400,0xb800,0xbc00, + 0xc000,0xc400,0xc800,0xcc00,0xd000,0xd400,0xd800,0xdc00,0xe000,0xe400,0xe800,0xec00,0xf000,0xf400,0xf800,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff}; + static AB1 shift[512]={ + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0x0f, + 0x0e,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0x0f, + 0x0e,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}; + union{AF1 f;AU1 u;}bits;bits.f=f;AU1 u=bits.u;AU1 i=u>>23;return (AU1)(base[i])+((u&0x7fffff)>>shift[i]);} +//------------------------------------------------------------------------------------------------------------------------------ + // Used to output packed constant. + A_STATIC AU1 AU1_AH2_AF2(inAF2 a){return AU1_AH1_AF1(a[0])+(AU1_AH1_AF1(a[1])<<16);} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// GLSL +// +// +//============================================================================================================================== +#if defined(A_GLSL) && defined(A_GPU) + #define AP1 bool + #define AP2 bvec2 + #define AP3 bvec3 + #define AP4 bvec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF1 float + #define AF2 vec2 + #define AF3 vec3 + #define AF4 vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1 uint + #define AU2 uvec2 + #define AU3 uvec3 + #define AU4 uvec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASU1 int + #define ASU2 ivec2 + #define ASU3 ivec3 + #define ASU4 ivec4 +//============================================================================================================================== + #define AF1_AU1(x) uintBitsToFloat(AU1(x)) + #define AF2_AU2(x) uintBitsToFloat(AU2(x)) + #define AF3_AU3(x) uintBitsToFloat(AU3(x)) + #define AF4_AU4(x) uintBitsToFloat(AU4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AF1(x) floatBitsToUint(AF1(x)) + #define AU2_AF2(x) floatBitsToUint(AF2(x)) + #define AU3_AF3(x) floatBitsToUint(AF3(x)) + #define AU4_AF4(x) floatBitsToUint(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_AH1_AF1_x(AF1 a){return packHalf2x16(AF2(a,0.0));} + #define AU1_AH1_AF1(a) AU1_AH1_AF1_x(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AH2_AF2 packHalf2x16 + #define AU1_AW2Unorm_AF2 packUnorm2x16 + #define AU1_AB4Unorm_AF4 packUnorm4x8 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF2_AH2_AU1 unpackHalf2x16 + #define AF2_AW2Unorm_AU1 unpackUnorm2x16 + #define AF4_AB4Unorm_AU1 unpackUnorm4x8 +//============================================================================================================================== + AF1 AF1_x(AF1 a){return AF1(a);} + AF2 AF2_x(AF1 a){return AF2(a,a);} + AF3 AF3_x(AF1 a){return AF3(a,a,a);} + AF4 AF4_x(AF1 a){return AF4(a,a,a,a);} + #define AF1_(a) AF1_x(AF1(a)) + #define AF2_(a) AF2_x(AF1(a)) + #define AF3_(a) AF3_x(AF1(a)) + #define AF4_(a) AF4_x(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_x(AU1 a){return AU1(a);} + AU2 AU2_x(AU1 a){return AU2(a,a);} + AU3 AU3_x(AU1 a){return AU3(a,a,a);} + AU4 AU4_x(AU1 a){return AU4(a,a,a,a);} + #define AU1_(a) AU1_x(AU1(a)) + #define AU2_(a) AU2_x(AU1(a)) + #define AU3_(a) AU3_x(AU1(a)) + #define AU4_(a) AU4_x(AU1(a)) +//============================================================================================================================== + AU1 AAbsSU1(AU1 a){return AU1(abs(ASU1(a)));} + AU2 AAbsSU2(AU2 a){return AU2(abs(ASU2(a)));} + AU3 AAbsSU3(AU3 a){return AU3(abs(ASU3(a)));} + AU4 AAbsSU4(AU4 a){return AU4(abs(ASU4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 ABfe(AU1 src,AU1 off,AU1 bits){return bitfieldExtract(src,ASU1(off),ASU1(bits));} + AU1 ABfi(AU1 src,AU1 ins,AU1 mask){return (ins&mask)|(src&(~mask));} + // Proxy for V_BFI_B32 where the 'mask' is set as 'bits', 'mask=(1<<bits)-1', and 'bits' needs to be an immediate. + AU1 ABfiM(AU1 src,AU1 ins,AU1 bits){return bitfieldInsert(src,ins,0,ASU1(bits));} +//------------------------------------------------------------------------------------------------------------------------------ + // V_MED3_F32. + AF1 AClampF1(AF1 x,AF1 n,AF1 m){return clamp(x,n,m);} + AF2 AClampF2(AF2 x,AF2 n,AF2 m){return clamp(x,n,m);} + AF3 AClampF3(AF3 x,AF3 n,AF3 m){return clamp(x,n,m);} + AF4 AClampF4(AF4 x,AF4 n,AF4 m){return clamp(x,n,m);} +//------------------------------------------------------------------------------------------------------------------------------ + // V_FRACT_F32 (note DX frac() is different). + AF1 AFractF1(AF1 x){return fract(x);} + AF2 AFractF2(AF2 x){return fract(x);} + AF3 AFractF3(AF3 x){return fract(x);} + AF4 AFractF4(AF4 x){return fract(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ALerpF1(AF1 x,AF1 y,AF1 a){return mix(x,y,a);} + AF2 ALerpF2(AF2 x,AF2 y,AF2 a){return mix(x,y,a);} + AF3 ALerpF3(AF3 x,AF3 y,AF3 a){return mix(x,y,a);} + AF4 ALerpF4(AF4 x,AF4 y,AF4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + // V_MAX3_F32. + AF1 AMax3F1(AF1 x,AF1 y,AF1 z){return max(x,max(y,z));} + AF2 AMax3F2(AF2 x,AF2 y,AF2 z){return max(x,max(y,z));} + AF3 AMax3F3(AF3 x,AF3 y,AF3 z){return max(x,max(y,z));} + AF4 AMax3F4(AF4 x,AF4 y,AF4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMax3SU1(AU1 x,AU1 y,AU1 z){return AU1(max(ASU1(x),max(ASU1(y),ASU1(z))));} + AU2 AMax3SU2(AU2 x,AU2 y,AU2 z){return AU2(max(ASU2(x),max(ASU2(y),ASU2(z))));} + AU3 AMax3SU3(AU3 x,AU3 y,AU3 z){return AU3(max(ASU3(x),max(ASU3(y),ASU3(z))));} + AU4 AMax3SU4(AU4 x,AU4 y,AU4 z){return AU4(max(ASU4(x),max(ASU4(y),ASU4(z))));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMax3U1(AU1 x,AU1 y,AU1 z){return max(x,max(y,z));} + AU2 AMax3U2(AU2 x,AU2 y,AU2 z){return max(x,max(y,z));} + AU3 AMax3U3(AU3 x,AU3 y,AU3 z){return max(x,max(y,z));} + AU4 AMax3U4(AU4 x,AU4 y,AU4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMaxSU1(AU1 a,AU1 b){return AU1(max(ASU1(a),ASU1(b)));} + AU2 AMaxSU2(AU2 a,AU2 b){return AU2(max(ASU2(a),ASU2(b)));} + AU3 AMaxSU3(AU3 a,AU3 b){return AU3(max(ASU3(a),ASU3(b)));} + AU4 AMaxSU4(AU4 a,AU4 b){return AU4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + // Clamp has an easier pattern match for med3 when some ordering is known. + // V_MED3_F32. + AF1 AMed3F1(AF1 x,AF1 y,AF1 z){return max(min(x,y),min(max(x,y),z));} + AF2 AMed3F2(AF2 x,AF2 y,AF2 z){return max(min(x,y),min(max(x,y),z));} + AF3 AMed3F3(AF3 x,AF3 y,AF3 z){return max(min(x,y),min(max(x,y),z));} + AF4 AMed3F4(AF4 x,AF4 y,AF4 z){return max(min(x,y),min(max(x,y),z));} +//------------------------------------------------------------------------------------------------------------------------------ + // V_MIN3_F32. + AF1 AMin3F1(AF1 x,AF1 y,AF1 z){return min(x,min(y,z));} + AF2 AMin3F2(AF2 x,AF2 y,AF2 z){return min(x,min(y,z));} + AF3 AMin3F3(AF3 x,AF3 y,AF3 z){return min(x,min(y,z));} + AF4 AMin3F4(AF4 x,AF4 y,AF4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMin3SU1(AU1 x,AU1 y,AU1 z){return AU1(min(ASU1(x),min(ASU1(y),ASU1(z))));} + AU2 AMin3SU2(AU2 x,AU2 y,AU2 z){return AU2(min(ASU2(x),min(ASU2(y),ASU2(z))));} + AU3 AMin3SU3(AU3 x,AU3 y,AU3 z){return AU3(min(ASU3(x),min(ASU3(y),ASU3(z))));} + AU4 AMin3SU4(AU4 x,AU4 y,AU4 z){return AU4(min(ASU4(x),min(ASU4(y),ASU4(z))));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMin3U1(AU1 x,AU1 y,AU1 z){return min(x,min(y,z));} + AU2 AMin3U2(AU2 x,AU2 y,AU2 z){return min(x,min(y,z));} + AU3 AMin3U3(AU3 x,AU3 y,AU3 z){return min(x,min(y,z));} + AU4 AMin3U4(AU4 x,AU4 y,AU4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMinSU1(AU1 a,AU1 b){return AU1(min(ASU1(a),ASU1(b)));} + AU2 AMinSU2(AU2 a,AU2 b){return AU2(min(ASU2(a),ASU2(b)));} + AU3 AMinSU3(AU3 a,AU3 b){return AU3(min(ASU3(a),ASU3(b)));} + AU4 AMinSU4(AU4 a,AU4 b){return AU4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + // Normalized trig. Valid input domain is {-256 to +256}. No GLSL compiler intrinsic exists to map to this currently. + // V_COS_F32. + AF1 ANCosF1(AF1 x){return cos(x*AF1_(A_2PI));} + AF2 ANCosF2(AF2 x){return cos(x*AF2_(A_2PI));} + AF3 ANCosF3(AF3 x){return cos(x*AF3_(A_2PI));} + AF4 ANCosF4(AF4 x){return cos(x*AF4_(A_2PI));} +//------------------------------------------------------------------------------------------------------------------------------ + // Normalized trig. Valid input domain is {-256 to +256}. No GLSL compiler intrinsic exists to map to this currently. + // V_SIN_F32. + AF1 ANSinF1(AF1 x){return sin(x*AF1_(A_2PI));} + AF2 ANSinF2(AF2 x){return sin(x*AF2_(A_2PI));} + AF3 ANSinF3(AF3 x){return sin(x*AF3_(A_2PI));} + AF4 ANSinF4(AF4 x){return sin(x*AF4_(A_2PI));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ARcpF1(AF1 x){return AF1_(1.0)/x;} + AF2 ARcpF2(AF2 x){return AF2_(1.0)/x;} + AF3 ARcpF3(AF3 x){return AF3_(1.0)/x;} + AF4 ARcpF4(AF4 x){return AF4_(1.0)/x;} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ARsqF1(AF1 x){return AF1_(1.0)/sqrt(x);} + AF2 ARsqF2(AF2 x){return AF2_(1.0)/sqrt(x);} + AF3 ARsqF3(AF3 x){return AF3_(1.0)/sqrt(x);} + AF4 ARsqF4(AF4 x){return AF4_(1.0)/sqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ASatF1(AF1 x){return clamp(x,AF1_(0.0),AF1_(1.0));} + AF2 ASatF2(AF2 x){return clamp(x,AF2_(0.0),AF2_(1.0));} + AF3 ASatF3(AF3 x){return clamp(x,AF3_(0.0),AF3_(1.0));} + AF4 ASatF4(AF4 x){return clamp(x,AF4_(0.0),AF4_(1.0));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AShrSU1(AU1 a,AU1 b){return AU1(ASU1(a)>>ASU1(b));} + AU2 AShrSU2(AU2 a,AU2 b){return AU2(ASU2(a)>>ASU2(b));} + AU3 AShrSU3(AU3 a,AU3 b){return AU3(ASU3(a)>>ASU3(b));} + AU4 AShrSU4(AU4 a,AU4 b){return AU4(ASU4(a)>>ASU4(b));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL BYTE +//============================================================================================================================== + #ifdef A_BYTE + #define AB1 uint8_t + #define AB2 u8vec2 + #define AB3 u8vec3 + #define AB4 u8vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASB1 int8_t + #define ASB2 i8vec2 + #define ASB3 i8vec3 + #define ASB4 i8vec4 +//------------------------------------------------------------------------------------------------------------------------------ + AB1 AB1_x(AB1 a){return AB1(a);} + AB2 AB2_x(AB1 a){return AB2(a,a);} + AB3 AB3_x(AB1 a){return AB3(a,a,a);} + AB4 AB4_x(AB1 a){return AB4(a,a,a,a);} + #define AB1_(a) AB1_x(AB1(a)) + #define AB2_(a) AB2_x(AB1(a)) + #define AB3_(a) AB3_x(AB1(a)) + #define AB4_(a) AB4_x(AB1(a)) + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL HALF +//============================================================================================================================== + #ifdef A_HALF + #define AH1 float16_t + #define AH2 f16vec2 + #define AH3 f16vec3 + #define AH4 f16vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AW1 uint16_t + #define AW2 u16vec2 + #define AW3 u16vec3 + #define AW4 u16vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASW1 int16_t + #define ASW2 i16vec2 + #define ASW3 i16vec3 + #define ASW4 i16vec4 +//============================================================================================================================== + #define AH2_AU1(x) unpackFloat2x16(AU1(x)) + AH4 AH4_AU2_x(AU2 x){return AH4(unpackFloat2x16(x.x),unpackFloat2x16(x.y));} + #define AH4_AU2(x) AH4_AU2_x(AU2(x)) + #define AW2_AU1(x) unpackUint2x16(AU1(x)) + #define AW4_AU2(x) unpackUint4x16(pack64(AU2(x))) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AH2(x) packFloat2x16(AH2(x)) + AU2 AU2_AH4_x(AH4 x){return AU2(packFloat2x16(x.xy),packFloat2x16(x.zw));} + #define AU2_AH4(x) AU2_AH4_x(AH4(x)) + #define AU1_AW2(x) packUint2x16(AW2(x)) + #define AU2_AW4(x) unpack32(packUint4x16(AW4(x))) +//============================================================================================================================== + #define AW1_AH1(x) halfBitsToUint16(AH1(x)) + #define AW2_AH2(x) halfBitsToUint16(AH2(x)) + #define AW3_AH3(x) halfBitsToUint16(AH3(x)) + #define AW4_AH4(x) halfBitsToUint16(AH4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AH1_AW1(x) uint16BitsToHalf(AW1(x)) + #define AH2_AW2(x) uint16BitsToHalf(AW2(x)) + #define AH3_AW3(x) uint16BitsToHalf(AW3(x)) + #define AH4_AW4(x) uint16BitsToHalf(AW4(x)) +//============================================================================================================================== + AH1 AH1_x(AH1 a){return AH1(a);} + AH2 AH2_x(AH1 a){return AH2(a,a);} + AH3 AH3_x(AH1 a){return AH3(a,a,a);} + AH4 AH4_x(AH1 a){return AH4(a,a,a,a);} + #define AH1_(a) AH1_x(AH1(a)) + #define AH2_(a) AH2_x(AH1(a)) + #define AH3_(a) AH3_x(AH1(a)) + #define AH4_(a) AH4_x(AH1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AW1_x(AW1 a){return AW1(a);} + AW2 AW2_x(AW1 a){return AW2(a,a);} + AW3 AW3_x(AW1 a){return AW3(a,a,a);} + AW4 AW4_x(AW1 a){return AW4(a,a,a,a);} + #define AW1_(a) AW1_x(AW1(a)) + #define AW2_(a) AW2_x(AW1(a)) + #define AW3_(a) AW3_x(AW1(a)) + #define AW4_(a) AW4_x(AW1(a)) +//============================================================================================================================== + AW1 AAbsSW1(AW1 a){return AW1(abs(ASW1(a)));} + AW2 AAbsSW2(AW2 a){return AW2(abs(ASW2(a)));} + AW3 AAbsSW3(AW3 a){return AW3(abs(ASW3(a)));} + AW4 AAbsSW4(AW4 a){return AW4(abs(ASW4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AClampH1(AH1 x,AH1 n,AH1 m){return clamp(x,n,m);} + AH2 AClampH2(AH2 x,AH2 n,AH2 m){return clamp(x,n,m);} + AH3 AClampH3(AH3 x,AH3 n,AH3 m){return clamp(x,n,m);} + AH4 AClampH4(AH4 x,AH4 n,AH4 m){return clamp(x,n,m);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AFractH1(AH1 x){return fract(x);} + AH2 AFractH2(AH2 x){return fract(x);} + AH3 AFractH3(AH3 x){return fract(x);} + AH4 AFractH4(AH4 x){return fract(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ALerpH1(AH1 x,AH1 y,AH1 a){return mix(x,y,a);} + AH2 ALerpH2(AH2 x,AH2 y,AH2 a){return mix(x,y,a);} + AH3 ALerpH3(AH3 x,AH3 y,AH3 a){return mix(x,y,a);} + AH4 ALerpH4(AH4 x,AH4 y,AH4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + // No packed version of max3. + AH1 AMax3H1(AH1 x,AH1 y,AH1 z){return max(x,max(y,z));} + AH2 AMax3H2(AH2 x,AH2 y,AH2 z){return max(x,max(y,z));} + AH3 AMax3H3(AH3 x,AH3 y,AH3 z){return max(x,max(y,z));} + AH4 AMax3H4(AH4 x,AH4 y,AH4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMaxSW1(AW1 a,AW1 b){return AW1(max(ASU1(a),ASU1(b)));} + AW2 AMaxSW2(AW2 a,AW2 b){return AW2(max(ASU2(a),ASU2(b)));} + AW3 AMaxSW3(AW3 a,AW3 b){return AW3(max(ASU3(a),ASU3(b)));} + AW4 AMaxSW4(AW4 a,AW4 b){return AW4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + // No packed version of min3. + AH1 AMin3H1(AH1 x,AH1 y,AH1 z){return min(x,min(y,z));} + AH2 AMin3H2(AH2 x,AH2 y,AH2 z){return min(x,min(y,z));} + AH3 AMin3H3(AH3 x,AH3 y,AH3 z){return min(x,min(y,z));} + AH4 AMin3H4(AH4 x,AH4 y,AH4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMinSW1(AW1 a,AW1 b){return AW1(min(ASU1(a),ASU1(b)));} + AW2 AMinSW2(AW2 a,AW2 b){return AW2(min(ASU2(a),ASU2(b)));} + AW3 AMinSW3(AW3 a,AW3 b){return AW3(min(ASU3(a),ASU3(b)));} + AW4 AMinSW4(AW4 a,AW4 b){return AW4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARcpH1(AH1 x){return AH1_(1.0)/x;} + AH2 ARcpH2(AH2 x){return AH2_(1.0)/x;} + AH3 ARcpH3(AH3 x){return AH3_(1.0)/x;} + AH4 ARcpH4(AH4 x){return AH4_(1.0)/x;} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARsqH1(AH1 x){return AH1_(1.0)/sqrt(x);} + AH2 ARsqH2(AH2 x){return AH2_(1.0)/sqrt(x);} + AH3 ARsqH3(AH3 x){return AH3_(1.0)/sqrt(x);} + AH4 ARsqH4(AH4 x){return AH4_(1.0)/sqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ASatH1(AH1 x){return clamp(x,AH1_(0.0),AH1_(1.0));} + AH2 ASatH2(AH2 x){return clamp(x,AH2_(0.0),AH2_(1.0));} + AH3 ASatH3(AH3 x){return clamp(x,AH3_(0.0),AH3_(1.0));} + AH4 ASatH4(AH4 x){return clamp(x,AH4_(0.0),AH4_(1.0));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AShrSW1(AW1 a,AW1 b){return AW1(ASW1(a)>>ASW1(b));} + AW2 AShrSW2(AW2 a,AW2 b){return AW2(ASW2(a)>>ASW2(b));} + AW3 AShrSW3(AW3 a,AW3 b){return AW3(ASW3(a)>>ASW3(b));} + AW4 AShrSW4(AW4 a,AW4 b){return AW4(ASW4(a)>>ASW4(b));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL DOUBLE +//============================================================================================================================== + #ifdef A_DUBL + #define AD1 double + #define AD2 dvec2 + #define AD3 dvec3 + #define AD4 dvec4 +//------------------------------------------------------------------------------------------------------------------------------ + AD1 AD1_x(AD1 a){return AD1(a);} + AD2 AD2_x(AD1 a){return AD2(a,a);} + AD3 AD3_x(AD1 a){return AD3(a,a,a);} + AD4 AD4_x(AD1 a){return AD4(a,a,a,a);} + #define AD1_(a) AD1_x(AD1(a)) + #define AD2_(a) AD2_x(AD1(a)) + #define AD3_(a) AD3_x(AD1(a)) + #define AD4_(a) AD4_x(AD1(a)) +//============================================================================================================================== + AD1 AFractD1(AD1 x){return fract(x);} + AD2 AFractD2(AD2 x){return fract(x);} + AD3 AFractD3(AD3 x){return fract(x);} + AD4 AFractD4(AD4 x){return fract(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ALerpD1(AD1 x,AD1 y,AD1 a){return mix(x,y,a);} + AD2 ALerpD2(AD2 x,AD2 y,AD2 a){return mix(x,y,a);} + AD3 ALerpD3(AD3 x,AD3 y,AD3 a){return mix(x,y,a);} + AD4 ALerpD4(AD4 x,AD4 y,AD4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARcpD1(AD1 x){return AD1_(1.0)/x;} + AD2 ARcpD2(AD2 x){return AD2_(1.0)/x;} + AD3 ARcpD3(AD3 x){return AD3_(1.0)/x;} + AD4 ARcpD4(AD4 x){return AD4_(1.0)/x;} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARsqD1(AD1 x){return AD1_(1.0)/sqrt(x);} + AD2 ARsqD2(AD2 x){return AD2_(1.0)/sqrt(x);} + AD3 ARsqD3(AD3 x){return AD3_(1.0)/sqrt(x);} + AD4 ARsqD4(AD4 x){return AD4_(1.0)/sqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ASatD1(AD1 x){return clamp(x,AD1_(0.0),AD1_(1.0));} + AD2 ASatD2(AD2 x){return clamp(x,AD2_(0.0),AD2_(1.0));} + AD3 ASatD3(AD3 x){return clamp(x,AD3_(0.0),AD3_(1.0));} + AD4 ASatD4(AD4 x){return clamp(x,AD4_(0.0),AD4_(1.0));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL LONG +//============================================================================================================================== + #ifdef A_LONG + #define AL1 uint64_t + #define AL2 u64vec2 + #define AL3 u64vec3 + #define AL4 u64vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASL1 int64_t + #define ASL2 i64vec2 + #define ASL3 i64vec3 + #define ASL4 i64vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AL1_AU2(x) packUint2x32(AU2(x)) + #define AU2_AL1(x) unpackUint2x32(AL1(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AL1 AL1_x(AL1 a){return AL1(a);} + AL2 AL2_x(AL1 a){return AL2(a,a);} + AL3 AL3_x(AL1 a){return AL3(a,a,a);} + AL4 AL4_x(AL1 a){return AL4(a,a,a,a);} + #define AL1_(a) AL1_x(AL1(a)) + #define AL2_(a) AL2_x(AL1(a)) + #define AL3_(a) AL3_x(AL1(a)) + #define AL4_(a) AL4_x(AL1(a)) +//============================================================================================================================== + AL1 AAbsSL1(AL1 a){return AL1(abs(ASL1(a)));} + AL2 AAbsSL2(AL2 a){return AL2(abs(ASL2(a)));} + AL3 AAbsSL3(AL3 a){return AL3(abs(ASL3(a)));} + AL4 AAbsSL4(AL4 a){return AL4(abs(ASL4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AL1 AMaxSL1(AL1 a,AL1 b){return AL1(max(ASU1(a),ASU1(b)));} + AL2 AMaxSL2(AL2 a,AL2 b){return AL2(max(ASU2(a),ASU2(b)));} + AL3 AMaxSL3(AL3 a,AL3 b){return AL3(max(ASU3(a),ASU3(b)));} + AL4 AMaxSL4(AL4 a,AL4 b){return AL4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AL1 AMinSL1(AL1 a,AL1 b){return AL1(min(ASU1(a),ASU1(b)));} + AL2 AMinSL2(AL2 a,AL2 b){return AL2(min(ASU2(a),ASU2(b)));} + AL3 AMinSL3(AL3 a,AL3 b){return AL3(min(ASU3(a),ASU3(b)));} + AL4 AMinSL4(AL4 a,AL4 b){return AL4(min(ASU4(a),ASU4(b)));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// WAVE OPERATIONS +//============================================================================================================================== + #ifdef A_WAVE + // Where 'x' must be a compile time literal. + AF1 AWaveXorF1(AF1 v,AU1 x){return subgroupShuffleXor(v,x);} + AF2 AWaveXorF2(AF2 v,AU1 x){return subgroupShuffleXor(v,x);} + AF3 AWaveXorF3(AF3 v,AU1 x){return subgroupShuffleXor(v,x);} + AF4 AWaveXorF4(AF4 v,AU1 x){return subgroupShuffleXor(v,x);} + AU1 AWaveXorU1(AU1 v,AU1 x){return subgroupShuffleXor(v,x);} + AU2 AWaveXorU2(AU2 v,AU1 x){return subgroupShuffleXor(v,x);} + AU3 AWaveXorU3(AU3 v,AU1 x){return subgroupShuffleXor(v,x);} + AU4 AWaveXorU4(AU4 v,AU1 x){return subgroupShuffleXor(v,x);} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_HALF + AH2 AWaveXorH2(AH2 v,AU1 x){return AH2_AU1(subgroupShuffleXor(AU1_AH2(v),x));} + AH4 AWaveXorH4(AH4 v,AU1 x){return AH4_AU2(subgroupShuffleXor(AU2_AH4(v),x));} + AW2 AWaveXorW2(AW2 v,AU1 x){return AW2_AU1(subgroupShuffleXor(AU1_AW2(v),x));} + AW4 AWaveXorW4(AW4 v,AU1 x){return AW4_AU2(subgroupShuffleXor(AU2_AW4(v),x));} + #endif + #endif +//============================================================================================================================== +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// HLSL +// +// +//============================================================================================================================== +#if defined(A_HLSL) && defined(A_GPU) + #ifdef A_HLSL_6_2 + #define AP1 bool + #define AP2 bool2 + #define AP3 bool3 + #define AP4 bool4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF1 float32_t + #define AF2 float32_t2 + #define AF3 float32_t3 + #define AF4 float32_t4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1 uint32_t + #define AU2 uint32_t2 + #define AU3 uint32_t3 + #define AU4 uint32_t4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASU1 int32_t + #define ASU2 int32_t2 + #define ASU3 int32_t3 + #define ASU4 int32_t4 + #else + #define AP1 bool + #define AP2 bool2 + #define AP3 bool3 + #define AP4 bool4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF1 float + #define AF2 float2 + #define AF3 float3 + #define AF4 float4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1 uint + #define AU2 uint2 + #define AU3 uint3 + #define AU4 uint4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASU1 int + #define ASU2 int2 + #define ASU3 int3 + #define ASU4 int4 + #endif +//============================================================================================================================== + #define AF1_AU1(x) asfloat(AU1(x)) + #define AF2_AU2(x) asfloat(AU2(x)) + #define AF3_AU3(x) asfloat(AU3(x)) + #define AF4_AU4(x) asfloat(AU4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AF1(x) asuint(AF1(x)) + #define AU2_AF2(x) asuint(AF2(x)) + #define AU3_AF3(x) asuint(AF3(x)) + #define AU4_AF4(x) asuint(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_AH1_AF1_x(AF1 a){return f32tof16(a);} + #define AU1_AH1_AF1(a) AU1_AH1_AF1_x(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_AH2_AF2_x(AF2 a){return f32tof16(a.x)|(f32tof16(a.y)<<16);} + #define AU1_AH2_AF2(a) AU1_AH2_AF2_x(AF2(a)) + #define AU1_AB4Unorm_AF4(x) D3DCOLORtoUBYTE4(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AF2 AF2_AH2_AU1_x(AU1 x){return AF2(f16tof32(x&0xFFFF),f16tof32(x>>16));} + #define AF2_AH2_AU1(x) AF2_AH2_AU1_x(AU1(x)) +//============================================================================================================================== + AF1 AF1_x(AF1 a){return AF1(a);} + AF2 AF2_x(AF1 a){return AF2(a,a);} + AF3 AF3_x(AF1 a){return AF3(a,a,a);} + AF4 AF4_x(AF1 a){return AF4(a,a,a,a);} + #define AF1_(a) AF1_x(AF1(a)) + #define AF2_(a) AF2_x(AF1(a)) + #define AF3_(a) AF3_x(AF1(a)) + #define AF4_(a) AF4_x(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_x(AU1 a){return AU1(a);} + AU2 AU2_x(AU1 a){return AU2(a,a);} + AU3 AU3_x(AU1 a){return AU3(a,a,a);} + AU4 AU4_x(AU1 a){return AU4(a,a,a,a);} + #define AU1_(a) AU1_x(AU1(a)) + #define AU2_(a) AU2_x(AU1(a)) + #define AU3_(a) AU3_x(AU1(a)) + #define AU4_(a) AU4_x(AU1(a)) +//============================================================================================================================== + AU1 AAbsSU1(AU1 a){return AU1(abs(ASU1(a)));} + AU2 AAbsSU2(AU2 a){return AU2(abs(ASU2(a)));} + AU3 AAbsSU3(AU3 a){return AU3(abs(ASU3(a)));} + AU4 AAbsSU4(AU4 a){return AU4(abs(ASU4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 ABfe(AU1 src,AU1 off,AU1 bits){AU1 mask=(1u<<bits)-1;return (src>>off)&mask;} + AU1 ABfi(AU1 src,AU1 ins,AU1 mask){return (ins&mask)|(src&(~mask));} + AU1 ABfiM(AU1 src,AU1 ins,AU1 bits){AU1 mask=(1u<<bits)-1;return (ins&mask)|(src&(~mask));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AClampF1(AF1 x,AF1 n,AF1 m){return max(n,min(x,m));} + AF2 AClampF2(AF2 x,AF2 n,AF2 m){return max(n,min(x,m));} + AF3 AClampF3(AF3 x,AF3 n,AF3 m){return max(n,min(x,m));} + AF4 AClampF4(AF4 x,AF4 n,AF4 m){return max(n,min(x,m));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AFractF1(AF1 x){return x-floor(x);} + AF2 AFractF2(AF2 x){return x-floor(x);} + AF3 AFractF3(AF3 x){return x-floor(x);} + AF4 AFractF4(AF4 x){return x-floor(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ALerpF1(AF1 x,AF1 y,AF1 a){return lerp(x,y,a);} + AF2 ALerpF2(AF2 x,AF2 y,AF2 a){return lerp(x,y,a);} + AF3 ALerpF3(AF3 x,AF3 y,AF3 a){return lerp(x,y,a);} + AF4 ALerpF4(AF4 x,AF4 y,AF4 a){return lerp(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AMax3F1(AF1 x,AF1 y,AF1 z){return max(x,max(y,z));} + AF2 AMax3F2(AF2 x,AF2 y,AF2 z){return max(x,max(y,z));} + AF3 AMax3F3(AF3 x,AF3 y,AF3 z){return max(x,max(y,z));} + AF4 AMax3F4(AF4 x,AF4 y,AF4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMax3SU1(AU1 x,AU1 y,AU1 z){return AU1(max(ASU1(x),max(ASU1(y),ASU1(z))));} + AU2 AMax3SU2(AU2 x,AU2 y,AU2 z){return AU2(max(ASU2(x),max(ASU2(y),ASU2(z))));} + AU3 AMax3SU3(AU3 x,AU3 y,AU3 z){return AU3(max(ASU3(x),max(ASU3(y),ASU3(z))));} + AU4 AMax3SU4(AU4 x,AU4 y,AU4 z){return AU4(max(ASU4(x),max(ASU4(y),ASU4(z))));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMax3U1(AU1 x,AU1 y,AU1 z){return max(x,max(y,z));} + AU2 AMax3U2(AU2 x,AU2 y,AU2 z){return max(x,max(y,z));} + AU3 AMax3U3(AU3 x,AU3 y,AU3 z){return max(x,max(y,z));} + AU4 AMax3U4(AU4 x,AU4 y,AU4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMaxSU1(AU1 a,AU1 b){return AU1(max(ASU1(a),ASU1(b)));} + AU2 AMaxSU2(AU2 a,AU2 b){return AU2(max(ASU2(a),ASU2(b)));} + AU3 AMaxSU3(AU3 a,AU3 b){return AU3(max(ASU3(a),ASU3(b)));} + AU4 AMaxSU4(AU4 a,AU4 b){return AU4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AMed3F1(AF1 x,AF1 y,AF1 z){return max(min(x,y),min(max(x,y),z));} + AF2 AMed3F2(AF2 x,AF2 y,AF2 z){return max(min(x,y),min(max(x,y),z));} + AF3 AMed3F3(AF3 x,AF3 y,AF3 z){return max(min(x,y),min(max(x,y),z));} + AF4 AMed3F4(AF4 x,AF4 y,AF4 z){return max(min(x,y),min(max(x,y),z));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AMin3F1(AF1 x,AF1 y,AF1 z){return min(x,min(y,z));} + AF2 AMin3F2(AF2 x,AF2 y,AF2 z){return min(x,min(y,z));} + AF3 AMin3F3(AF3 x,AF3 y,AF3 z){return min(x,min(y,z));} + AF4 AMin3F4(AF4 x,AF4 y,AF4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMin3SU1(AU1 x,AU1 y,AU1 z){return AU1(min(ASU1(x),min(ASU1(y),ASU1(z))));} + AU2 AMin3SU2(AU2 x,AU2 y,AU2 z){return AU2(min(ASU2(x),min(ASU2(y),ASU2(z))));} + AU3 AMin3SU3(AU3 x,AU3 y,AU3 z){return AU3(min(ASU3(x),min(ASU3(y),ASU3(z))));} + AU4 AMin3SU4(AU4 x,AU4 y,AU4 z){return AU4(min(ASU4(x),min(ASU4(y),ASU4(z))));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMin3U1(AU1 x,AU1 y,AU1 z){return min(x,min(y,z));} + AU2 AMin3U2(AU2 x,AU2 y,AU2 z){return min(x,min(y,z));} + AU3 AMin3U3(AU3 x,AU3 y,AU3 z){return min(x,min(y,z));} + AU4 AMin3U4(AU4 x,AU4 y,AU4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AMinSU1(AU1 a,AU1 b){return AU1(min(ASU1(a),ASU1(b)));} + AU2 AMinSU2(AU2 a,AU2 b){return AU2(min(ASU2(a),ASU2(b)));} + AU3 AMinSU3(AU3 a,AU3 b){return AU3(min(ASU3(a),ASU3(b)));} + AU4 AMinSU4(AU4 a,AU4 b){return AU4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ANCosF1(AF1 x){return cos(x*AF1_(A_2PI));} + AF2 ANCosF2(AF2 x){return cos(x*AF2_(A_2PI));} + AF3 ANCosF3(AF3 x){return cos(x*AF3_(A_2PI));} + AF4 ANCosF4(AF4 x){return cos(x*AF4_(A_2PI));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ANSinF1(AF1 x){return sin(x*AF1_(A_2PI));} + AF2 ANSinF2(AF2 x){return sin(x*AF2_(A_2PI));} + AF3 ANSinF3(AF3 x){return sin(x*AF3_(A_2PI));} + AF4 ANSinF4(AF4 x){return sin(x*AF4_(A_2PI));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ARcpF1(AF1 x){return rcp(x);} + AF2 ARcpF2(AF2 x){return rcp(x);} + AF3 ARcpF3(AF3 x){return rcp(x);} + AF4 ARcpF4(AF4 x){return rcp(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ARsqF1(AF1 x){return rsqrt(x);} + AF2 ARsqF2(AF2 x){return rsqrt(x);} + AF3 ARsqF3(AF3 x){return rsqrt(x);} + AF4 ARsqF4(AF4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ASatF1(AF1 x){return saturate(x);} + AF2 ASatF2(AF2 x){return saturate(x);} + AF3 ASatF3(AF3 x){return saturate(x);} + AF4 ASatF4(AF4 x){return saturate(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AShrSU1(AU1 a,AU1 b){return AU1(ASU1(a)>>ASU1(b));} + AU2 AShrSU2(AU2 a,AU2 b){return AU2(ASU2(a)>>ASU2(b));} + AU3 AShrSU3(AU3 a,AU3 b){return AU3(ASU3(a)>>ASU3(b));} + AU4 AShrSU4(AU4 a,AU4 b){return AU4(ASU4(a)>>ASU4(b));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HLSL BYTE +//============================================================================================================================== + #ifdef A_BYTE + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HLSL HALF +//============================================================================================================================== + #ifdef A_HALF + #ifdef A_HLSL_6_2 + #define AH1 float16_t + #define AH2 float16_t2 + #define AH3 float16_t3 + #define AH4 float16_t4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AW1 uint16_t + #define AW2 uint16_t2 + #define AW3 uint16_t3 + #define AW4 uint16_t4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASW1 int16_t + #define ASW2 int16_t2 + #define ASW3 int16_t3 + #define ASW4 int16_t4 + #else + #define AH1 min16float + #define AH2 min16float2 + #define AH3 min16float3 + #define AH4 min16float4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AW1 min16uint + #define AW2 min16uint2 + #define AW3 min16uint3 + #define AW4 min16uint4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASW1 min16int + #define ASW2 min16int2 + #define ASW3 min16int3 + #define ASW4 min16int4 + #endif +//============================================================================================================================== + // Need to use manual unpack to get optimal execution (don't use packed types in buffers directly). + // Unpack requires this pattern: https://gpuopen.com/first-steps-implementing-fp16/ + AH2 AH2_AU1_x(AU1 x){AF2 t=f16tof32(AU2(x&0xFFFF,x>>16));return AH2(t);} + AH4 AH4_AU2_x(AU2 x){return AH4(AH2_AU1_x(x.x),AH2_AU1_x(x.y));} + AW2 AW2_AU1_x(AU1 x){AU2 t=AU2(x&0xFFFF,x>>16);return AW2(t);} + AW4 AW4_AU2_x(AU2 x){return AW4(AW2_AU1_x(x.x),AW2_AU1_x(x.y));} + #define AH2_AU1(x) AH2_AU1_x(AU1(x)) + #define AH4_AU2(x) AH4_AU2_x(AU2(x)) + #define AW2_AU1(x) AW2_AU1_x(AU1(x)) + #define AW4_AU2(x) AW4_AU2_x(AU2(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_AH2_x(AH2 x){return f32tof16(x.x)+(f32tof16(x.y)<<16);} + AU2 AU2_AH4_x(AH4 x){return AU2(AU1_AH2_x(x.xy),AU1_AH2_x(x.zw));} + AU1 AU1_AW2_x(AW2 x){return AU1(x.x)+(AU1(x.y)<<16);} + AU2 AU2_AW4_x(AW4 x){return AU2(AU1_AW2_x(x.xy),AU1_AW2_x(x.zw));} + #define AU1_AH2(x) AU1_AH2_x(AH2(x)) + #define AU2_AH4(x) AU2_AH4_x(AH4(x)) + #define AU1_AW2(x) AU1_AW2_x(AW2(x)) + #define AU2_AW4(x) AU2_AW4_x(AW4(x)) +//============================================================================================================================== + #if defined(A_HLSL_6_2) && !defined(A_NO_16_BIT_CAST) + #define AW1_AH1(x) asuint16(x) + #define AW2_AH2(x) asuint16(x) + #define AW3_AH3(x) asuint16(x) + #define AW4_AH4(x) asuint16(x) + #else + #define AW1_AH1(a) AW1(f32tof16(AF1(a))) + #define AW2_AH2(a) AW2(AW1_AH1((a).x),AW1_AH1((a).y)) + #define AW3_AH3(a) AW3(AW1_AH1((a).x),AW1_AH1((a).y),AW1_AH1((a).z)) + #define AW4_AH4(a) AW4(AW1_AH1((a).x),AW1_AH1((a).y),AW1_AH1((a).z),AW1_AH1((a).w)) + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #if defined(A_HLSL_6_2) && !defined(A_NO_16_BIT_CAST) + #define AH1_AW1(x) asfloat16(x) + #define AH2_AW2(x) asfloat16(x) + #define AH3_AW3(x) asfloat16(x) + #define AH4_AW4(x) asfloat16(x) + #else + #define AH1_AW1(a) AH1(f16tof32(AU1(a))) + #define AH2_AW2(a) AH2(AH1_AW1((a).x),AH1_AW1((a).y)) + #define AH3_AW3(a) AH3(AH1_AW1((a).x),AH1_AW1((a).y),AH1_AW1((a).z)) + #define AH4_AW4(a) AH4(AH1_AW1((a).x),AH1_AW1((a).y),AH1_AW1((a).z),AH1_AW1((a).w)) + #endif +//============================================================================================================================== + AH1 AH1_x(AH1 a){return AH1(a);} + AH2 AH2_x(AH1 a){return AH2(a,a);} + AH3 AH3_x(AH1 a){return AH3(a,a,a);} + AH4 AH4_x(AH1 a){return AH4(a,a,a,a);} + #define AH1_(a) AH1_x(AH1(a)) + #define AH2_(a) AH2_x(AH1(a)) + #define AH3_(a) AH3_x(AH1(a)) + #define AH4_(a) AH4_x(AH1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AW1_x(AW1 a){return AW1(a);} + AW2 AW2_x(AW1 a){return AW2(a,a);} + AW3 AW3_x(AW1 a){return AW3(a,a,a);} + AW4 AW4_x(AW1 a){return AW4(a,a,a,a);} + #define AW1_(a) AW1_x(AW1(a)) + #define AW2_(a) AW2_x(AW1(a)) + #define AW3_(a) AW3_x(AW1(a)) + #define AW4_(a) AW4_x(AW1(a)) +//============================================================================================================================== + AW1 AAbsSW1(AW1 a){return AW1(abs(ASW1(a)));} + AW2 AAbsSW2(AW2 a){return AW2(abs(ASW2(a)));} + AW3 AAbsSW3(AW3 a){return AW3(abs(ASW3(a)));} + AW4 AAbsSW4(AW4 a){return AW4(abs(ASW4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AClampH1(AH1 x,AH1 n,AH1 m){return max(n,min(x,m));} + AH2 AClampH2(AH2 x,AH2 n,AH2 m){return max(n,min(x,m));} + AH3 AClampH3(AH3 x,AH3 n,AH3 m){return max(n,min(x,m));} + AH4 AClampH4(AH4 x,AH4 n,AH4 m){return max(n,min(x,m));} +//------------------------------------------------------------------------------------------------------------------------------ + // V_FRACT_F16 (note DX frac() is different). + AH1 AFractH1(AH1 x){return x-floor(x);} + AH2 AFractH2(AH2 x){return x-floor(x);} + AH3 AFractH3(AH3 x){return x-floor(x);} + AH4 AFractH4(AH4 x){return x-floor(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ALerpH1(AH1 x,AH1 y,AH1 a){return lerp(x,y,a);} + AH2 ALerpH2(AH2 x,AH2 y,AH2 a){return lerp(x,y,a);} + AH3 ALerpH3(AH3 x,AH3 y,AH3 a){return lerp(x,y,a);} + AH4 ALerpH4(AH4 x,AH4 y,AH4 a){return lerp(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AMax3H1(AH1 x,AH1 y,AH1 z){return max(x,max(y,z));} + AH2 AMax3H2(AH2 x,AH2 y,AH2 z){return max(x,max(y,z));} + AH3 AMax3H3(AH3 x,AH3 y,AH3 z){return max(x,max(y,z));} + AH4 AMax3H4(AH4 x,AH4 y,AH4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMaxSW1(AW1 a,AW1 b){return AW1(max(ASU1(a),ASU1(b)));} + AW2 AMaxSW2(AW2 a,AW2 b){return AW2(max(ASU2(a),ASU2(b)));} + AW3 AMaxSW3(AW3 a,AW3 b){return AW3(max(ASU3(a),ASU3(b)));} + AW4 AMaxSW4(AW4 a,AW4 b){return AW4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AMin3H1(AH1 x,AH1 y,AH1 z){return min(x,min(y,z));} + AH2 AMin3H2(AH2 x,AH2 y,AH2 z){return min(x,min(y,z));} + AH3 AMin3H3(AH3 x,AH3 y,AH3 z){return min(x,min(y,z));} + AH4 AMin3H4(AH4 x,AH4 y,AH4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMinSW1(AW1 a,AW1 b){return AW1(min(ASU1(a),ASU1(b)));} + AW2 AMinSW2(AW2 a,AW2 b){return AW2(min(ASU2(a),ASU2(b)));} + AW3 AMinSW3(AW3 a,AW3 b){return AW3(min(ASU3(a),ASU3(b)));} + AW4 AMinSW4(AW4 a,AW4 b){return AW4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARcpH1(AH1 x){return rcp(x);} + AH2 ARcpH2(AH2 x){return rcp(x);} + AH3 ARcpH3(AH3 x){return rcp(x);} + AH4 ARcpH4(AH4 x){return rcp(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARsqH1(AH1 x){return rsqrt(x);} + AH2 ARsqH2(AH2 x){return rsqrt(x);} + AH3 ARsqH3(AH3 x){return rsqrt(x);} + AH4 ARsqH4(AH4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ASatH1(AH1 x){return saturate(x);} + AH2 ASatH2(AH2 x){return saturate(x);} + AH3 ASatH3(AH3 x){return saturate(x);} + AH4 ASatH4(AH4 x){return saturate(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AShrSW1(AW1 a,AW1 b){return AW1(ASW1(a)>>ASW1(b));} + AW2 AShrSW2(AW2 a,AW2 b){return AW2(ASW2(a)>>ASW2(b));} + AW3 AShrSW3(AW3 a,AW3 b){return AW3(ASW3(a)>>ASW3(b));} + AW4 AShrSW4(AW4 a,AW4 b){return AW4(ASW4(a)>>ASW4(b));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HLSL DOUBLE +//============================================================================================================================== + #ifdef A_DUBL + #ifdef A_HLSL_6_2 + #define AD1 float64_t + #define AD2 float64_t2 + #define AD3 float64_t3 + #define AD4 float64_t4 + #else + #define AD1 double + #define AD2 double2 + #define AD3 double3 + #define AD4 double4 + #endif +//------------------------------------------------------------------------------------------------------------------------------ + AD1 AD1_x(AD1 a){return AD1(a);} + AD2 AD2_x(AD1 a){return AD2(a,a);} + AD3 AD3_x(AD1 a){return AD3(a,a,a);} + AD4 AD4_x(AD1 a){return AD4(a,a,a,a);} + #define AD1_(a) AD1_x(AD1(a)) + #define AD2_(a) AD2_x(AD1(a)) + #define AD3_(a) AD3_x(AD1(a)) + #define AD4_(a) AD4_x(AD1(a)) +//============================================================================================================================== + AD1 AFractD1(AD1 a){return a-floor(a);} + AD2 AFractD2(AD2 a){return a-floor(a);} + AD3 AFractD3(AD3 a){return a-floor(a);} + AD4 AFractD4(AD4 a){return a-floor(a);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ALerpD1(AD1 x,AD1 y,AD1 a){return lerp(x,y,a);} + AD2 ALerpD2(AD2 x,AD2 y,AD2 a){return lerp(x,y,a);} + AD3 ALerpD3(AD3 x,AD3 y,AD3 a){return lerp(x,y,a);} + AD4 ALerpD4(AD4 x,AD4 y,AD4 a){return lerp(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARcpD1(AD1 x){return rcp(x);} + AD2 ARcpD2(AD2 x){return rcp(x);} + AD3 ARcpD3(AD3 x){return rcp(x);} + AD4 ARcpD4(AD4 x){return rcp(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARsqD1(AD1 x){return rsqrt(x);} + AD2 ARsqD2(AD2 x){return rsqrt(x);} + AD3 ARsqD3(AD3 x){return rsqrt(x);} + AD4 ARsqD4(AD4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ASatD1(AD1 x){return saturate(x);} + AD2 ASatD2(AD2 x){return saturate(x);} + AD3 ASatD3(AD3 x){return saturate(x);} + AD4 ASatD4(AD4 x){return saturate(x);} + #endif +//============================================================================================================================== +// HLSL WAVE +//============================================================================================================================== + #ifdef A_WAVE + // Where 'x' must be a compile time literal. + AF1 AWaveXorF1(AF1 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} + AF2 AWaveXorF2(AF2 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} + AF3 AWaveXorF3(AF3 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} + AF4 AWaveXorF4(AF4 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} + AU1 AWaveXorU1(AU1 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} + AU2 AWaveXorU1(AU2 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} + AU3 AWaveXorU1(AU3 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} + AU4 AWaveXorU1(AU4 v,AU1 x){return WaveReadLaneAt(v,WaveGetLaneIndex()^x);} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_HALF + AH2 AWaveXorH2(AH2 v,AU1 x){return AH2_AU1(WaveReadLaneAt(AU1_AH2(v),WaveGetLaneIndex()^x));} + AH4 AWaveXorH4(AH4 v,AU1 x){return AH4_AU2(WaveReadLaneAt(AU2_AH4(v),WaveGetLaneIndex()^x));} + AW2 AWaveXorW2(AW2 v,AU1 x){return AW2_AU1(WaveReadLaneAt(AU1_AW2(v),WaveGetLaneIndex()^x));} + AW4 AWaveXorW4(AW4 v,AU1 x){return AW4_AU1(WaveReadLaneAt(AU1_AW4(v),WaveGetLaneIndex()^x));} + #endif + #endif +//============================================================================================================================== +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// GPU COMMON +// +// +//============================================================================================================================== +#ifdef A_GPU + // Negative and positive infinity. + #define A_INFP_F AF1_AU1(0x7f800000u) + #define A_INFN_F AF1_AU1(0xff800000u) +//------------------------------------------------------------------------------------------------------------------------------ + // Copy sign from 's' to positive 'd'. + AF1 ACpySgnF1(AF1 d,AF1 s){return AF1_AU1(AU1_AF1(d)|(AU1_AF1(s)&AU1_(0x80000000u)));} + AF2 ACpySgnF2(AF2 d,AF2 s){return AF2_AU2(AU2_AF2(d)|(AU2_AF2(s)&AU2_(0x80000000u)));} + AF3 ACpySgnF3(AF3 d,AF3 s){return AF3_AU3(AU3_AF3(d)|(AU3_AF3(s)&AU3_(0x80000000u)));} + AF4 ACpySgnF4(AF4 d,AF4 s){return AF4_AU4(AU4_AF4(d)|(AU4_AF4(s)&AU4_(0x80000000u)));} +//------------------------------------------------------------------------------------------------------------------------------ + // Single operation to return (useful to create a mask to use in lerp for branch free logic), + // m=NaN := 0 + // m>=0 := 0 + // m<0 := 1 + // Uses the following useful floating point logic, + // saturate(+a*(-INF)==-INF) := 0 + // saturate( 0*(-INF)== NaN) := 0 + // saturate(-a*(-INF)==+INF) := 1 + AF1 ASignedF1(AF1 m){return ASatF1(m*AF1_(A_INFN_F));} + AF2 ASignedF2(AF2 m){return ASatF2(m*AF2_(A_INFN_F));} + AF3 ASignedF3(AF3 m){return ASatF3(m*AF3_(A_INFN_F));} + AF4 ASignedF4(AF4 m){return ASatF4(m*AF4_(A_INFN_F));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AGtZeroF1(AF1 m){return ASatF1(m*AF1_(A_INFP_F));} + AF2 AGtZeroF2(AF2 m){return ASatF2(m*AF2_(A_INFP_F));} + AF3 AGtZeroF3(AF3 m){return ASatF3(m*AF3_(A_INFP_F));} + AF4 AGtZeroF4(AF4 m){return ASatF4(m*AF4_(A_INFP_F));} +//============================================================================================================================== + #ifdef A_HALF + #ifdef A_HLSL_6_2 + #define A_INFP_H AH1_AW1((uint16_t)0x7c00u) + #define A_INFN_H AH1_AW1((uint16_t)0xfc00u) + #else + #define A_INFP_H AH1_AW1(0x7c00u) + #define A_INFN_H AH1_AW1(0xfc00u) + #endif + +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ACpySgnH1(AH1 d,AH1 s){return AH1_AW1(AW1_AH1(d)|(AW1_AH1(s)&AW1_(0x8000u)));} + AH2 ACpySgnH2(AH2 d,AH2 s){return AH2_AW2(AW2_AH2(d)|(AW2_AH2(s)&AW2_(0x8000u)));} + AH3 ACpySgnH3(AH3 d,AH3 s){return AH3_AW3(AW3_AH3(d)|(AW3_AH3(s)&AW3_(0x8000u)));} + AH4 ACpySgnH4(AH4 d,AH4 s){return AH4_AW4(AW4_AH4(d)|(AW4_AH4(s)&AW4_(0x8000u)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ASignedH1(AH1 m){return ASatH1(m*AH1_(A_INFN_H));} + AH2 ASignedH2(AH2 m){return ASatH2(m*AH2_(A_INFN_H));} + AH3 ASignedH3(AH3 m){return ASatH3(m*AH3_(A_INFN_H));} + AH4 ASignedH4(AH4 m){return ASatH4(m*AH4_(A_INFN_H));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AGtZeroH1(AH1 m){return ASatH1(m*AH1_(A_INFP_H));} + AH2 AGtZeroH2(AH2 m){return ASatH2(m*AH2_(A_INFP_H));} + AH3 AGtZeroH3(AH3 m){return ASatH3(m*AH3_(A_INFP_H));} + AH4 AGtZeroH4(AH4 m){return ASatH4(m*AH4_(A_INFP_H));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// [FIS] FLOAT INTEGER SORTABLE +//------------------------------------------------------------------------------------------------------------------------------ +// Float to integer sortable. +// - If sign bit=0, flip the sign bit (positives). +// - If sign bit=1, flip all bits (negatives). +// Integer sortable to float. +// - If sign bit=1, flip the sign bit (positives). +// - If sign bit=0, flip all bits (negatives). +// Has nice side effects. +// - Larger integers are more positive values. +// - Float zero is mapped to center of integers (so clear to integer zero is a nice default for atomic max usage). +// Burns 3 ops for conversion {shift,or,xor}. +//============================================================================================================================== + AU1 AFisToU1(AU1 x){return x^(( AShrSU1(x,AU1_(31)))|AU1_(0x80000000));} + AU1 AFisFromU1(AU1 x){return x^((~AShrSU1(x,AU1_(31)))|AU1_(0x80000000));} +//------------------------------------------------------------------------------------------------------------------------------ + // Just adjust high 16-bit value (useful when upper part of 32-bit word is a 16-bit float value). + AU1 AFisToHiU1(AU1 x){return x^(( AShrSU1(x,AU1_(15)))|AU1_(0x80000000));} + AU1 AFisFromHiU1(AU1 x){return x^((~AShrSU1(x,AU1_(15)))|AU1_(0x80000000));} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_HALF + AW1 AFisToW1(AW1 x){return x^(( AShrSW1(x,AW1_(15)))|AW1_(0x8000));} + AW1 AFisFromW1(AW1 x){return x^((~AShrSW1(x,AW1_(15)))|AW1_(0x8000));} +//------------------------------------------------------------------------------------------------------------------------------ + AW2 AFisToW2(AW2 x){return x^(( AShrSW2(x,AW2_(15)))|AW2_(0x8000));} + AW2 AFisFromW2(AW2 x){return x^((~AShrSW2(x,AW2_(15)))|AW2_(0x8000));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// [PERM] V_PERM_B32 +//------------------------------------------------------------------------------------------------------------------------------ +// Support for V_PERM_B32 started in the 3rd generation of GCN. +//------------------------------------------------------------------------------------------------------------------------------ +// yyyyxxxx - The 'i' input. +// 76543210 +// ======== +// HGFEDCBA - Naming on permutation. +//------------------------------------------------------------------------------------------------------------------------------ +// TODO +// ==== +// - Make sure compiler optimizes this. +//============================================================================================================================== + #ifdef A_HALF + AU1 APerm0E0A(AU2 i){return((i.x )&0xffu)|((i.y<<16)&0xff0000u);} + AU1 APerm0F0B(AU2 i){return((i.x>> 8)&0xffu)|((i.y<< 8)&0xff0000u);} + AU1 APerm0G0C(AU2 i){return((i.x>>16)&0xffu)|((i.y )&0xff0000u);} + AU1 APerm0H0D(AU2 i){return((i.x>>24)&0xffu)|((i.y>> 8)&0xff0000u);} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 APermHGFA(AU2 i){return((i.x )&0x000000ffu)|(i.y&0xffffff00u);} + AU1 APermHGFC(AU2 i){return((i.x>>16)&0x000000ffu)|(i.y&0xffffff00u);} + AU1 APermHGAE(AU2 i){return((i.x<< 8)&0x0000ff00u)|(i.y&0xffff00ffu);} + AU1 APermHGCE(AU2 i){return((i.x>> 8)&0x0000ff00u)|(i.y&0xffff00ffu);} + AU1 APermHAFE(AU2 i){return((i.x<<16)&0x00ff0000u)|(i.y&0xff00ffffu);} + AU1 APermHCFE(AU2 i){return((i.x )&0x00ff0000u)|(i.y&0xff00ffffu);} + AU1 APermAGFE(AU2 i){return((i.x<<24)&0xff000000u)|(i.y&0x00ffffffu);} + AU1 APermCGFE(AU2 i){return((i.x<< 8)&0xff000000u)|(i.y&0x00ffffffu);} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 APermGCEA(AU2 i){return((i.x)&0x00ff00ffu)|((i.y<<8)&0xff00ff00u);} + AU1 APermGECA(AU2 i){return(((i.x)&0xffu)|((i.x>>8)&0xff00u)|((i.y<<16)&0xff0000u)|((i.y<<8)&0xff000000u));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// [BUC] BYTE UNSIGNED CONVERSION +//------------------------------------------------------------------------------------------------------------------------------ +// Designed to use the optimal conversion, enables the scaling to possibly be factored into other computation. +// Works on a range of {0 to A_BUC_<32,16>}, for <32-bit, and 16-bit> respectively. +//------------------------------------------------------------------------------------------------------------------------------ +// OPCODE NOTES +// ============ +// GCN does not do UNORM or SNORM for bytes in opcodes. +// - V_CVT_F32_UBYTE{0,1,2,3} - Unsigned byte to float. +// - V_CVT_PKACC_U8_F32 - Float to unsigned byte (does bit-field insert into 32-bit integer). +// V_PERM_B32 does byte packing with ability to zero fill bytes as well. +// - Can pull out byte values from two sources, and zero fill upper 8-bits of packed hi and lo. +//------------------------------------------------------------------------------------------------------------------------------ +// BYTE : FLOAT - ABuc{0,1,2,3}{To,From}U1() - Designed for V_CVT_F32_UBYTE* and V_CVT_PKACCUM_U8_F32 ops. +// ==== ===== +// 0 : 0 +// 1 : 1 +// ... +// 255 : 255 +// : 256 (just outside the encoding range) +//------------------------------------------------------------------------------------------------------------------------------ +// BYTE : FLOAT - ABuc{0,1,2,3}{To,From}U2() - Designed for 16-bit denormal tricks and V_PERM_B32. +// ==== ===== +// 0 : 0 +// 1 : 1/512 +// 2 : 1/256 +// ... +// 64 : 1/8 +// 128 : 1/4 +// 255 : 255/512 +// : 1/2 (just outside the encoding range) +//------------------------------------------------------------------------------------------------------------------------------ +// OPTIMAL IMPLEMENTATIONS ON AMD ARCHITECTURES +// ============================================ +// r=ABuc0FromU1(i) +// V_CVT_F32_UBYTE0 r,i +// -------------------------------------------- +// r=ABuc0ToU1(d,i) +// V_CVT_PKACCUM_U8_F32 r,i,0,d +// -------------------------------------------- +// d=ABuc0FromU2(i) +// Where 'k0' is an SGPR with 0x0E0A +// Where 'k1' is an SGPR with {32768.0} packed into the lower 16-bits +// V_PERM_B32 d,i.x,i.y,k0 +// V_PK_FMA_F16 d,d,k1.x,0 +// -------------------------------------------- +// r=ABuc0ToU2(d,i) +// Where 'k0' is an SGPR with {1.0/32768.0} packed into the lower 16-bits +// Where 'k1' is an SGPR with 0x???? +// Where 'k2' is an SGPR with 0x???? +// V_PK_FMA_F16 i,i,k0.x,0 +// V_PERM_B32 r.x,i,i,k1 +// V_PERM_B32 r.y,i,i,k2 +//============================================================================================================================== + // Peak range for 32-bit and 16-bit operations. + #define A_BUC_32 (255.0) + #define A_BUC_16 (255.0/512.0) +//============================================================================================================================== + #if 1 + // Designed to be one V_CVT_PKACCUM_U8_F32. + // The extra min is required to pattern match to V_CVT_PKACCUM_U8_F32. + AU1 ABuc0ToU1(AU1 d,AF1 i){return (d&0xffffff00u)|((min(AU1(i),255u) )&(0x000000ffu));} + AU1 ABuc1ToU1(AU1 d,AF1 i){return (d&0xffff00ffu)|((min(AU1(i),255u)<< 8)&(0x0000ff00u));} + AU1 ABuc2ToU1(AU1 d,AF1 i){return (d&0xff00ffffu)|((min(AU1(i),255u)<<16)&(0x00ff0000u));} + AU1 ABuc3ToU1(AU1 d,AF1 i){return (d&0x00ffffffu)|((min(AU1(i),255u)<<24)&(0xff000000u));} +//------------------------------------------------------------------------------------------------------------------------------ + // Designed to be one V_CVT_F32_UBYTE*. + AF1 ABuc0FromU1(AU1 i){return AF1((i )&255u);} + AF1 ABuc1FromU1(AU1 i){return AF1((i>> 8)&255u);} + AF1 ABuc2FromU1(AU1 i){return AF1((i>>16)&255u);} + AF1 ABuc3FromU1(AU1 i){return AF1((i>>24)&255u);} + #endif +//============================================================================================================================== + #ifdef A_HALF + // Takes {x0,x1} and {y0,y1} and builds {{x0,y0},{x1,y1}}. + AW2 ABuc01ToW2(AH2 x,AH2 y){x*=AH2_(1.0/32768.0);y*=AH2_(1.0/32768.0); + return AW2_AU1(APermGCEA(AU2(AU1_AW2(AW2_AH2(x)),AU1_AW2(AW2_AH2(y)))));} +//------------------------------------------------------------------------------------------------------------------------------ + // Designed for 3 ops to do SOA to AOS and conversion. + AU2 ABuc0ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0))); + return AU2(APermHGFA(AU2(d.x,b)),APermHGFC(AU2(d.y,b)));} + AU2 ABuc1ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0))); + return AU2(APermHGAE(AU2(d.x,b)),APermHGCE(AU2(d.y,b)));} + AU2 ABuc2ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0))); + return AU2(APermHAFE(AU2(d.x,b)),APermHCFE(AU2(d.y,b)));} + AU2 ABuc3ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0))); + return AU2(APermAGFE(AU2(d.x,b)),APermCGFE(AU2(d.y,b)));} +//------------------------------------------------------------------------------------------------------------------------------ + // Designed for 2 ops to do both AOS to SOA, and conversion. + AH2 ABuc0FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0E0A(i)))*AH2_(32768.0);} + AH2 ABuc1FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0F0B(i)))*AH2_(32768.0);} + AH2 ABuc2FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0G0C(i)))*AH2_(32768.0);} + AH2 ABuc3FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0H0D(i)))*AH2_(32768.0);} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// [BSC] BYTE SIGNED CONVERSION +//------------------------------------------------------------------------------------------------------------------------------ +// Similar to [BUC]. +// Works on a range of {-/+ A_BSC_<32,16>}, for <32-bit, and 16-bit> respectively. +//------------------------------------------------------------------------------------------------------------------------------ +// ENCODING (without zero-based encoding) +// ======== +// 0 = unused (can be used to mean something else) +// 1 = lowest value +// 128 = exact zero center (zero based encoding +// 255 = highest value +//------------------------------------------------------------------------------------------------------------------------------ +// Zero-based [Zb] flips the MSB bit of the byte (making 128 "exact zero" actually zero). +// This is useful if there is a desire for cleared values to decode as zero. +//------------------------------------------------------------------------------------------------------------------------------ +// BYTE : FLOAT - ABsc{0,1,2,3}{To,From}U2() - Designed for 16-bit denormal tricks and V_PERM_B32. +// ==== ===== +// 0 : -127/512 (unused) +// 1 : -126/512 +// 2 : -125/512 +// ... +// 128 : 0 +// ... +// 255 : 127/512 +// : 1/4 (just outside the encoding range) +//============================================================================================================================== + // Peak range for 32-bit and 16-bit operations. + #define A_BSC_32 (127.0) + #define A_BSC_16 (127.0/512.0) +//============================================================================================================================== + #if 1 + AU1 ABsc0ToU1(AU1 d,AF1 i){return (d&0xffffff00u)|((min(AU1(i+128.0),255u) )&(0x000000ffu));} + AU1 ABsc1ToU1(AU1 d,AF1 i){return (d&0xffff00ffu)|((min(AU1(i+128.0),255u)<< 8)&(0x0000ff00u));} + AU1 ABsc2ToU1(AU1 d,AF1 i){return (d&0xff00ffffu)|((min(AU1(i+128.0),255u)<<16)&(0x00ff0000u));} + AU1 ABsc3ToU1(AU1 d,AF1 i){return (d&0x00ffffffu)|((min(AU1(i+128.0),255u)<<24)&(0xff000000u));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 ABsc0ToZbU1(AU1 d,AF1 i){return ((d&0xffffff00u)|((min(AU1(trunc(i)+128.0),255u) )&(0x000000ffu)))^0x00000080u;} + AU1 ABsc1ToZbU1(AU1 d,AF1 i){return ((d&0xffff00ffu)|((min(AU1(trunc(i)+128.0),255u)<< 8)&(0x0000ff00u)))^0x00008000u;} + AU1 ABsc2ToZbU1(AU1 d,AF1 i){return ((d&0xff00ffffu)|((min(AU1(trunc(i)+128.0),255u)<<16)&(0x00ff0000u)))^0x00800000u;} + AU1 ABsc3ToZbU1(AU1 d,AF1 i){return ((d&0x00ffffffu)|((min(AU1(trunc(i)+128.0),255u)<<24)&(0xff000000u)))^0x80000000u;} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ABsc0FromU1(AU1 i){return AF1((i )&255u)-128.0;} + AF1 ABsc1FromU1(AU1 i){return AF1((i>> 8)&255u)-128.0;} + AF1 ABsc2FromU1(AU1 i){return AF1((i>>16)&255u)-128.0;} + AF1 ABsc3FromU1(AU1 i){return AF1((i>>24)&255u)-128.0;} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ABsc0FromZbU1(AU1 i){return AF1(((i )&255u)^0x80u)-128.0;} + AF1 ABsc1FromZbU1(AU1 i){return AF1(((i>> 8)&255u)^0x80u)-128.0;} + AF1 ABsc2FromZbU1(AU1 i){return AF1(((i>>16)&255u)^0x80u)-128.0;} + AF1 ABsc3FromZbU1(AU1 i){return AF1(((i>>24)&255u)^0x80u)-128.0;} + #endif +//============================================================================================================================== + #ifdef A_HALF + // Takes {x0,x1} and {y0,y1} and builds {{x0,y0},{x1,y1}}. + AW2 ABsc01ToW2(AH2 x,AH2 y){x=x*AH2_(1.0/32768.0)+AH2_(0.25/32768.0);y=y*AH2_(1.0/32768.0)+AH2_(0.25/32768.0); + return AW2_AU1(APermGCEA(AU2(AU1_AW2(AW2_AH2(x)),AU1_AW2(AW2_AH2(y)))));} +//------------------------------------------------------------------------------------------------------------------------------ + AU2 ABsc0ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0))); + return AU2(APermHGFA(AU2(d.x,b)),APermHGFC(AU2(d.y,b)));} + AU2 ABsc1ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0))); + return AU2(APermHGAE(AU2(d.x,b)),APermHGCE(AU2(d.y,b)));} + AU2 ABsc2ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0))); + return AU2(APermHAFE(AU2(d.x,b)),APermHCFE(AU2(d.y,b)));} + AU2 ABsc3ToU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0))); + return AU2(APermAGFE(AU2(d.x,b)),APermCGFE(AU2(d.y,b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AU2 ABsc0ToZbU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0)))^0x00800080u; + return AU2(APermHGFA(AU2(d.x,b)),APermHGFC(AU2(d.y,b)));} + AU2 ABsc1ToZbU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0)))^0x00800080u; + return AU2(APermHGAE(AU2(d.x,b)),APermHGCE(AU2(d.y,b)));} + AU2 ABsc2ToZbU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0)))^0x00800080u; + return AU2(APermHAFE(AU2(d.x,b)),APermHCFE(AU2(d.y,b)));} + AU2 ABsc3ToZbU2(AU2 d,AH2 i){AU1 b=AU1_AW2(AW2_AH2(i*AH2_(1.0/32768.0)+AH2_(0.25/32768.0)))^0x00800080u; + return AU2(APermAGFE(AU2(d.x,b)),APermCGFE(AU2(d.y,b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH2 ABsc0FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0E0A(i)))*AH2_(32768.0)-AH2_(0.25);} + AH2 ABsc1FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0F0B(i)))*AH2_(32768.0)-AH2_(0.25);} + AH2 ABsc2FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0G0C(i)))*AH2_(32768.0)-AH2_(0.25);} + AH2 ABsc3FromU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0H0D(i)))*AH2_(32768.0)-AH2_(0.25);} +//------------------------------------------------------------------------------------------------------------------------------ + AH2 ABsc0FromZbU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0E0A(i)^0x00800080u))*AH2_(32768.0)-AH2_(0.25);} + AH2 ABsc1FromZbU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0F0B(i)^0x00800080u))*AH2_(32768.0)-AH2_(0.25);} + AH2 ABsc2FromZbU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0G0C(i)^0x00800080u))*AH2_(32768.0)-AH2_(0.25);} + AH2 ABsc3FromZbU2(AU2 i){return AH2_AW2(AW2_AU1(APerm0H0D(i)^0x00800080u))*AH2_(32768.0)-AH2_(0.25);} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HALF APPROXIMATIONS +//------------------------------------------------------------------------------------------------------------------------------ +// These support only positive inputs. +// Did not see value yet in specialization for range. +// Using quick testing, ended up mostly getting the same "best" approximation for various ranges. +// With hardware that can co-execute transcendentals, the value in approximations could be less than expected. +// However from a latency perspective, if execution of a transcendental is 4 clk, with no packed support, -> 8 clk total. +// And co-execution would require a compiler interleaving a lot of independent work for packed usage. +//------------------------------------------------------------------------------------------------------------------------------ +// The one Newton Raphson iteration form of rsq() was skipped (requires 6 ops total). +// Same with sqrt(), as this could be x*rsq() (7 ops). +//============================================================================================================================== + #ifdef A_HALF + // Minimize squared error across full positive range, 2 ops. + // The 0x1de2 based approximation maps {0 to 1} input maps to < 1 output. + AH1 APrxLoSqrtH1(AH1 a){return AH1_AW1((AW1_AH1(a)>>AW1_(1))+AW1_(0x1de2));} + AH2 APrxLoSqrtH2(AH2 a){return AH2_AW2((AW2_AH2(a)>>AW2_(1))+AW2_(0x1de2));} + AH3 APrxLoSqrtH3(AH3 a){return AH3_AW3((AW3_AH3(a)>>AW3_(1))+AW3_(0x1de2));} + AH4 APrxLoSqrtH4(AH4 a){return AH4_AW4((AW4_AH4(a)>>AW4_(1))+AW4_(0x1de2));} +//------------------------------------------------------------------------------------------------------------------------------ + // Lower precision estimation, 1 op. + // Minimize squared error across {smallest normal to 16384.0}. + AH1 APrxLoRcpH1(AH1 a){return AH1_AW1(AW1_(0x7784)-AW1_AH1(a));} + AH2 APrxLoRcpH2(AH2 a){return AH2_AW2(AW2_(0x7784)-AW2_AH2(a));} + AH3 APrxLoRcpH3(AH3 a){return AH3_AW3(AW3_(0x7784)-AW3_AH3(a));} + AH4 APrxLoRcpH4(AH4 a){return AH4_AW4(AW4_(0x7784)-AW4_AH4(a));} +//------------------------------------------------------------------------------------------------------------------------------ + // Medium precision estimation, one Newton Raphson iteration, 3 ops. + AH1 APrxMedRcpH1(AH1 a){AH1 b=AH1_AW1(AW1_(0x778d)-AW1_AH1(a));return b*(-b*a+AH1_(2.0));} + AH2 APrxMedRcpH2(AH2 a){AH2 b=AH2_AW2(AW2_(0x778d)-AW2_AH2(a));return b*(-b*a+AH2_(2.0));} + AH3 APrxMedRcpH3(AH3 a){AH3 b=AH3_AW3(AW3_(0x778d)-AW3_AH3(a));return b*(-b*a+AH3_(2.0));} + AH4 APrxMedRcpH4(AH4 a){AH4 b=AH4_AW4(AW4_(0x778d)-AW4_AH4(a));return b*(-b*a+AH4_(2.0));} +//------------------------------------------------------------------------------------------------------------------------------ + // Minimize squared error across {smallest normal to 16384.0}, 2 ops. + AH1 APrxLoRsqH1(AH1 a){return AH1_AW1(AW1_(0x59a3)-(AW1_AH1(a)>>AW1_(1)));} + AH2 APrxLoRsqH2(AH2 a){return AH2_AW2(AW2_(0x59a3)-(AW2_AH2(a)>>AW2_(1)));} + AH3 APrxLoRsqH3(AH3 a){return AH3_AW3(AW3_(0x59a3)-(AW3_AH3(a)>>AW3_(1)));} + AH4 APrxLoRsqH4(AH4 a){return AH4_AW4(AW4_(0x59a3)-(AW4_AH4(a)>>AW4_(1)));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// FLOAT APPROXIMATIONS +//------------------------------------------------------------------------------------------------------------------------------ +// Michal Drobot has an excellent presentation on these: "Low Level Optimizations For GCN", +// - Idea dates back to SGI, then to Quake 3, etc. +// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +// - sqrt(x)=rsqrt(x)*x +// - rcp(x)=rsqrt(x)*rsqrt(x) for positive x +// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +//------------------------------------------------------------------------------------------------------------------------------ +// These below are from perhaps less complete searching for optimal. +// Used FP16 normal range for testing with +4096 32-bit step size for sampling error. +// So these match up well with the half approximations. +//============================================================================================================================== + AF1 APrxLoSqrtF1(AF1 a){return AF1_AU1((AU1_AF1(a)>>AU1_(1))+AU1_(0x1fbc4639));} + AF1 APrxLoRcpF1(AF1 a){return AF1_AU1(AU1_(0x7ef07ebb)-AU1_AF1(a));} + AF1 APrxMedRcpF1(AF1 a){AF1 b=AF1_AU1(AU1_(0x7ef19fff)-AU1_AF1(a));return b*(-b*a+AF1_(2.0));} + AF1 APrxLoRsqF1(AF1 a){return AF1_AU1(AU1_(0x5f347d74)-(AU1_AF1(a)>>AU1_(1)));} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 APrxLoSqrtF2(AF2 a){return AF2_AU2((AU2_AF2(a)>>AU2_(1))+AU2_(0x1fbc4639));} + AF2 APrxLoRcpF2(AF2 a){return AF2_AU2(AU2_(0x7ef07ebb)-AU2_AF2(a));} + AF2 APrxMedRcpF2(AF2 a){AF2 b=AF2_AU2(AU2_(0x7ef19fff)-AU2_AF2(a));return b*(-b*a+AF2_(2.0));} + AF2 APrxLoRsqF2(AF2 a){return AF2_AU2(AU2_(0x5f347d74)-(AU2_AF2(a)>>AU2_(1)));} +//------------------------------------------------------------------------------------------------------------------------------ + AF3 APrxLoSqrtF3(AF3 a){return AF3_AU3((AU3_AF3(a)>>AU3_(1))+AU3_(0x1fbc4639));} + AF3 APrxLoRcpF3(AF3 a){return AF3_AU3(AU3_(0x7ef07ebb)-AU3_AF3(a));} + AF3 APrxMedRcpF3(AF3 a){AF3 b=AF3_AU3(AU3_(0x7ef19fff)-AU3_AF3(a));return b*(-b*a+AF3_(2.0));} + AF3 APrxLoRsqF3(AF3 a){return AF3_AU3(AU3_(0x5f347d74)-(AU3_AF3(a)>>AU3_(1)));} +//------------------------------------------------------------------------------------------------------------------------------ + AF4 APrxLoSqrtF4(AF4 a){return AF4_AU4((AU4_AF4(a)>>AU4_(1))+AU4_(0x1fbc4639));} + AF4 APrxLoRcpF4(AF4 a){return AF4_AU4(AU4_(0x7ef07ebb)-AU4_AF4(a));} + AF4 APrxMedRcpF4(AF4 a){AF4 b=AF4_AU4(AU4_(0x7ef19fff)-AU4_AF4(a));return b*(-b*a+AF4_(2.0));} + AF4 APrxLoRsqF4(AF4 a){return AF4_AU4(AU4_(0x5f347d74)-(AU4_AF4(a)>>AU4_(1)));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// PQ APPROXIMATIONS +//------------------------------------------------------------------------------------------------------------------------------ +// PQ is very close to x^(1/8). The functions below Use the fast float approximation method to do +// PQ<~>Gamma2 (4th power and fast 4th root) and PQ<~>Linear (8th power and fast 8th root). Maximum error is ~0.2%. +//============================================================================================================================== +// Helpers + AF1 Quart(AF1 a) { a = a * a; return a * a;} + AF1 Oct(AF1 a) { a = a * a; a = a * a; return a * a; } + AF2 Quart(AF2 a) { a = a * a; return a * a; } + AF2 Oct(AF2 a) { a = a * a; a = a * a; return a * a; } + AF3 Quart(AF3 a) { a = a * a; return a * a; } + AF3 Oct(AF3 a) { a = a * a; a = a * a; return a * a; } + AF4 Quart(AF4 a) { a = a * a; return a * a; } + AF4 Oct(AF4 a) { a = a * a; a = a * a; return a * a; } + //------------------------------------------------------------------------------------------------------------------------------ + AF1 APrxPQToGamma2(AF1 a) { return Quart(a); } + AF1 APrxPQToLinear(AF1 a) { return Oct(a); } + AF1 APrxLoGamma2ToPQ(AF1 a) { return AF1_AU1((AU1_AF1(a) >> AU1_(2)) + AU1_(0x2F9A4E46)); } + AF1 APrxMedGamma2ToPQ(AF1 a) { AF1 b = AF1_AU1((AU1_AF1(a) >> AU1_(2)) + AU1_(0x2F9A4E46)); AF1 b4 = Quart(b); return b - b * (b4 - a) / (AF1_(4.0) * b4); } + AF1 APrxHighGamma2ToPQ(AF1 a) { return sqrt(sqrt(a)); } + AF1 APrxLoLinearToPQ(AF1 a) { return AF1_AU1((AU1_AF1(a) >> AU1_(3)) + AU1_(0x378D8723)); } + AF1 APrxMedLinearToPQ(AF1 a) { AF1 b = AF1_AU1((AU1_AF1(a) >> AU1_(3)) + AU1_(0x378D8723)); AF1 b8 = Oct(b); return b - b * (b8 - a) / (AF1_(8.0) * b8); } + AF1 APrxHighLinearToPQ(AF1 a) { return sqrt(sqrt(sqrt(a))); } + //------------------------------------------------------------------------------------------------------------------------------ + AF2 APrxPQToGamma2(AF2 a) { return Quart(a); } + AF2 APrxPQToLinear(AF2 a) { return Oct(a); } + AF2 APrxLoGamma2ToPQ(AF2 a) { return AF2_AU2((AU2_AF2(a) >> AU2_(2)) + AU2_(0x2F9A4E46)); } + AF2 APrxMedGamma2ToPQ(AF2 a) { AF2 b = AF2_AU2((AU2_AF2(a) >> AU2_(2)) + AU2_(0x2F9A4E46)); AF2 b4 = Quart(b); return b - b * (b4 - a) / (AF1_(4.0) * b4); } + AF2 APrxHighGamma2ToPQ(AF2 a) { return sqrt(sqrt(a)); } + AF2 APrxLoLinearToPQ(AF2 a) { return AF2_AU2((AU2_AF2(a) >> AU2_(3)) + AU2_(0x378D8723)); } + AF2 APrxMedLinearToPQ(AF2 a) { AF2 b = AF2_AU2((AU2_AF2(a) >> AU2_(3)) + AU2_(0x378D8723)); AF2 b8 = Oct(b); return b - b * (b8 - a) / (AF1_(8.0) * b8); } + AF2 APrxHighLinearToPQ(AF2 a) { return sqrt(sqrt(sqrt(a))); } + //------------------------------------------------------------------------------------------------------------------------------ + AF3 APrxPQToGamma2(AF3 a) { return Quart(a); } + AF3 APrxPQToLinear(AF3 a) { return Oct(a); } + AF3 APrxLoGamma2ToPQ(AF3 a) { return AF3_AU3((AU3_AF3(a) >> AU3_(2)) + AU3_(0x2F9A4E46)); } + AF3 APrxMedGamma2ToPQ(AF3 a) { AF3 b = AF3_AU3((AU3_AF3(a) >> AU3_(2)) + AU3_(0x2F9A4E46)); AF3 b4 = Quart(b); return b - b * (b4 - a) / (AF1_(4.0) * b4); } + AF3 APrxHighGamma2ToPQ(AF3 a) { return sqrt(sqrt(a)); } + AF3 APrxLoLinearToPQ(AF3 a) { return AF3_AU3((AU3_AF3(a) >> AU3_(3)) + AU3_(0x378D8723)); } + AF3 APrxMedLinearToPQ(AF3 a) { AF3 b = AF3_AU3((AU3_AF3(a) >> AU3_(3)) + AU3_(0x378D8723)); AF3 b8 = Oct(b); return b - b * (b8 - a) / (AF1_(8.0) * b8); } + AF3 APrxHighLinearToPQ(AF3 a) { return sqrt(sqrt(sqrt(a))); } + //------------------------------------------------------------------------------------------------------------------------------ + AF4 APrxPQToGamma2(AF4 a) { return Quart(a); } + AF4 APrxPQToLinear(AF4 a) { return Oct(a); } + AF4 APrxLoGamma2ToPQ(AF4 a) { return AF4_AU4((AU4_AF4(a) >> AU4_(2)) + AU4_(0x2F9A4E46)); } + AF4 APrxMedGamma2ToPQ(AF4 a) { AF4 b = AF4_AU4((AU4_AF4(a) >> AU4_(2)) + AU4_(0x2F9A4E46)); AF4 b4 = Quart(b); return b - b * (b4 - a) / (AF1_(4.0) * b4); } + AF4 APrxHighGamma2ToPQ(AF4 a) { return sqrt(sqrt(a)); } + AF4 APrxLoLinearToPQ(AF4 a) { return AF4_AU4((AU4_AF4(a) >> AU4_(3)) + AU4_(0x378D8723)); } + AF4 APrxMedLinearToPQ(AF4 a) { AF4 b = AF4_AU4((AU4_AF4(a) >> AU4_(3)) + AU4_(0x378D8723)); AF4 b8 = Oct(b); return b - b * (b8 - a) / (AF1_(8.0) * b8); } + AF4 APrxHighLinearToPQ(AF4 a) { return sqrt(sqrt(sqrt(a))); } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// PARABOLIC SIN & COS +//------------------------------------------------------------------------------------------------------------------------------ +// Approximate answers to transcendental questions. +//------------------------------------------------------------------------------------------------------------------------------ +//============================================================================================================================== + #if 1 + // Valid input range is {-1 to 1} representing {0 to 2 pi}. + // Output range is {-1/4 to 1/4} representing {-1 to 1}. + AF1 APSinF1(AF1 x){return x*abs(x)-x;} // MAD. + AF2 APSinF2(AF2 x){return x*abs(x)-x;} + AF1 APCosF1(AF1 x){x=AFractF1(x*AF1_(0.5)+AF1_(0.75));x=x*AF1_(2.0)-AF1_(1.0);return APSinF1(x);} // 3x MAD, FRACT + AF2 APCosF2(AF2 x){x=AFractF2(x*AF2_(0.5)+AF2_(0.75));x=x*AF2_(2.0)-AF2_(1.0);return APSinF2(x);} + AF2 APSinCosF1(AF1 x){AF1 y=AFractF1(x*AF1_(0.5)+AF1_(0.75));y=y*AF1_(2.0)-AF1_(1.0);return APSinF2(AF2(x,y));} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_HALF + // For a packed {sin,cos} pair, + // - Native takes 16 clocks and 4 issue slots (no packed transcendentals). + // - Parabolic takes 8 clocks and 8 issue slots (only fract is non-packed). + AH1 APSinH1(AH1 x){return x*abs(x)-x;} + AH2 APSinH2(AH2 x){return x*abs(x)-x;} // AND,FMA + AH1 APCosH1(AH1 x){x=AFractH1(x*AH1_(0.5)+AH1_(0.75));x=x*AH1_(2.0)-AH1_(1.0);return APSinH1(x);} + AH2 APCosH2(AH2 x){x=AFractH2(x*AH2_(0.5)+AH2_(0.75));x=x*AH2_(2.0)-AH2_(1.0);return APSinH2(x);} // 3x FMA, 2xFRACT, AND + AH2 APSinCosH1(AH1 x){AH1 y=AFractH1(x*AH1_(0.5)+AH1_(0.75));y=y*AH1_(2.0)-AH1_(1.0);return APSinH2(AH2(x,y));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// [ZOL] ZERO ONE LOGIC +//------------------------------------------------------------------------------------------------------------------------------ +// Conditional free logic designed for easy 16-bit packing, and backwards porting to 32-bit. +//------------------------------------------------------------------------------------------------------------------------------ +// 0 := false +// 1 := true +//------------------------------------------------------------------------------------------------------------------------------ +// AndNot(x,y) -> !(x&y) .... One op. +// AndOr(x,y,z) -> (x&y)|z ... One op. +// GtZero(x) -> x>0.0 ..... One op. +// Sel(x,y,z) -> x?y:z ..... Two ops, has no precision loss. +// Signed(x) -> x<0.0 ..... One op. +// ZeroPass(x,y) -> x?0:y ..... Two ops, 'y' is a pass through safe for aliasing as integer. +//------------------------------------------------------------------------------------------------------------------------------ +// OPTIMIZATION NOTES +// ================== +// - On Vega to use 2 constants in a packed op, pass in as one AW2 or one AH2 'k.xy' and use as 'k.xx' and 'k.yy'. +// For example 'a.xy*k.xx+k.yy'. +//============================================================================================================================== + #if 1 + AU1 AZolAndU1(AU1 x,AU1 y){return min(x,y);} + AU2 AZolAndU2(AU2 x,AU2 y){return min(x,y);} + AU3 AZolAndU3(AU3 x,AU3 y){return min(x,y);} + AU4 AZolAndU4(AU4 x,AU4 y){return min(x,y);} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AZolNotU1(AU1 x){return x^AU1_(1);} + AU2 AZolNotU2(AU2 x){return x^AU2_(1);} + AU3 AZolNotU3(AU3 x){return x^AU3_(1);} + AU4 AZolNotU4(AU4 x){return x^AU4_(1);} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AZolOrU1(AU1 x,AU1 y){return max(x,y);} + AU2 AZolOrU2(AU2 x,AU2 y){return max(x,y);} + AU3 AZolOrU3(AU3 x,AU3 y){return max(x,y);} + AU4 AZolOrU4(AU4 x,AU4 y){return max(x,y);} +//============================================================================================================================== + AU1 AZolF1ToU1(AF1 x){return AU1(x);} + AU2 AZolF2ToU2(AF2 x){return AU2(x);} + AU3 AZolF3ToU3(AF3 x){return AU3(x);} + AU4 AZolF4ToU4(AF4 x){return AU4(x);} +//------------------------------------------------------------------------------------------------------------------------------ + // 2 ops, denormals don't work in 32-bit on PC (and if they are enabled, OMOD is disabled). + AU1 AZolNotF1ToU1(AF1 x){return AU1(AF1_(1.0)-x);} + AU2 AZolNotF2ToU2(AF2 x){return AU2(AF2_(1.0)-x);} + AU3 AZolNotF3ToU3(AF3 x){return AU3(AF3_(1.0)-x);} + AU4 AZolNotF4ToU4(AF4 x){return AU4(AF4_(1.0)-x);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolU1ToF1(AU1 x){return AF1(x);} + AF2 AZolU2ToF2(AU2 x){return AF2(x);} + AF3 AZolU3ToF3(AU3 x){return AF3(x);} + AF4 AZolU4ToF4(AU4 x){return AF4(x);} +//============================================================================================================================== + AF1 AZolAndF1(AF1 x,AF1 y){return min(x,y);} + AF2 AZolAndF2(AF2 x,AF2 y){return min(x,y);} + AF3 AZolAndF3(AF3 x,AF3 y){return min(x,y);} + AF4 AZolAndF4(AF4 x,AF4 y){return min(x,y);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 ASolAndNotF1(AF1 x,AF1 y){return (-x)*y+AF1_(1.0);} + AF2 ASolAndNotF2(AF2 x,AF2 y){return (-x)*y+AF2_(1.0);} + AF3 ASolAndNotF3(AF3 x,AF3 y){return (-x)*y+AF3_(1.0);} + AF4 ASolAndNotF4(AF4 x,AF4 y){return (-x)*y+AF4_(1.0);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolAndOrF1(AF1 x,AF1 y,AF1 z){return ASatF1(x*y+z);} + AF2 AZolAndOrF2(AF2 x,AF2 y,AF2 z){return ASatF2(x*y+z);} + AF3 AZolAndOrF3(AF3 x,AF3 y,AF3 z){return ASatF3(x*y+z);} + AF4 AZolAndOrF4(AF4 x,AF4 y,AF4 z){return ASatF4(x*y+z);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolGtZeroF1(AF1 x){return ASatF1(x*AF1_(A_INFP_F));} + AF2 AZolGtZeroF2(AF2 x){return ASatF2(x*AF2_(A_INFP_F));} + AF3 AZolGtZeroF3(AF3 x){return ASatF3(x*AF3_(A_INFP_F));} + AF4 AZolGtZeroF4(AF4 x){return ASatF4(x*AF4_(A_INFP_F));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolNotF1(AF1 x){return AF1_(1.0)-x;} + AF2 AZolNotF2(AF2 x){return AF2_(1.0)-x;} + AF3 AZolNotF3(AF3 x){return AF3_(1.0)-x;} + AF4 AZolNotF4(AF4 x){return AF4_(1.0)-x;} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolOrF1(AF1 x,AF1 y){return max(x,y);} + AF2 AZolOrF2(AF2 x,AF2 y){return max(x,y);} + AF3 AZolOrF3(AF3 x,AF3 y){return max(x,y);} + AF4 AZolOrF4(AF4 x,AF4 y){return max(x,y);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolSelF1(AF1 x,AF1 y,AF1 z){AF1 r=(-x)*z+z;return x*y+r;} + AF2 AZolSelF2(AF2 x,AF2 y,AF2 z){AF2 r=(-x)*z+z;return x*y+r;} + AF3 AZolSelF3(AF3 x,AF3 y,AF3 z){AF3 r=(-x)*z+z;return x*y+r;} + AF4 AZolSelF4(AF4 x,AF4 y,AF4 z){AF4 r=(-x)*z+z;return x*y+r;} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolSignedF1(AF1 x){return ASatF1(x*AF1_(A_INFN_F));} + AF2 AZolSignedF2(AF2 x){return ASatF2(x*AF2_(A_INFN_F));} + AF3 AZolSignedF3(AF3 x){return ASatF3(x*AF3_(A_INFN_F));} + AF4 AZolSignedF4(AF4 x){return ASatF4(x*AF4_(A_INFN_F));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AZolZeroPassF1(AF1 x,AF1 y){return AF1_AU1((AU1_AF1(x)!=AU1_(0))?AU1_(0):AU1_AF1(y));} + AF2 AZolZeroPassF2(AF2 x,AF2 y){return AF2_AU2((AU2_AF2(x)!=AU2_(0))?AU2_(0):AU2_AF2(y));} + AF3 AZolZeroPassF3(AF3 x,AF3 y){return AF3_AU3((AU3_AF3(x)!=AU3_(0))?AU3_(0):AU3_AF3(y));} + AF4 AZolZeroPassF4(AF4 x,AF4 y){return AF4_AU4((AU4_AF4(x)!=AU4_(0))?AU4_(0):AU4_AF4(y));} + #endif +//============================================================================================================================== + #ifdef A_HALF + AW1 AZolAndW1(AW1 x,AW1 y){return min(x,y);} + AW2 AZolAndW2(AW2 x,AW2 y){return min(x,y);} + AW3 AZolAndW3(AW3 x,AW3 y){return min(x,y);} + AW4 AZolAndW4(AW4 x,AW4 y){return min(x,y);} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AZolNotW1(AW1 x){return x^AW1_(1);} + AW2 AZolNotW2(AW2 x){return x^AW2_(1);} + AW3 AZolNotW3(AW3 x){return x^AW3_(1);} + AW4 AZolNotW4(AW4 x){return x^AW4_(1);} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AZolOrW1(AW1 x,AW1 y){return max(x,y);} + AW2 AZolOrW2(AW2 x,AW2 y){return max(x,y);} + AW3 AZolOrW3(AW3 x,AW3 y){return max(x,y);} + AW4 AZolOrW4(AW4 x,AW4 y){return max(x,y);} +//============================================================================================================================== + // Uses denormal trick. + AW1 AZolH1ToW1(AH1 x){return AW1_AH1(x*AH1_AW1(AW1_(1)));} + AW2 AZolH2ToW2(AH2 x){return AW2_AH2(x*AH2_AW2(AW2_(1)));} + AW3 AZolH3ToW3(AH3 x){return AW3_AH3(x*AH3_AW3(AW3_(1)));} + AW4 AZolH4ToW4(AH4 x){return AW4_AH4(x*AH4_AW4(AW4_(1)));} +//------------------------------------------------------------------------------------------------------------------------------ + // AMD arch lacks a packed conversion opcode. + AH1 AZolW1ToH1(AW1 x){return AH1_AW1(x*AW1_AH1(AH1_(1.0)));} + AH2 AZolW2ToH2(AW2 x){return AH2_AW2(x*AW2_AH2(AH2_(1.0)));} + AH3 AZolW1ToH3(AW3 x){return AH3_AW3(x*AW3_AH3(AH3_(1.0)));} + AH4 AZolW2ToH4(AW4 x){return AH4_AW4(x*AW4_AH4(AH4_(1.0)));} +//============================================================================================================================== + AH1 AZolAndH1(AH1 x,AH1 y){return min(x,y);} + AH2 AZolAndH2(AH2 x,AH2 y){return min(x,y);} + AH3 AZolAndH3(AH3 x,AH3 y){return min(x,y);} + AH4 AZolAndH4(AH4 x,AH4 y){return min(x,y);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ASolAndNotH1(AH1 x,AH1 y){return (-x)*y+AH1_(1.0);} + AH2 ASolAndNotH2(AH2 x,AH2 y){return (-x)*y+AH2_(1.0);} + AH3 ASolAndNotH3(AH3 x,AH3 y){return (-x)*y+AH3_(1.0);} + AH4 ASolAndNotH4(AH4 x,AH4 y){return (-x)*y+AH4_(1.0);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AZolAndOrH1(AH1 x,AH1 y,AH1 z){return ASatH1(x*y+z);} + AH2 AZolAndOrH2(AH2 x,AH2 y,AH2 z){return ASatH2(x*y+z);} + AH3 AZolAndOrH3(AH3 x,AH3 y,AH3 z){return ASatH3(x*y+z);} + AH4 AZolAndOrH4(AH4 x,AH4 y,AH4 z){return ASatH4(x*y+z);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AZolGtZeroH1(AH1 x){return ASatH1(x*AH1_(A_INFP_H));} + AH2 AZolGtZeroH2(AH2 x){return ASatH2(x*AH2_(A_INFP_H));} + AH3 AZolGtZeroH3(AH3 x){return ASatH3(x*AH3_(A_INFP_H));} + AH4 AZolGtZeroH4(AH4 x){return ASatH4(x*AH4_(A_INFP_H));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AZolNotH1(AH1 x){return AH1_(1.0)-x;} + AH2 AZolNotH2(AH2 x){return AH2_(1.0)-x;} + AH3 AZolNotH3(AH3 x){return AH3_(1.0)-x;} + AH4 AZolNotH4(AH4 x){return AH4_(1.0)-x;} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AZolOrH1(AH1 x,AH1 y){return max(x,y);} + AH2 AZolOrH2(AH2 x,AH2 y){return max(x,y);} + AH3 AZolOrH3(AH3 x,AH3 y){return max(x,y);} + AH4 AZolOrH4(AH4 x,AH4 y){return max(x,y);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AZolSelH1(AH1 x,AH1 y,AH1 z){AH1 r=(-x)*z+z;return x*y+r;} + AH2 AZolSelH2(AH2 x,AH2 y,AH2 z){AH2 r=(-x)*z+z;return x*y+r;} + AH3 AZolSelH3(AH3 x,AH3 y,AH3 z){AH3 r=(-x)*z+z;return x*y+r;} + AH4 AZolSelH4(AH4 x,AH4 y,AH4 z){AH4 r=(-x)*z+z;return x*y+r;} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AZolSignedH1(AH1 x){return ASatH1(x*AH1_(A_INFN_H));} + AH2 AZolSignedH2(AH2 x){return ASatH2(x*AH2_(A_INFN_H));} + AH3 AZolSignedH3(AH3 x){return ASatH3(x*AH3_(A_INFN_H));} + AH4 AZolSignedH4(AH4 x){return ASatH4(x*AH4_(A_INFN_H));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// COLOR CONVERSIONS +//------------------------------------------------------------------------------------------------------------------------------ +// These are all linear to/from some other space (where 'linear' has been shortened out of the function name). +// So 'ToGamma' is 'LinearToGamma', and 'FromGamma' is 'LinearFromGamma'. +// These are branch free implementations. +// The AToSrgbF1() function is useful for stores for compute shaders for GPUs without hardware linear->sRGB store conversion. +//------------------------------------------------------------------------------------------------------------------------------ +// TRANSFER FUNCTIONS +// ================== +// 709 ..... Rec709 used for some HDTVs +// Gamma ... Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native +// Pq ...... PQ native for HDR10 +// Srgb .... The sRGB output, typical of PC displays, useful for 10-bit output, or storing to 8-bit UNORM without SRGB type +// Two ..... Gamma 2.0, fastest conversion (useful for intermediate pass approximations) +// Three ... Gamma 3.0, less fast, but good for HDR. +//------------------------------------------------------------------------------------------------------------------------------ +// KEEPING TO SPEC +// =============== +// Both Rec.709 and sRGB have a linear segment which as spec'ed would intersect the curved segment 2 times. +// (a.) For 8-bit sRGB, steps {0 to 10.3} are in the linear region (4% of the encoding range). +// (b.) For 8-bit 709, steps {0 to 20.7} are in the linear region (8% of the encoding range). +// Also there is a slight step in the transition regions. +// Precision of the coefficients in the spec being the likely cause. +// Main usage case of the sRGB code is to do the linear->sRGB conversion in a compute shader before store. +// This is to work around lack of hardware (typically only ROP does the conversion for free). +// To "correct" the linear segment, would be to introduce error, because hardware decode of sRGB->linear is fixed (and free). +// So this header keeps with the spec. +// For linear->sRGB transforms, the linear segment in some respects reduces error, because rounding in that region is linear. +// Rounding in the curved region in hardware (and fast software code) introduces error due to rounding in non-linear. +//------------------------------------------------------------------------------------------------------------------------------ +// FOR PQ +// ====== +// Both input and output is {0.0-1.0}, and where output 1.0 represents 10000.0 cd/m^2. +// All constants are only specified to FP32 precision. +// External PQ source reference, +// - https://github.com/ampas/aces-dev/blob/master/transforms/ctl/utilities/ACESlib.Utilities_Color.a1.0.1.ctl +//------------------------------------------------------------------------------------------------------------------------------ +// PACKED VERSIONS +// =============== +// These are the A*H2() functions. +// There is no PQ functions as FP16 seemed to not have enough precision for the conversion. +// The remaining functions are "good enough" for 8-bit, and maybe 10-bit if not concerned about a few 1-bit errors. +// Precision is lowest in the 709 conversion, higher in sRGB, higher still in Two and Gamma (when using 2.2 at least). +//------------------------------------------------------------------------------------------------------------------------------ +// NOTES +// ===== +// Could be faster for PQ conversions to be in ALU or a texture lookup depending on usage case. +//============================================================================================================================== + #if 1 + AF1 ATo709F1(AF1 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099); + return clamp(j.x ,c*j.y ,pow(c,j.z )*k.x +k.y );} + AF2 ATo709F2(AF2 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099); + return clamp(j.xx ,c*j.yy ,pow(c,j.zz )*k.xx +k.yy );} + AF3 ATo709F3(AF3 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099); + return clamp(j.xxx,c*j.yyy,pow(c,j.zzz)*k.xxx+k.yyy);} +//------------------------------------------------------------------------------------------------------------------------------ + // Note 'rcpX' is '1/x', where the 'x' is what would be used in AFromGamma(). + AF1 AToGammaF1(AF1 c,AF1 rcpX){return pow(c,AF1_(rcpX));} + AF2 AToGammaF2(AF2 c,AF1 rcpX){return pow(c,AF2_(rcpX));} + AF3 AToGammaF3(AF3 c,AF1 rcpX){return pow(c,AF3_(rcpX));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AToPqF1(AF1 x){AF1 p=pow(x,AF1_(0.159302)); + return pow((AF1_(0.835938)+AF1_(18.8516)*p)/(AF1_(1.0)+AF1_(18.6875)*p),AF1_(78.8438));} + AF2 AToPqF1(AF2 x){AF2 p=pow(x,AF2_(0.159302)); + return pow((AF2_(0.835938)+AF2_(18.8516)*p)/(AF2_(1.0)+AF2_(18.6875)*p),AF2_(78.8438));} + AF3 AToPqF1(AF3 x){AF3 p=pow(x,AF3_(0.159302)); + return pow((AF3_(0.835938)+AF3_(18.8516)*p)/(AF3_(1.0)+AF3_(18.6875)*p),AF3_(78.8438));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AToSrgbF1(AF1 c){AF3 j=AF3(0.0031308*12.92,12.92,1.0/2.4);AF2 k=AF2(1.055,-0.055); + return clamp(j.x ,c*j.y ,pow(c,j.z )*k.x +k.y );} + AF2 AToSrgbF2(AF2 c){AF3 j=AF3(0.0031308*12.92,12.92,1.0/2.4);AF2 k=AF2(1.055,-0.055); + return clamp(j.xx ,c*j.yy ,pow(c,j.zz )*k.xx +k.yy );} + AF3 AToSrgbF3(AF3 c){AF3 j=AF3(0.0031308*12.92,12.92,1.0/2.4);AF2 k=AF2(1.055,-0.055); + return clamp(j.xxx,c*j.yyy,pow(c,j.zzz)*k.xxx+k.yyy);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AToTwoF1(AF1 c){return sqrt(c);} + AF2 AToTwoF2(AF2 c){return sqrt(c);} + AF3 AToTwoF3(AF3 c){return sqrt(c);} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AToThreeF1(AF1 c){return pow(c,AF1_(1.0/3.0));} + AF2 AToThreeF2(AF2 c){return pow(c,AF2_(1.0/3.0));} + AF3 AToThreeF3(AF3 c){return pow(c,AF3_(1.0/3.0));} + #endif +//============================================================================================================================== + #if 1 + // Unfortunately median won't work here. + AF1 AFrom709F1(AF1 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,0.099/1.099); + return AZolSelF1(AZolSignedF1(c-j.x ),c*j.y ,pow(c*k.x +k.y ,j.z ));} + AF2 AFrom709F2(AF2 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,0.099/1.099); + return AZolSelF2(AZolSignedF2(c-j.xx ),c*j.yy ,pow(c*k.xx +k.yy ,j.zz ));} + AF3 AFrom709F3(AF3 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,0.099/1.099); + return AZolSelF3(AZolSignedF3(c-j.xxx),c*j.yyy,pow(c*k.xxx+k.yyy,j.zzz));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AFromGammaF1(AF1 c,AF1 x){return pow(c,AF1_(x));} + AF2 AFromGammaF2(AF2 c,AF1 x){return pow(c,AF2_(x));} + AF3 AFromGammaF3(AF3 c,AF1 x){return pow(c,AF3_(x));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AFromPqF1(AF1 x){AF1 p=pow(x,AF1_(0.0126833)); + return pow(ASatF1(p-AF1_(0.835938))/(AF1_(18.8516)-AF1_(18.6875)*p),AF1_(6.27739));} + AF2 AFromPqF1(AF2 x){AF2 p=pow(x,AF2_(0.0126833)); + return pow(ASatF2(p-AF2_(0.835938))/(AF2_(18.8516)-AF2_(18.6875)*p),AF2_(6.27739));} + AF3 AFromPqF1(AF3 x){AF3 p=pow(x,AF3_(0.0126833)); + return pow(ASatF3(p-AF3_(0.835938))/(AF3_(18.8516)-AF3_(18.6875)*p),AF3_(6.27739));} +//------------------------------------------------------------------------------------------------------------------------------ + // Unfortunately median won't work here. + AF1 AFromSrgbF1(AF1 c){AF3 j=AF3(0.04045/12.92,1.0/12.92,2.4);AF2 k=AF2(1.0/1.055,0.055/1.055); + return AZolSelF1(AZolSignedF1(c-j.x ),c*j.y ,pow(c*k.x +k.y ,j.z ));} + AF2 AFromSrgbF2(AF2 c){AF3 j=AF3(0.04045/12.92,1.0/12.92,2.4);AF2 k=AF2(1.0/1.055,0.055/1.055); + return AZolSelF2(AZolSignedF2(c-j.xx ),c*j.yy ,pow(c*k.xx +k.yy ,j.zz ));} + AF3 AFromSrgbF3(AF3 c){AF3 j=AF3(0.04045/12.92,1.0/12.92,2.4);AF2 k=AF2(1.0/1.055,0.055/1.055); + return AZolSelF3(AZolSignedF3(c-j.xxx),c*j.yyy,pow(c*k.xxx+k.yyy,j.zzz));} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AFromTwoF1(AF1 c){return c*c;} + AF2 AFromTwoF2(AF2 c){return c*c;} + AF3 AFromTwoF3(AF3 c){return c*c;} +//------------------------------------------------------------------------------------------------------------------------------ + AF1 AFromThreeF1(AF1 c){return c*c*c;} + AF2 AFromThreeF2(AF2 c){return c*c*c;} + AF3 AFromThreeF3(AF3 c){return c*c*c;} + #endif +//============================================================================================================================== + #ifdef A_HALF + AH1 ATo709H1(AH1 c){AH3 j=AH3(0.018*4.5,4.5,0.45);AH2 k=AH2(1.099,-0.099); + return clamp(j.x ,c*j.y ,pow(c,j.z )*k.x +k.y );} + AH2 ATo709H2(AH2 c){AH3 j=AH3(0.018*4.5,4.5,0.45);AH2 k=AH2(1.099,-0.099); + return clamp(j.xx ,c*j.yy ,pow(c,j.zz )*k.xx +k.yy );} + AH3 ATo709H3(AH3 c){AH3 j=AH3(0.018*4.5,4.5,0.45);AH2 k=AH2(1.099,-0.099); + return clamp(j.xxx,c*j.yyy,pow(c,j.zzz)*k.xxx+k.yyy);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AToGammaH1(AH1 c,AH1 rcpX){return pow(c,AH1_(rcpX));} + AH2 AToGammaH2(AH2 c,AH1 rcpX){return pow(c,AH2_(rcpX));} + AH3 AToGammaH3(AH3 c,AH1 rcpX){return pow(c,AH3_(rcpX));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AToSrgbH1(AH1 c){AH3 j=AH3(0.0031308*12.92,12.92,1.0/2.4);AH2 k=AH2(1.055,-0.055); + return clamp(j.x ,c*j.y ,pow(c,j.z )*k.x +k.y );} + AH2 AToSrgbH2(AH2 c){AH3 j=AH3(0.0031308*12.92,12.92,1.0/2.4);AH2 k=AH2(1.055,-0.055); + return clamp(j.xx ,c*j.yy ,pow(c,j.zz )*k.xx +k.yy );} + AH3 AToSrgbH3(AH3 c){AH3 j=AH3(0.0031308*12.92,12.92,1.0/2.4);AH2 k=AH2(1.055,-0.055); + return clamp(j.xxx,c*j.yyy,pow(c,j.zzz)*k.xxx+k.yyy);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AToTwoH1(AH1 c){return sqrt(c);} + AH2 AToTwoH2(AH2 c){return sqrt(c);} + AH3 AToTwoH3(AH3 c){return sqrt(c);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AToThreeH1(AH1 c){return pow(c,AH1_(1.0/3.0));} + AH2 AToThreeH2(AH2 c){return pow(c,AH2_(1.0/3.0));} + AH3 AToThreeH3(AH3 c){return pow(c,AH3_(1.0/3.0));} + #endif +//============================================================================================================================== + #ifdef A_HALF + AH1 AFrom709H1(AH1 c){AH3 j=AH3(0.081/4.5,1.0/4.5,1.0/0.45);AH2 k=AH2(1.0/1.099,0.099/1.099); + return AZolSelH1(AZolSignedH1(c-j.x ),c*j.y ,pow(c*k.x +k.y ,j.z ));} + AH2 AFrom709H2(AH2 c){AH3 j=AH3(0.081/4.5,1.0/4.5,1.0/0.45);AH2 k=AH2(1.0/1.099,0.099/1.099); + return AZolSelH2(AZolSignedH2(c-j.xx ),c*j.yy ,pow(c*k.xx +k.yy ,j.zz ));} + AH3 AFrom709H3(AH3 c){AH3 j=AH3(0.081/4.5,1.0/4.5,1.0/0.45);AH2 k=AH2(1.0/1.099,0.099/1.099); + return AZolSelH3(AZolSignedH3(c-j.xxx),c*j.yyy,pow(c*k.xxx+k.yyy,j.zzz));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AFromGammaH1(AH1 c,AH1 x){return pow(c,AH1_(x));} + AH2 AFromGammaH2(AH2 c,AH1 x){return pow(c,AH2_(x));} + AH3 AFromGammaH3(AH3 c,AH1 x){return pow(c,AH3_(x));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AHromSrgbF1(AH1 c){AH3 j=AH3(0.04045/12.92,1.0/12.92,2.4);AH2 k=AH2(1.0/1.055,0.055/1.055); + return AZolSelH1(AZolSignedH1(c-j.x ),c*j.y ,pow(c*k.x +k.y ,j.z ));} + AH2 AHromSrgbF2(AH2 c){AH3 j=AH3(0.04045/12.92,1.0/12.92,2.4);AH2 k=AH2(1.0/1.055,0.055/1.055); + return AZolSelH2(AZolSignedH2(c-j.xx ),c*j.yy ,pow(c*k.xx +k.yy ,j.zz ));} + AH3 AHromSrgbF3(AH3 c){AH3 j=AH3(0.04045/12.92,1.0/12.92,2.4);AH2 k=AH2(1.0/1.055,0.055/1.055); + return AZolSelH3(AZolSignedH3(c-j.xxx),c*j.yyy,pow(c*k.xxx+k.yyy,j.zzz));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AFromTwoH1(AH1 c){return c*c;} + AH2 AFromTwoH2(AH2 c){return c*c;} + AH3 AFromTwoH3(AH3 c){return c*c;} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AFromThreeH1(AH1 c){return c*c*c;} + AH2 AFromThreeH2(AH2 c){return c*c*c;} + AH3 AFromThreeH3(AH3 c){return c*c*c;} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// CS REMAP +//============================================================================================================================== + // Simple remap 64x1 to 8x8 with rotated 2x2 pixel quads in quad linear. + // 543210 + // ====== + // ..xxx. + // yy...y + AU2 ARmp8x8(AU1 a){return AU2(ABfe(a,1u,3u),ABfiM(ABfe(a,3u,3u),a,1u));} +//============================================================================================================================== + // More complex remap 64x1 to 8x8 which is necessary for 2D wave reductions. + // 543210 + // ====== + // .xx..x + // y..yy. + // Details, + // LANE TO 8x8 MAPPING + // =================== + // 00 01 08 09 10 11 18 19 + // 02 03 0a 0b 12 13 1a 1b + // 04 05 0c 0d 14 15 1c 1d + // 06 07 0e 0f 16 17 1e 1f + // 20 21 28 29 30 31 38 39 + // 22 23 2a 2b 32 33 3a 3b + // 24 25 2c 2d 34 35 3c 3d + // 26 27 2e 2f 36 37 3e 3f + AU2 ARmpRed8x8(AU1 a){return AU2(ABfiM(ABfe(a,2u,3u),a,1u),ABfiM(ABfe(a,3u,3u),ABfe(a,1u,2u),2u));} +//============================================================================================================================== + #ifdef A_HALF + AW2 ARmp8x8H(AU1 a){return AW2(ABfe(a,1u,3u),ABfiM(ABfe(a,3u,3u),a,1u));} + AW2 ARmpRed8x8H(AU1 a){return AW2(ABfiM(ABfe(a,2u,3u),a,1u),ABfiM(ABfe(a,3u,3u),ABfe(a,1u,2u),2u));} + #endif +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// REFERENCE +// +//------------------------------------------------------------------------------------------------------------------------------ +// IEEE FLOAT RULES +// ================ +// - saturate(NaN)=0, saturate(-INF)=0, saturate(+INF)=1 +// - {+/-}0 * {+/-}INF = NaN +// - -INF + (+INF) = NaN +// - {+/-}0 / {+/-}0 = NaN +// - {+/-}INF / {+/-}INF = NaN +// - a<(-0) := sqrt(a) = NaN (a=-0.0 won't NaN) +// - 0 == -0 +// - 4/0 = +INF +// - 4/-0 = -INF +// - 4+INF = +INF +// - 4-INF = -INF +// - 4*(+INF) = +INF +// - 4*(-INF) = -INF +// - -4*(+INF) = -INF +// - sqrt(+INF) = +INF +//------------------------------------------------------------------------------------------------------------------------------ +// FP16 ENCODING +// ============= +// fedcba9876543210 +// ---------------- +// ......mmmmmmmmmm 10-bit mantissa (encodes 11-bit 0.5 to 1.0 except for denormals) +// .eeeee.......... 5-bit exponent +// .00000.......... denormals +// .00001.......... -14 exponent +// .11110.......... 15 exponent +// .111110000000000 infinity +// .11111nnnnnnnnnn NaN with n!=0 +// s............... sign +//------------------------------------------------------------------------------------------------------------------------------ +// FP16/INT16 ALIASING DENORMAL +// ============================ +// 11-bit unsigned integers alias with half float denormal/normal values, +// 1 = 2^(-24) = 1/16777216 ....................... first denormal value +// 2 = 2^(-23) +// ... +// 1023 = 2^(-14)*(1-2^(-10)) = 2^(-14)*(1-1/1024) ... last denormal value +// 1024 = 2^(-14) = 1/16384 .......................... first normal value that still maps to integers +// 2047 .............................................. last normal value that still maps to integers +// Scaling limits, +// 2^15 = 32768 ...................................... largest power of 2 scaling +// Largest pow2 conversion mapping is at *32768, +// 1 : 2^(-9) = 1/512 +// 2 : 1/256 +// 4 : 1/128 +// 8 : 1/64 +// 16 : 1/32 +// 32 : 1/16 +// 64 : 1/8 +// 128 : 1/4 +// 256 : 1/2 +// 512 : 1 +// 1024 : 2 +// 2047 : a little less than 4 +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// GPU/CPU PORTABILITY +// +// +//------------------------------------------------------------------------------------------------------------------------------ +// This is the GPU implementation. +// See the CPU implementation for docs. +//============================================================================================================================== +#ifdef A_GPU + #define A_TRUE true + #define A_FALSE false + #define A_STATIC +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR ARGUMENT/RETURN/INITIALIZATION PORTABILITY +//============================================================================================================================== + #define retAD2 AD2 + #define retAD3 AD3 + #define retAD4 AD4 + #define retAF2 AF2 + #define retAF3 AF3 + #define retAF4 AF4 + #define retAL2 AL2 + #define retAL3 AL3 + #define retAL4 AL4 + #define retAU2 AU2 + #define retAU3 AU3 + #define retAU4 AU4 +//------------------------------------------------------------------------------------------------------------------------------ + #define inAD2 in AD2 + #define inAD3 in AD3 + #define inAD4 in AD4 + #define inAF2 in AF2 + #define inAF3 in AF3 + #define inAF4 in AF4 + #define inAL2 in AL2 + #define inAL3 in AL3 + #define inAL4 in AL4 + #define inAU2 in AU2 + #define inAU3 in AU3 + #define inAU4 in AU4 +//------------------------------------------------------------------------------------------------------------------------------ + #define inoutAD2 inout AD2 + #define inoutAD3 inout AD3 + #define inoutAD4 inout AD4 + #define inoutAF2 inout AF2 + #define inoutAF3 inout AF3 + #define inoutAF4 inout AF4 + #define inoutAL2 inout AL2 + #define inoutAL3 inout AL3 + #define inoutAL4 inout AL4 + #define inoutAU2 inout AU2 + #define inoutAU3 inout AU3 + #define inoutAU4 inout AU4 +//------------------------------------------------------------------------------------------------------------------------------ + #define outAD2 out AD2 + #define outAD3 out AD3 + #define outAD4 out AD4 + #define outAF2 out AF2 + #define outAF3 out AF3 + #define outAF4 out AF4 + #define outAL2 out AL2 + #define outAL3 out AL3 + #define outAL4 out AL4 + #define outAU2 out AU2 + #define outAU3 out AU3 + #define outAU4 out AU4 +//------------------------------------------------------------------------------------------------------------------------------ + #define varAD2(x) AD2 x + #define varAD3(x) AD3 x + #define varAD4(x) AD4 x + #define varAF2(x) AF2 x + #define varAF3(x) AF3 x + #define varAF4(x) AF4 x + #define varAL2(x) AL2 x + #define varAL3(x) AL3 x + #define varAL4(x) AL4 x + #define varAU2(x) AU2 x + #define varAU3(x) AU3 x + #define varAU4(x) AU4 x +//------------------------------------------------------------------------------------------------------------------------------ + #define initAD2(x,y) AD2(x,y) + #define initAD3(x,y,z) AD3(x,y,z) + #define initAD4(x,y,z,w) AD4(x,y,z,w) + #define initAF2(x,y) AF2(x,y) + #define initAF3(x,y,z) AF3(x,y,z) + #define initAF4(x,y,z,w) AF4(x,y,z,w) + #define initAL2(x,y) AL2(x,y) + #define initAL3(x,y,z) AL3(x,y,z) + #define initAL4(x,y,z,w) AL4(x,y,z,w) + #define initAU2(x,y) AU2(x,y) + #define initAU3(x,y,z) AU3(x,y,z) + #define initAU4(x,y,z,w) AU4(x,y,z,w) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS +//============================================================================================================================== + #define AAbsD1(a) abs(AD1(a)) + #define AAbsF1(a) abs(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ACosD1(a) cos(AD1(a)) + #define ACosF1(a) cos(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ADotD2(a,b) dot(AD2(a),AD2(b)) + #define ADotD3(a,b) dot(AD3(a),AD3(b)) + #define ADotD4(a,b) dot(AD4(a),AD4(b)) + #define ADotF2(a,b) dot(AF2(a),AF2(b)) + #define ADotF3(a,b) dot(AF3(a),AF3(b)) + #define ADotF4(a,b) dot(AF4(a),AF4(b)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AExp2D1(a) exp2(AD1(a)) + #define AExp2F1(a) exp2(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AFloorD1(a) floor(AD1(a)) + #define AFloorF1(a) floor(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ALog2D1(a) log2(AD1(a)) + #define ALog2F1(a) log2(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AMaxD1(a,b) max(a,b) + #define AMaxF1(a,b) max(a,b) + #define AMaxL1(a,b) max(a,b) + #define AMaxU1(a,b) max(a,b) +//------------------------------------------------------------------------------------------------------------------------------ + #define AMinD1(a,b) min(a,b) + #define AMinF1(a,b) min(a,b) + #define AMinL1(a,b) min(a,b) + #define AMinU1(a,b) min(a,b) +//------------------------------------------------------------------------------------------------------------------------------ + #define ASinD1(a) sin(AD1(a)) + #define ASinF1(a) sin(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ASqrtD1(a) sqrt(AD1(a)) + #define ASqrtF1(a) sqrt(AF1(a)) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS - DEPENDENT +//============================================================================================================================== + #define APowD1(a,b) pow(AD1(a),AF1(b)) + #define APowF1(a,b) pow(AF1(a),AF1(b)) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR OPS +//------------------------------------------------------------------------------------------------------------------------------ +// These are added as needed for production or prototyping, so not necessarily a complete set. +// They follow a convention of taking in a destination and also returning the destination value to increase utility. +//============================================================================================================================== + #ifdef A_DUBL + AD2 opAAbsD2(outAD2 d,inAD2 a){d=abs(a);return d;} + AD3 opAAbsD3(outAD3 d,inAD3 a){d=abs(a);return d;} + AD4 opAAbsD4(outAD4 d,inAD4 a){d=abs(a);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opAAddD2(outAD2 d,inAD2 a,inAD2 b){d=a+b;return d;} + AD3 opAAddD3(outAD3 d,inAD3 a,inAD3 b){d=a+b;return d;} + AD4 opAAddD4(outAD4 d,inAD4 a,inAD4 b){d=a+b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opAAddOneD2(outAD2 d,inAD2 a,AD1 b){d=a+AD2_(b);return d;} + AD3 opAAddOneD3(outAD3 d,inAD3 a,AD1 b){d=a+AD3_(b);return d;} + AD4 opAAddOneD4(outAD4 d,inAD4 a,AD1 b){d=a+AD4_(b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opACpyD2(outAD2 d,inAD2 a){d=a;return d;} + AD3 opACpyD3(outAD3 d,inAD3 a){d=a;return d;} + AD4 opACpyD4(outAD4 d,inAD4 a){d=a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opALerpD2(outAD2 d,inAD2 a,inAD2 b,inAD2 c){d=ALerpD2(a,b,c);return d;} + AD3 opALerpD3(outAD3 d,inAD3 a,inAD3 b,inAD3 c){d=ALerpD3(a,b,c);return d;} + AD4 opALerpD4(outAD4 d,inAD4 a,inAD4 b,inAD4 c){d=ALerpD4(a,b,c);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opALerpOneD2(outAD2 d,inAD2 a,inAD2 b,AD1 c){d=ALerpD2(a,b,AD2_(c));return d;} + AD3 opALerpOneD3(outAD3 d,inAD3 a,inAD3 b,AD1 c){d=ALerpD3(a,b,AD3_(c));return d;} + AD4 opALerpOneD4(outAD4 d,inAD4 a,inAD4 b,AD1 c){d=ALerpD4(a,b,AD4_(c));return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opAMaxD2(outAD2 d,inAD2 a,inAD2 b){d=max(a,b);return d;} + AD3 opAMaxD3(outAD3 d,inAD3 a,inAD3 b){d=max(a,b);return d;} + AD4 opAMaxD4(outAD4 d,inAD4 a,inAD4 b){d=max(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opAMinD2(outAD2 d,inAD2 a,inAD2 b){d=min(a,b);return d;} + AD3 opAMinD3(outAD3 d,inAD3 a,inAD3 b){d=min(a,b);return d;} + AD4 opAMinD4(outAD4 d,inAD4 a,inAD4 b){d=min(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opAMulD2(outAD2 d,inAD2 a,inAD2 b){d=a*b;return d;} + AD3 opAMulD3(outAD3 d,inAD3 a,inAD3 b){d=a*b;return d;} + AD4 opAMulD4(outAD4 d,inAD4 a,inAD4 b){d=a*b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opAMulOneD2(outAD2 d,inAD2 a,AD1 b){d=a*AD2_(b);return d;} + AD3 opAMulOneD3(outAD3 d,inAD3 a,AD1 b){d=a*AD3_(b);return d;} + AD4 opAMulOneD4(outAD4 d,inAD4 a,AD1 b){d=a*AD4_(b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opANegD2(outAD2 d,inAD2 a){d=-a;return d;} + AD3 opANegD3(outAD3 d,inAD3 a){d=-a;return d;} + AD4 opANegD4(outAD4 d,inAD4 a){d=-a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AD2 opARcpD2(outAD2 d,inAD2 a){d=ARcpD2(a);return d;} + AD3 opARcpD3(outAD3 d,inAD3 a){d=ARcpD3(a);return d;} + AD4 opARcpD4(outAD4 d,inAD4 a){d=ARcpD4(a);return d;} + #endif +//============================================================================================================================== + AF2 opAAbsF2(outAF2 d,inAF2 a){d=abs(a);return d;} + AF3 opAAbsF3(outAF3 d,inAF3 a){d=abs(a);return d;} + AF4 opAAbsF4(outAF4 d,inAF4 a){d=abs(a);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opAAddF2(outAF2 d,inAF2 a,inAF2 b){d=a+b;return d;} + AF3 opAAddF3(outAF3 d,inAF3 a,inAF3 b){d=a+b;return d;} + AF4 opAAddF4(outAF4 d,inAF4 a,inAF4 b){d=a+b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opAAddOneF2(outAF2 d,inAF2 a,AF1 b){d=a+AF2_(b);return d;} + AF3 opAAddOneF3(outAF3 d,inAF3 a,AF1 b){d=a+AF3_(b);return d;} + AF4 opAAddOneF4(outAF4 d,inAF4 a,AF1 b){d=a+AF4_(b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opACpyF2(outAF2 d,inAF2 a){d=a;return d;} + AF3 opACpyF3(outAF3 d,inAF3 a){d=a;return d;} + AF4 opACpyF4(outAF4 d,inAF4 a){d=a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opALerpF2(outAF2 d,inAF2 a,inAF2 b,inAF2 c){d=ALerpF2(a,b,c);return d;} + AF3 opALerpF3(outAF3 d,inAF3 a,inAF3 b,inAF3 c){d=ALerpF3(a,b,c);return d;} + AF4 opALerpF4(outAF4 d,inAF4 a,inAF4 b,inAF4 c){d=ALerpF4(a,b,c);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opALerpOneF2(outAF2 d,inAF2 a,inAF2 b,AF1 c){d=ALerpF2(a,b,AF2_(c));return d;} + AF3 opALerpOneF3(outAF3 d,inAF3 a,inAF3 b,AF1 c){d=ALerpF3(a,b,AF3_(c));return d;} + AF4 opALerpOneF4(outAF4 d,inAF4 a,inAF4 b,AF1 c){d=ALerpF4(a,b,AF4_(c));return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opAMaxF2(outAF2 d,inAF2 a,inAF2 b){d=max(a,b);return d;} + AF3 opAMaxF3(outAF3 d,inAF3 a,inAF3 b){d=max(a,b);return d;} + AF4 opAMaxF4(outAF4 d,inAF4 a,inAF4 b){d=max(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opAMinF2(outAF2 d,inAF2 a,inAF2 b){d=min(a,b);return d;} + AF3 opAMinF3(outAF3 d,inAF3 a,inAF3 b){d=min(a,b);return d;} + AF4 opAMinF4(outAF4 d,inAF4 a,inAF4 b){d=min(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opAMulF2(outAF2 d,inAF2 a,inAF2 b){d=a*b;return d;} + AF3 opAMulF3(outAF3 d,inAF3 a,inAF3 b){d=a*b;return d;} + AF4 opAMulF4(outAF4 d,inAF4 a,inAF4 b){d=a*b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opAMulOneF2(outAF2 d,inAF2 a,AF1 b){d=a*AF2_(b);return d;} + AF3 opAMulOneF3(outAF3 d,inAF3 a,AF1 b){d=a*AF3_(b);return d;} + AF4 opAMulOneF4(outAF4 d,inAF4 a,AF1 b){d=a*AF4_(b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opANegF2(outAF2 d,inAF2 a){d=-a;return d;} + AF3 opANegF3(outAF3 d,inAF3 a){d=-a;return d;} + AF4 opANegF4(outAF4 d,inAF4 a){d=-a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + AF2 opARcpF2(outAF2 d,inAF2 a){d=ARcpF2(a);return d;} + AF3 opARcpF3(outAF3 d,inAF3 a){d=ARcpF3(a);return d;} + AF4 opARcpF4(outAF4 d,inAF4 a){d=ARcpF4(a);return d;} +#endif diff --git a/3rdparty/bgfx/examples/46-fsr/ffx_fsr1.h b/3rdparty/bgfx/examples/46-fsr/ffx_fsr1.h new file mode 100644 index 00000000000..bd872845481 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/ffx_fsr1.h @@ -0,0 +1,1199 @@ +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// AMD FidelityFX SUPER RESOLUTION [FSR 1] ::: SPATIAL SCALING & EXTRAS - v1.20210629 +// +// +//------------------------------------------------------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//------------------------------------------------------------------------------------------------------------------------------ +// FidelityFX Super Resolution Sample +// +// Copyright (c) 2021 Advanced Micro Devices, Inc. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +//------------------------------------------------------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//------------------------------------------------------------------------------------------------------------------------------ +// ABOUT +// ===== +// FSR is a collection of algorithms relating to generating a higher resolution image. +// This specific header focuses on single-image non-temporal image scaling, and related tools. +// +// The core functions are EASU and RCAS: +// [EASU] Edge Adaptive Spatial Upsampling ....... 1x to 4x area range spatial scaling, clamped adaptive elliptical filter. +// [RCAS] Robust Contrast Adaptive Sharpening .... A non-scaling variation on CAS. +// RCAS needs to be applied after EASU as a separate pass. +// +// Optional utility functions are: +// [LFGA] Linear Film Grain Applicator ........... Tool to apply film grain after scaling. +// [SRTM] Simple Reversible Tone-Mapper .......... Linear HDR {0 to FP16_MAX} to {0 to 1} and back. +// [TEPD] Temporal Energy Preserving Dither ...... Temporally energy preserving dithered {0 to 1} linear to gamma 2.0 conversion. +// See each individual sub-section for inline documentation. +//------------------------------------------------------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//------------------------------------------------------------------------------------------------------------------------------ +// FUNCTION PERMUTATIONS +// ===================== +// *F() ..... Single item computation with 32-bit. +// *H() ..... Single item computation with 16-bit, with packing (aka two 16-bit ops in parallel) when possible. +// *Hx2() ... Processing two items in parallel with 16-bit, easier packing. +// Not all interfaces in this file have a *Hx2() form. +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [EASU] EDGE ADAPTIVE SPATIAL UPSAMPLING +// +//------------------------------------------------------------------------------------------------------------------------------ +// EASU provides a high quality spatial-only scaling at relatively low cost. +// Meaning EASU is appropriate for laptops and other low-end GPUs. +// Quality from 1x to 4x area scaling is good. +//------------------------------------------------------------------------------------------------------------------------------ +// The scalar uses a modified fast approximation to the standard lanczos(size=2) kernel. +// EASU runs in a single pass, so it applies a directionally and anisotropically adaptive radial lanczos. +// This is also kept as simple as possible to have minimum runtime. +//------------------------------------------------------------------------------------------------------------------------------ +// The lanzcos filter has negative lobes, so by itself it will introduce ringing. +// To remove all ringing, the algorithm uses the nearest 2x2 input texels as a neighborhood, +// and limits output to the minimum and maximum of that neighborhood. +//------------------------------------------------------------------------------------------------------------------------------ +// Input image requirements: +// +// Color needs to be encoded as 3 channel[red, green, blue](e.g.XYZ not supported) +// Each channel needs to be in the range[0, 1] +// Any color primaries are supported +// Display / tonemapping curve needs to be as if presenting to sRGB display or similar(e.g.Gamma 2.0) +// There should be no banding in the input +// There should be no high amplitude noise in the input +// There should be no noise in the input that is not at input pixel granularity +// For performance purposes, use 32bpp formats +//------------------------------------------------------------------------------------------------------------------------------ +// Best to apply EASU at the end of the frame after tonemapping +// but before film grain or composite of the UI. +//------------------------------------------------------------------------------------------------------------------------------ +// Example of including this header for D3D HLSL : +// +// #define A_GPU 1 +// #define A_HLSL 1 +// #define A_HALF 1 +// #include "ffx_a.h" +// #define FSR_EASU_H 1 +// #define FSR_RCAS_H 1 +// //declare input callbacks +// #include "ffx_fsr1.h" +// +// Example of including this header for Vulkan GLSL : +// +// #define A_GPU 1 +// #define A_GLSL 1 +// #define A_HALF 1 +// #include "ffx_a.h" +// #define FSR_EASU_H 1 +// #define FSR_RCAS_H 1 +// //declare input callbacks +// #include "ffx_fsr1.h" +// +// Example of including this header for Vulkan HLSL : +// +// #define A_GPU 1 +// #define A_HLSL 1 +// #define A_HLSL_6_2 1 +// #define A_NO_16_BIT_CAST 1 +// #define A_HALF 1 +// #include "ffx_a.h" +// #define FSR_EASU_H 1 +// #define FSR_RCAS_H 1 +// //declare input callbacks +// #include "ffx_fsr1.h" +// +// Example of declaring the required input callbacks for GLSL : +// The callbacks need to gather4 for each color channel using the specified texture coordinate 'p'. +// EASU uses gather4 to reduce position computation logic and for free Arrays of Structures to Structures of Arrays conversion. +// +// AH4 FsrEasuRH(AF2 p){return AH4(textureGather(sampler2D(tex,sam),p,0));} +// AH4 FsrEasuGH(AF2 p){return AH4(textureGather(sampler2D(tex,sam),p,1));} +// AH4 FsrEasuBH(AF2 p){return AH4(textureGather(sampler2D(tex,sam),p,2));} +// ... +// The FsrEasuCon function needs to be called from the CPU or GPU to set up constants. +// The difference in viewport and input image size is there to support Dynamic Resolution Scaling. +// To use FsrEasuCon() on the CPU, define A_CPU before including ffx_a and ffx_fsr1. +// Including a GPU example here, the 'con0' through 'con3' values would be stored out to a constant buffer. +// AU4 con0,con1,con2,con3; +// FsrEasuCon(con0,con1,con2,con3, +// 1920.0,1080.0, // Viewport size (top left aligned) in the input image which is to be scaled. +// 3840.0,2160.0, // The size of the input image. +// 2560.0,1440.0); // The output resolution. +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// CONSTANT SETUP +//============================================================================================================================== +// Call to setup required constant values (works on CPU or GPU). +A_STATIC void FsrEasuCon( +outAU4 con0, +outAU4 con1, +outAU4 con2, +outAU4 con3, +// This the rendered image resolution being upscaled +AF1 inputViewportInPixelsX, +AF1 inputViewportInPixelsY, +// This is the resolution of the resource containing the input image (useful for dynamic resolution) +AF1 inputSizeInPixelsX, +AF1 inputSizeInPixelsY, +// This is the display resolution which the input image gets upscaled to +AF1 outputSizeInPixelsX, +AF1 outputSizeInPixelsY){ + // Output integer position to a pixel position in viewport. + con0[0]=AU1_AF1(inputViewportInPixelsX*ARcpF1(outputSizeInPixelsX)); + con0[1]=AU1_AF1(inputViewportInPixelsY*ARcpF1(outputSizeInPixelsY)); + con0[2]=AU1_AF1(AF1_(0.5)*inputViewportInPixelsX*ARcpF1(outputSizeInPixelsX)-AF1_(0.5)); + con0[3]=AU1_AF1(AF1_(0.5)*inputViewportInPixelsY*ARcpF1(outputSizeInPixelsY)-AF1_(0.5)); + // Viewport pixel position to normalized image space. + // This is used to get upper-left of 'F' tap. + con1[0]=AU1_AF1(ARcpF1(inputSizeInPixelsX)); + con1[1]=AU1_AF1(ARcpF1(inputSizeInPixelsY)); + // Centers of gather4, first offset from upper-left of 'F'. + // +---+---+ + // | | | + // +--(0)--+ + // | b | c | + // +---F---+---+---+ + // | e | f | g | h | + // +--(1)--+--(2)--+ + // | i | j | k | l | + // +---+---+---+---+ + // | n | o | + // +--(3)--+ + // | | | + // +---+---+ + con1[2]=AU1_AF1(AF1_( 1.0)*ARcpF1(inputSizeInPixelsX)); + con1[3]=AU1_AF1(AF1_(-1.0)*ARcpF1(inputSizeInPixelsY)); + // These are from (0) instead of 'F'. + con2[0]=AU1_AF1(AF1_(-1.0)*ARcpF1(inputSizeInPixelsX)); + con2[1]=AU1_AF1(AF1_( 2.0)*ARcpF1(inputSizeInPixelsY)); + con2[2]=AU1_AF1(AF1_( 1.0)*ARcpF1(inputSizeInPixelsX)); + con2[3]=AU1_AF1(AF1_( 2.0)*ARcpF1(inputSizeInPixelsY)); + con3[0]=AU1_AF1(AF1_( 0.0)*ARcpF1(inputSizeInPixelsX)); + con3[1]=AU1_AF1(AF1_( 4.0)*ARcpF1(inputSizeInPixelsY)); + con3[2]=con3[3]=0;} + +//If the an offset into the input image resource +A_STATIC void FsrEasuConOffset( + outAU4 con0, + outAU4 con1, + outAU4 con2, + outAU4 con3, + // This the rendered image resolution being upscaled + AF1 inputViewportInPixelsX, + AF1 inputViewportInPixelsY, + // This is the resolution of the resource containing the input image (useful for dynamic resolution) + AF1 inputSizeInPixelsX, + AF1 inputSizeInPixelsY, + // This is the display resolution which the input image gets upscaled to + AF1 outputSizeInPixelsX, + AF1 outputSizeInPixelsY, + // This is the input image offset into the resource containing it (useful for dynamic resolution) + AF1 inputOffsetInPixelsX, + AF1 inputOffsetInPixelsY) { + FsrEasuCon(con0, con1, con2, con3, inputViewportInPixelsX, inputViewportInPixelsY, inputSizeInPixelsX, inputSizeInPixelsY, outputSizeInPixelsX, outputSizeInPixelsY); + con0[2] = AU1_AF1(AF1_(0.5) * inputViewportInPixelsX * ARcpF1(outputSizeInPixelsX) - AF1_(0.5) + inputOffsetInPixelsX); + con0[3] = AU1_AF1(AF1_(0.5) * inputViewportInPixelsY * ARcpF1(outputSizeInPixelsY) - AF1_(0.5) + inputOffsetInPixelsY); +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// NON-PACKED 32-BIT VERSION +//============================================================================================================================== +#if defined(A_GPU)&&defined(FSR_EASU_F) + // Input callback prototypes, need to be implemented by calling shader + AF4 FsrEasuRF(AF2 p); + AF4 FsrEasuGF(AF2 p); + AF4 FsrEasuBF(AF2 p); +//------------------------------------------------------------------------------------------------------------------------------ + // Filtering for a given tap for the scalar. + void FsrEasuTapF( + inout AF3 aC, // Accumulated color, with negative lobe. + inout AF1 aW, // Accumulated weight. + AF2 off, // Pixel offset from resolve position to tap. + AF2 dir, // Gradient direction. + AF2 len, // Length. + AF1 lob, // Negative lobe strength. + AF1 clp, // Clipping point. + AF3 c){ // Tap color. + // Rotate offset by direction. + AF2 v; + v.x=(off.x*( dir.x))+(off.y*dir.y); + v.y=(off.x*(-dir.y))+(off.y*dir.x); + // Anisotropy. + v*=len; + // Compute distance^2. + AF1 d2=v.x*v.x+v.y*v.y; + // Limit to the window as at corner, 2 taps can easily be outside. + d2=min(d2,clp); + // Approximation of lancos2 without sin() or rcp(), or sqrt() to get x. + // (25/16 * (2/5 * x^2 - 1)^2 - (25/16 - 1)) * (1/4 * x^2 - 1)^2 + // |_______________________________________| |_______________| + // base window + // The general form of the 'base' is, + // (a*(b*x^2-1)^2-(a-1)) + // Where 'a=1/(2*b-b^2)' and 'b' moves around the negative lobe. + AF1 wB=AF1_(2.0/5.0)*d2+AF1_(-1.0); + AF1 wA=lob*d2+AF1_(-1.0); + wB*=wB; + wA*=wA; + wB=AF1_(25.0/16.0)*wB+AF1_(-(25.0/16.0-1.0)); + AF1 w=wB*wA; + // Do weighted average. + aC+=c*w;aW+=w;} +//------------------------------------------------------------------------------------------------------------------------------ + // Accumulate direction and length. + void FsrEasuSetF( + inout AF2 dir, + inout AF1 len, + AF2 pp, + AP1 biS,AP1 biT,AP1 biU,AP1 biV, + AF1 lA,AF1 lB,AF1 lC,AF1 lD,AF1 lE){ + // Compute bilinear weight, branches factor out as predicates are compiler time immediates. + // s t + // u v + AF1 w = AF1_(0.0); + if(biS)w=(AF1_(1.0)-pp.x)*(AF1_(1.0)-pp.y); + if(biT)w= pp.x *(AF1_(1.0)-pp.y); + if(biU)w=(AF1_(1.0)-pp.x)* pp.y ; + if(biV)w= pp.x * pp.y ; + // Direction is the '+' diff. + // a + // b c d + // e + // Then takes magnitude from abs average of both sides of 'c'. + // Length converts gradient reversal to 0, smoothly to non-reversal at 1, shaped, then adding horz and vert terms. + AF1 dc=lD-lC; + AF1 cb=lC-lB; + AF1 lenX=max(abs(dc),abs(cb)); + lenX=APrxLoRcpF1(lenX); + AF1 dirX=lD-lB; + dir.x+=dirX*w; + lenX=ASatF1(abs(dirX)*lenX); + lenX*=lenX; + len+=lenX*w; + // Repeat for the y axis. + AF1 ec=lE-lC; + AF1 ca=lC-lA; + AF1 lenY=max(abs(ec),abs(ca)); + lenY=APrxLoRcpF1(lenY); + AF1 dirY=lE-lA; + dir.y+=dirY*w; + lenY=ASatF1(abs(dirY)*lenY); + lenY*=lenY; + len+=lenY*w;} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrEasuF( + out AF3 pix, + AU2 ip, // Integer pixel position in output. + AU4 con0, // Constants generated by FsrEasuCon(). + AU4 con1, + AU4 con2, + AU4 con3){ +//------------------------------------------------------------------------------------------------------------------------------ + // Get position of 'f'. + AF2 pp=AF2(ip)*AF2_AU2(con0.xy)+AF2_AU2(con0.zw); + AF2 fp=floor(pp); + pp-=fp; +//------------------------------------------------------------------------------------------------------------------------------ + // 12-tap kernel. + // b c + // e f g h + // i j k l + // n o + // Gather 4 ordering. + // a b + // r g + // For packed FP16, need either {rg} or {ab} so using the following setup for gather in all versions, + // a b <- unused (z) + // r g + // a b a b + // r g r g + // a b + // r g <- unused (z) + // Allowing dead-code removal to remove the 'z's. + AF2 p0=fp*AF2_AU2(con1.xy)+AF2_AU2(con1.zw); + // These are from p0 to avoid pulling two constants on pre-Navi hardware. + AF2 p1=p0+AF2_AU2(con2.xy); + AF2 p2=p0+AF2_AU2(con2.zw); + AF2 p3=p0+AF2_AU2(con3.xy); + AF4 bczzR=FsrEasuRF(p0); + AF4 bczzG=FsrEasuGF(p0); + AF4 bczzB=FsrEasuBF(p0); + AF4 ijfeR=FsrEasuRF(p1); + AF4 ijfeG=FsrEasuGF(p1); + AF4 ijfeB=FsrEasuBF(p1); + AF4 klhgR=FsrEasuRF(p2); + AF4 klhgG=FsrEasuGF(p2); + AF4 klhgB=FsrEasuBF(p2); + AF4 zzonR=FsrEasuRF(p3); + AF4 zzonG=FsrEasuGF(p3); + AF4 zzonB=FsrEasuBF(p3); +//------------------------------------------------------------------------------------------------------------------------------ + // Simplest multi-channel approximate luma possible (luma times 2, in 2 FMA/MAD). + AF4 bczzL=bczzB*AF4_(0.5)+(bczzR*AF4_(0.5)+bczzG); + AF4 ijfeL=ijfeB*AF4_(0.5)+(ijfeR*AF4_(0.5)+ijfeG); + AF4 klhgL=klhgB*AF4_(0.5)+(klhgR*AF4_(0.5)+klhgG); + AF4 zzonL=zzonB*AF4_(0.5)+(zzonR*AF4_(0.5)+zzonG); + // Rename. + AF1 bL=bczzL.x; + AF1 cL=bczzL.y; + AF1 iL=ijfeL.x; + AF1 jL=ijfeL.y; + AF1 fL=ijfeL.z; + AF1 eL=ijfeL.w; + AF1 kL=klhgL.x; + AF1 lL=klhgL.y; + AF1 hL=klhgL.z; + AF1 gL=klhgL.w; + AF1 oL=zzonL.z; + AF1 nL=zzonL.w; + // Accumulate for bilinear interpolation. + AF2 dir=AF2_(0.0); + AF1 len=AF1_(0.0); + FsrEasuSetF(dir,len,pp,true, false,false,false,bL,eL,fL,gL,jL); + FsrEasuSetF(dir,len,pp,false,true ,false,false,cL,fL,gL,hL,kL); + FsrEasuSetF(dir,len,pp,false,false,true ,false,fL,iL,jL,kL,nL); + FsrEasuSetF(dir,len,pp,false,false,false,true ,gL,jL,kL,lL,oL); +//------------------------------------------------------------------------------------------------------------------------------ + // Normalize with approximation, and cleanup close to zero. + AF2 dir2=dir*dir; + AF1 dirR=dir2.x+dir2.y; + AP1 zro=dirR<AF1_(1.0/32768.0); + dirR=APrxLoRsqF1(dirR); + dirR=zro?AF1_(1.0):dirR; + dir.x=zro?AF1_(1.0):dir.x; + dir*=AF2_(dirR); + // Transform from {0 to 2} to {0 to 1} range, and shape with square. + len=len*AF1_(0.5); + len*=len; + // Stretch kernel {1.0 vert|horz, to sqrt(2.0) on diagonal}. + AF1 stretch=(dir.x*dir.x+dir.y*dir.y)*APrxLoRcpF1(max(abs(dir.x),abs(dir.y))); + // Anisotropic length after rotation, + // x := 1.0 lerp to 'stretch' on edges + // y := 1.0 lerp to 2x on edges + AF2 len2=AF2(AF1_(1.0)+(stretch-AF1_(1.0))*len,AF1_(1.0)+AF1_(-0.5)*len); + // Based on the amount of 'edge', + // the window shifts from +/-{sqrt(2.0) to slightly beyond 2.0}. + AF1 lob=AF1_(0.5)+AF1_((1.0/4.0-0.04)-0.5)*len; + // Set distance^2 clipping point to the end of the adjustable window. + AF1 clp=APrxLoRcpF1(lob); +//------------------------------------------------------------------------------------------------------------------------------ + // Accumulation mixed with min/max of 4 nearest. + // b c + // e f g h + // i j k l + // n o + AF3 min4=min(AMin3F3(AF3(ijfeR.z,ijfeG.z,ijfeB.z),AF3(klhgR.w,klhgG.w,klhgB.w),AF3(ijfeR.y,ijfeG.y,ijfeB.y)), + AF3(klhgR.x,klhgG.x,klhgB.x)); + AF3 max4=max(AMax3F3(AF3(ijfeR.z,ijfeG.z,ijfeB.z),AF3(klhgR.w,klhgG.w,klhgB.w),AF3(ijfeR.y,ijfeG.y,ijfeB.y)), + AF3(klhgR.x,klhgG.x,klhgB.x)); + // Accumulation. + AF3 aC=AF3_(0.0); + AF1 aW=AF1_(0.0); + FsrEasuTapF(aC,aW,AF2( 0.0,-1.0)-pp,dir,len2,lob,clp,AF3(bczzR.x,bczzG.x,bczzB.x)); // b + FsrEasuTapF(aC,aW,AF2( 1.0,-1.0)-pp,dir,len2,lob,clp,AF3(bczzR.y,bczzG.y,bczzB.y)); // c + FsrEasuTapF(aC,aW,AF2(-1.0, 1.0)-pp,dir,len2,lob,clp,AF3(ijfeR.x,ijfeG.x,ijfeB.x)); // i + FsrEasuTapF(aC,aW,AF2( 0.0, 1.0)-pp,dir,len2,lob,clp,AF3(ijfeR.y,ijfeG.y,ijfeB.y)); // j + FsrEasuTapF(aC,aW,AF2( 0.0, 0.0)-pp,dir,len2,lob,clp,AF3(ijfeR.z,ijfeG.z,ijfeB.z)); // f + FsrEasuTapF(aC,aW,AF2(-1.0, 0.0)-pp,dir,len2,lob,clp,AF3(ijfeR.w,ijfeG.w,ijfeB.w)); // e + FsrEasuTapF(aC,aW,AF2( 1.0, 1.0)-pp,dir,len2,lob,clp,AF3(klhgR.x,klhgG.x,klhgB.x)); // k + FsrEasuTapF(aC,aW,AF2( 2.0, 1.0)-pp,dir,len2,lob,clp,AF3(klhgR.y,klhgG.y,klhgB.y)); // l + FsrEasuTapF(aC,aW,AF2( 2.0, 0.0)-pp,dir,len2,lob,clp,AF3(klhgR.z,klhgG.z,klhgB.z)); // h + FsrEasuTapF(aC,aW,AF2( 1.0, 0.0)-pp,dir,len2,lob,clp,AF3(klhgR.w,klhgG.w,klhgB.w)); // g + FsrEasuTapF(aC,aW,AF2( 1.0, 2.0)-pp,dir,len2,lob,clp,AF3(zzonR.z,zzonG.z,zzonB.z)); // o + FsrEasuTapF(aC,aW,AF2( 0.0, 2.0)-pp,dir,len2,lob,clp,AF3(zzonR.w,zzonG.w,zzonB.w)); // n +//------------------------------------------------------------------------------------------------------------------------------ + // Normalize and dering. + pix=min(max4,max(min4,aC*AF3_(ARcpF1(aW))));} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// PACKED 16-BIT VERSION +//============================================================================================================================== +#if defined(A_GPU)&&defined(A_HALF)&&defined(FSR_EASU_H) +// Input callback prototypes, need to be implemented by calling shader + AH4 FsrEasuRH(AF2 p); + AH4 FsrEasuGH(AF2 p); + AH4 FsrEasuBH(AF2 p); +//------------------------------------------------------------------------------------------------------------------------------ + // This runs 2 taps in parallel. + void FsrEasuTapH( + inout AH2 aCR,inout AH2 aCG,inout AH2 aCB, + inout AH2 aW, + AH2 offX,AH2 offY, + AH2 dir, + AH2 len, + AH1 lob, + AH1 clp, + AH2 cR,AH2 cG,AH2 cB){ + AH2 vX,vY; + vX=offX* dir.xx +offY*dir.yy; + vY=offX*(-dir.yy)+offY*dir.xx; + vX*=len.x;vY*=len.y; + AH2 d2=vX*vX+vY*vY; + d2=min(d2,AH2_(clp)); + AH2 wB=AH2_(2.0/5.0)*d2+AH2_(-1.0); + AH2 wA=AH2_(lob)*d2+AH2_(-1.0); + wB*=wB; + wA*=wA; + wB=AH2_(25.0/16.0)*wB+AH2_(-(25.0/16.0-1.0)); + AH2 w=wB*wA; + aCR+=cR*w;aCG+=cG*w;aCB+=cB*w;aW+=w;} +//------------------------------------------------------------------------------------------------------------------------------ + // This runs 2 taps in parallel. + void FsrEasuSetH( + inout AH2 dirPX,inout AH2 dirPY, + inout AH2 lenP, + AH2 pp, + AP1 biST,AP1 biUV, + AH2 lA,AH2 lB,AH2 lC,AH2 lD,AH2 lE){ + AH2 w = AH2_(0.0); + if(biST)w=(AH2(1.0,0.0)+AH2(-pp.x,pp.x))*AH2_(AH1_(1.0)-pp.y); + if(biUV)w=(AH2(1.0,0.0)+AH2(-pp.x,pp.x))*AH2_( pp.y); + // ABS is not free in the packed FP16 path. + AH2 dc=lD-lC; + AH2 cb=lC-lB; + AH2 lenX=max(abs(dc),abs(cb)); + lenX=ARcpH2(lenX); + AH2 dirX=lD-lB; + dirPX+=dirX*w; + lenX=ASatH2(abs(dirX)*lenX); + lenX*=lenX; + lenP+=lenX*w; + AH2 ec=lE-lC; + AH2 ca=lC-lA; + AH2 lenY=max(abs(ec),abs(ca)); + lenY=ARcpH2(lenY); + AH2 dirY=lE-lA; + dirPY+=dirY*w; + lenY=ASatH2(abs(dirY)*lenY); + lenY*=lenY; + lenP+=lenY*w;} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrEasuH( + out AH3 pix, + AU2 ip, + AU4 con0, + AU4 con1, + AU4 con2, + AU4 con3){ +//------------------------------------------------------------------------------------------------------------------------------ + AF2 pp=AF2(ip)*AF2_AU2(con0.xy)+AF2_AU2(con0.zw); + AF2 fp=floor(pp); + pp-=fp; + AH2 ppp=AH2(pp); +//------------------------------------------------------------------------------------------------------------------------------ + AF2 p0=fp*AF2_AU2(con1.xy)+AF2_AU2(con1.zw); + AF2 p1=p0+AF2_AU2(con2.xy); + AF2 p2=p0+AF2_AU2(con2.zw); + AF2 p3=p0+AF2_AU2(con3.xy); + AH4 bczzR=FsrEasuRH(p0); + AH4 bczzG=FsrEasuGH(p0); + AH4 bczzB=FsrEasuBH(p0); + AH4 ijfeR=FsrEasuRH(p1); + AH4 ijfeG=FsrEasuGH(p1); + AH4 ijfeB=FsrEasuBH(p1); + AH4 klhgR=FsrEasuRH(p2); + AH4 klhgG=FsrEasuGH(p2); + AH4 klhgB=FsrEasuBH(p2); + AH4 zzonR=FsrEasuRH(p3); + AH4 zzonG=FsrEasuGH(p3); + AH4 zzonB=FsrEasuBH(p3); +//------------------------------------------------------------------------------------------------------------------------------ + AH4 bczzL=bczzB*AH4_(0.5)+(bczzR*AH4_(0.5)+bczzG); + AH4 ijfeL=ijfeB*AH4_(0.5)+(ijfeR*AH4_(0.5)+ijfeG); + AH4 klhgL=klhgB*AH4_(0.5)+(klhgR*AH4_(0.5)+klhgG); + AH4 zzonL=zzonB*AH4_(0.5)+(zzonR*AH4_(0.5)+zzonG); + AH1 bL=bczzL.x; + AH1 cL=bczzL.y; + AH1 iL=ijfeL.x; + AH1 jL=ijfeL.y; + AH1 fL=ijfeL.z; + AH1 eL=ijfeL.w; + AH1 kL=klhgL.x; + AH1 lL=klhgL.y; + AH1 hL=klhgL.z; + AH1 gL=klhgL.w; + AH1 oL=zzonL.z; + AH1 nL=zzonL.w; + // This part is different, accumulating 2 taps in parallel. + AH2 dirPX=AH2_(0.0); + AH2 dirPY=AH2_(0.0); + AH2 lenP=AH2_(0.0); + FsrEasuSetH(dirPX,dirPY,lenP,ppp,true, false,AH2(bL,cL),AH2(eL,fL),AH2(fL,gL),AH2(gL,hL),AH2(jL,kL)); + FsrEasuSetH(dirPX,dirPY,lenP,ppp,false,true ,AH2(fL,gL),AH2(iL,jL),AH2(jL,kL),AH2(kL,lL),AH2(nL,oL)); + AH2 dir=AH2(dirPX.r+dirPX.g,dirPY.r+dirPY.g); + AH1 len=lenP.r+lenP.g; +//------------------------------------------------------------------------------------------------------------------------------ + AH2 dir2=dir*dir; + AH1 dirR=dir2.x+dir2.y; + AP1 zro=dirR<AH1_(1.0/32768.0); + dirR=APrxLoRsqH1(dirR); + dirR=zro?AH1_(1.0):dirR; + dir.x=zro?AH1_(1.0):dir.x; + dir*=AH2_(dirR); + len=len*AH1_(0.5); + len*=len; + AH1 stretch=(dir.x*dir.x+dir.y*dir.y)*APrxLoRcpH1(max(abs(dir.x),abs(dir.y))); + AH2 len2=AH2(AH1_(1.0)+(stretch-AH1_(1.0))*len,AH1_(1.0)+AH1_(-0.5)*len); + AH1 lob=AH1_(0.5)+AH1_((1.0/4.0-0.04)-0.5)*len; + AH1 clp=APrxLoRcpH1(lob); +//------------------------------------------------------------------------------------------------------------------------------ + // FP16 is different, using packed trick to do min and max in same operation. + AH2 bothR=max(max(AH2(-ijfeR.z,ijfeR.z),AH2(-klhgR.w,klhgR.w)),max(AH2(-ijfeR.y,ijfeR.y),AH2(-klhgR.x,klhgR.x))); + AH2 bothG=max(max(AH2(-ijfeG.z,ijfeG.z),AH2(-klhgG.w,klhgG.w)),max(AH2(-ijfeG.y,ijfeG.y),AH2(-klhgG.x,klhgG.x))); + AH2 bothB=max(max(AH2(-ijfeB.z,ijfeB.z),AH2(-klhgB.w,klhgB.w)),max(AH2(-ijfeB.y,ijfeB.y),AH2(-klhgB.x,klhgB.x))); + // This part is different for FP16, working pairs of taps at a time. + AH2 pR=AH2_(0.0); + AH2 pG=AH2_(0.0); + AH2 pB=AH2_(0.0); + AH2 pW=AH2_(0.0); + FsrEasuTapH(pR,pG,pB,pW,AH2( 0.0, 1.0)-ppp.xx,AH2(-1.0,-1.0)-ppp.yy,dir,len2,lob,clp,bczzR.xy,bczzG.xy,bczzB.xy); + FsrEasuTapH(pR,pG,pB,pW,AH2(-1.0, 0.0)-ppp.xx,AH2( 1.0, 1.0)-ppp.yy,dir,len2,lob,clp,ijfeR.xy,ijfeG.xy,ijfeB.xy); + FsrEasuTapH(pR,pG,pB,pW,AH2( 0.0,-1.0)-ppp.xx,AH2( 0.0, 0.0)-ppp.yy,dir,len2,lob,clp,ijfeR.zw,ijfeG.zw,ijfeB.zw); + FsrEasuTapH(pR,pG,pB,pW,AH2( 1.0, 2.0)-ppp.xx,AH2( 1.0, 1.0)-ppp.yy,dir,len2,lob,clp,klhgR.xy,klhgG.xy,klhgB.xy); + FsrEasuTapH(pR,pG,pB,pW,AH2( 2.0, 1.0)-ppp.xx,AH2( 0.0, 0.0)-ppp.yy,dir,len2,lob,clp,klhgR.zw,klhgG.zw,klhgB.zw); + FsrEasuTapH(pR,pG,pB,pW,AH2( 1.0, 0.0)-ppp.xx,AH2( 2.0, 2.0)-ppp.yy,dir,len2,lob,clp,zzonR.zw,zzonG.zw,zzonB.zw); + AH3 aC=AH3(pR.x+pR.y,pG.x+pG.y,pB.x+pB.y); + AH1 aW=pW.x+pW.y; +//------------------------------------------------------------------------------------------------------------------------------ + // Slightly different for FP16 version due to combined min and max. + pix=min(AH3(bothR.y,bothG.y,bothB.y),max(-AH3(bothR.x,bothG.x,bothB.x),aC*AH3_(ARcpH1(aW))));} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [RCAS] ROBUST CONTRAST ADAPTIVE SHARPENING +// +//------------------------------------------------------------------------------------------------------------------------------ +// CAS uses a simplified mechanism to convert local contrast into a variable amount of sharpness. +// RCAS uses a more exact mechanism, solving for the maximum local sharpness possible before clipping. +// RCAS also has a built in process to limit sharpening of what it detects as possible noise. +// RCAS sharper does not support scaling, as it should be applied after EASU scaling. +// Pass EASU output straight into RCAS, no color conversions necessary. +//------------------------------------------------------------------------------------------------------------------------------ +// RCAS is based on the following logic. +// RCAS uses a 5 tap filter in a cross pattern (same as CAS), +// w n +// w 1 w for taps w m e +// w s +// Where 'w' is the negative lobe weight. +// output = (w*(n+e+w+s)+m)/(4*w+1) +// RCAS solves for 'w' by seeing where the signal might clip out of the {0 to 1} input range, +// 0 == (w*(n+e+w+s)+m)/(4*w+1) -> w = -m/(n+e+w+s) +// 1 == (w*(n+e+w+s)+m)/(4*w+1) -> w = (1-m)/(n+e+w+s-4*1) +// Then chooses the 'w' which results in no clipping, limits 'w', and multiplies by the 'sharp' amount. +// This solution above has issues with MSAA input as the steps along the gradient cause edge detection issues. +// So RCAS uses 4x the maximum and 4x the minimum (depending on equation)in place of the individual taps. +// As well as switching from 'm' to either the minimum or maximum (depending on side), to help in energy conservation. +// This stabilizes RCAS. +// RCAS does a simple highpass which is normalized against the local contrast then shaped, +// 0.25 +// 0.25 -1 0.25 +// 0.25 +// This is used as a noise detection filter, to reduce the effect of RCAS on grain, and focus on real edges. +// +// GLSL example for the required callbacks : +// +// AH4 FsrRcasLoadH(ASW2 p){return AH4(imageLoad(imgSrc,ASU2(p)));} +// void FsrRcasInputH(inout AH1 r,inout AH1 g,inout AH1 b) +// { +// //do any simple input color conversions here or leave empty if none needed +// } +// +// FsrRcasCon need to be called from the CPU or GPU to set up constants. +// Including a GPU example here, the 'con' value would be stored out to a constant buffer. +// +// AU4 con; +// FsrRcasCon(con, +// 0.0); // The scale is {0.0 := maximum sharpness, to N>0, where N is the number of stops (halving) of the reduction of sharpness}. +// --------------- +// RCAS sharpening supports a CAS-like pass-through alpha via, +// #define FSR_RCAS_PASSTHROUGH_ALPHA 1 +// RCAS also supports a define to enable a more expensive path to avoid some sharpening of noise. +// Would suggest it is better to apply film grain after RCAS sharpening (and after scaling) instead of using this define, +// #define FSR_RCAS_DENOISE 1 +//============================================================================================================================== +// This is set at the limit of providing unnatural results for sharpening. +#define FSR_RCAS_LIMIT (0.25-(1.0/16.0)) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// CONSTANT SETUP +//============================================================================================================================== +// Call to setup required constant values (works on CPU or GPU). +A_STATIC void FsrRcasCon( +outAU4 con, +// The scale is {0.0 := maximum, to N>0, where N is the number of stops (halving) of the reduction of sharpness}. +AF1 sharpness){ + // Transform from stops to linear value. + sharpness=AExp2F1(-sharpness); + varAF2(hSharp)=initAF2(sharpness,sharpness); + con[0]=AU1_AF1(sharpness); + con[1]=AU1_AH2_AF2(hSharp); + con[2]=0; + con[3]=0;} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// NON-PACKED 32-BIT VERSION +//============================================================================================================================== +#if defined(A_GPU)&&defined(FSR_RCAS_F) + // Input callback prototypes that need to be implemented by calling shader + AF4 FsrRcasLoadF(ASU2 p); + void FsrRcasInputF(inout AF1 r,inout AF1 g,inout AF1 b); +//------------------------------------------------------------------------------------------------------------------------------ + void FsrRcasF( + out AF1 pixR, // Output values, non-vector so port between RcasFilter() and RcasFilterH() is easy. + out AF1 pixG, + out AF1 pixB, + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + out AF1 pixA, + #endif + AU2 ip, // Integer pixel position in output. + AU4 con){ // Constant generated by RcasSetup(). + // Algorithm uses minimal 3x3 pixel neighborhood. + // b + // d e f + // h + ASU2 sp=ASU2(ip); + AF3 b=FsrRcasLoadF(sp+ASU2( 0,-1)).rgb; + AF3 d=FsrRcasLoadF(sp+ASU2(-1, 0)).rgb; + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + AF4 ee=FsrRcasLoadF(sp); + AF3 e=ee.rgb;pixA=ee.a; + #else + AF3 e=FsrRcasLoadF(sp).rgb; + #endif + AF3 f=FsrRcasLoadF(sp+ASU2( 1, 0)).rgb; + AF3 h=FsrRcasLoadF(sp+ASU2( 0, 1)).rgb; + // Rename (32-bit) or regroup (16-bit). + AF1 bR=b.r; + AF1 bG=b.g; + AF1 bB=b.b; + AF1 dR=d.r; + AF1 dG=d.g; + AF1 dB=d.b; + AF1 eR=e.r; + AF1 eG=e.g; + AF1 eB=e.b; + AF1 fR=f.r; + AF1 fG=f.g; + AF1 fB=f.b; + AF1 hR=h.r; + AF1 hG=h.g; + AF1 hB=h.b; + // Run optional input transform. + FsrRcasInputF(bR,bG,bB); + FsrRcasInputF(dR,dG,dB); + FsrRcasInputF(eR,eG,eB); + FsrRcasInputF(fR,fG,fB); + FsrRcasInputF(hR,hG,hB); + // Luma times 2. + AF1 bL=bB*AF1_(0.5)+(bR*AF1_(0.5)+bG); + AF1 dL=dB*AF1_(0.5)+(dR*AF1_(0.5)+dG); + AF1 eL=eB*AF1_(0.5)+(eR*AF1_(0.5)+eG); + AF1 fL=fB*AF1_(0.5)+(fR*AF1_(0.5)+fG); + AF1 hL=hB*AF1_(0.5)+(hR*AF1_(0.5)+hG); + // Noise detection. + AF1 nz=AF1_(0.25)*bL+AF1_(0.25)*dL+AF1_(0.25)*fL+AF1_(0.25)*hL-eL; + nz=ASatF1(abs(nz)*APrxMedRcpF1(AMax3F1(AMax3F1(bL,dL,eL),fL,hL)-AMin3F1(AMin3F1(bL,dL,eL),fL,hL))); + nz=AF1_(-0.5)*nz+AF1_(1.0); + // Min and max of ring. + AF1 mn4R=min(AMin3F1(bR,dR,fR),hR); + AF1 mn4G=min(AMin3F1(bG,dG,fG),hG); + AF1 mn4B=min(AMin3F1(bB,dB,fB),hB); + AF1 mx4R=max(AMax3F1(bR,dR,fR),hR); + AF1 mx4G=max(AMax3F1(bG,dG,fG),hG); + AF1 mx4B=max(AMax3F1(bB,dB,fB),hB); + // Immediate constants for peak range. + AF2 peakC=AF2(1.0,-1.0*4.0); + // Limiters, these need to be high precision RCPs. + AF1 hitMinR=mn4R*ARcpF1(AF1_(4.0)*mx4R); + AF1 hitMinG=mn4G*ARcpF1(AF1_(4.0)*mx4G); + AF1 hitMinB=mn4B*ARcpF1(AF1_(4.0)*mx4B); + AF1 hitMaxR=(peakC.x-mx4R)*ARcpF1(AF1_(4.0)*mn4R+peakC.y); + AF1 hitMaxG=(peakC.x-mx4G)*ARcpF1(AF1_(4.0)*mn4G+peakC.y); + AF1 hitMaxB=(peakC.x-mx4B)*ARcpF1(AF1_(4.0)*mn4B+peakC.y); + AF1 lobeR=max(-hitMinR,hitMaxR); + AF1 lobeG=max(-hitMinG,hitMaxG); + AF1 lobeB=max(-hitMinB,hitMaxB); + AF1 lobe=max(AF1_(-FSR_RCAS_LIMIT),min(AMax3F1(lobeR,lobeG,lobeB),AF1_(0.0)))*AF1_AU1(con.x); + // Apply noise removal. + #ifdef FSR_RCAS_DENOISE + lobe*=nz; + #endif + // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. + AF1 rcpL=APrxMedRcpF1(AF1_(4.0)*lobe+AF1_(1.0)); + pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL; + pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL; + pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL; + return;} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// NON-PACKED 16-BIT VERSION +//============================================================================================================================== +#if defined(A_GPU)&&defined(A_HALF)&&defined(FSR_RCAS_H) + // Input callback prototypes that need to be implemented by calling shader + AH4 FsrRcasLoadH(ASW2 p); + void FsrRcasInputH(inout AH1 r,inout AH1 g,inout AH1 b); +//------------------------------------------------------------------------------------------------------------------------------ + void FsrRcasH( + out AH1 pixR, // Output values, non-vector so port between RcasFilter() and RcasFilterH() is easy. + out AH1 pixG, + out AH1 pixB, + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + out AH1 pixA, + #endif + AU2 ip, // Integer pixel position in output. + AU4 con){ // Constant generated by RcasSetup(). + // Sharpening algorithm uses minimal 3x3 pixel neighborhood. + // b + // d e f + // h + ASW2 sp=ASW2(ip); + AH3 b=FsrRcasLoadH(sp+ASW2( 0,-1)).rgb; + AH3 d=FsrRcasLoadH(sp+ASW2(-1, 0)).rgb; + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + AH4 ee=FsrRcasLoadH(sp); + AH3 e=ee.rgb;pixA=ee.a; + #else + AH3 e=FsrRcasLoadH(sp).rgb; + #endif + AH3 f=FsrRcasLoadH(sp+ASW2( 1, 0)).rgb; + AH3 h=FsrRcasLoadH(sp+ASW2( 0, 1)).rgb; + // Rename (32-bit) or regroup (16-bit). + AH1 bR=b.r; + AH1 bG=b.g; + AH1 bB=b.b; + AH1 dR=d.r; + AH1 dG=d.g; + AH1 dB=d.b; + AH1 eR=e.r; + AH1 eG=e.g; + AH1 eB=e.b; + AH1 fR=f.r; + AH1 fG=f.g; + AH1 fB=f.b; + AH1 hR=h.r; + AH1 hG=h.g; + AH1 hB=h.b; + // Run optional input transform. + FsrRcasInputH(bR,bG,bB); + FsrRcasInputH(dR,dG,dB); + FsrRcasInputH(eR,eG,eB); + FsrRcasInputH(fR,fG,fB); + FsrRcasInputH(hR,hG,hB); + // Luma times 2. + AH1 bL=bB*AH1_(0.5)+(bR*AH1_(0.5)+bG); + AH1 dL=dB*AH1_(0.5)+(dR*AH1_(0.5)+dG); + AH1 eL=eB*AH1_(0.5)+(eR*AH1_(0.5)+eG); + AH1 fL=fB*AH1_(0.5)+(fR*AH1_(0.5)+fG); + AH1 hL=hB*AH1_(0.5)+(hR*AH1_(0.5)+hG); + // Noise detection. + AH1 nz=AH1_(0.25)*bL+AH1_(0.25)*dL+AH1_(0.25)*fL+AH1_(0.25)*hL-eL; + nz=ASatH1(abs(nz)*APrxMedRcpH1(AMax3H1(AMax3H1(bL,dL,eL),fL,hL)-AMin3H1(AMin3H1(bL,dL,eL),fL,hL))); + nz=AH1_(-0.5)*nz+AH1_(1.0); + // Min and max of ring. + AH1 mn4R=min(AMin3H1(bR,dR,fR),hR); + AH1 mn4G=min(AMin3H1(bG,dG,fG),hG); + AH1 mn4B=min(AMin3H1(bB,dB,fB),hB); + AH1 mx4R=max(AMax3H1(bR,dR,fR),hR); + AH1 mx4G=max(AMax3H1(bG,dG,fG),hG); + AH1 mx4B=max(AMax3H1(bB,dB,fB),hB); + // Immediate constants for peak range. + AH2 peakC=AH2(1.0,-1.0*4.0); + // Limiters, these need to be high precision RCPs. + AH1 hitMinR=mn4R*ARcpH1(AH1_(4.0)*mx4R); + AH1 hitMinG=mn4G*ARcpH1(AH1_(4.0)*mx4G); + AH1 hitMinB=mn4B*ARcpH1(AH1_(4.0)*mx4B); + AH1 hitMaxR=(peakC.x-mx4R)*ARcpH1(AH1_(4.0)*mn4R+peakC.y); + AH1 hitMaxG=(peakC.x-mx4G)*ARcpH1(AH1_(4.0)*mn4G+peakC.y); + AH1 hitMaxB=(peakC.x-mx4B)*ARcpH1(AH1_(4.0)*mn4B+peakC.y); + AH1 lobeR=max(-hitMinR,hitMaxR); + AH1 lobeG=max(-hitMinG,hitMaxG); + AH1 lobeB=max(-hitMinB,hitMaxB); + AH1 lobe=max(AH1_(-FSR_RCAS_LIMIT),min(AMax3H1(lobeR,lobeG,lobeB),AH1_(0.0)))*AH2_AU1(con.y).x; + // Apply noise removal. + #ifdef FSR_RCAS_DENOISE + lobe*=nz; + #endif + // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. + AH1 rcpL=APrxMedRcpH1(AH1_(4.0)*lobe+AH1_(1.0)); + pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL; + pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL; + pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL;} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// PACKED 16-BIT VERSION +//============================================================================================================================== +#if defined(A_GPU)&&defined(A_HALF)&&defined(FSR_RCAS_HX2) + // Input callback prototypes that need to be implemented by the calling shader + AH4 FsrRcasLoadHx2(ASW2 p); + void FsrRcasInputHx2(inout AH2 r,inout AH2 g,inout AH2 b); +//------------------------------------------------------------------------------------------------------------------------------ + // Can be used to convert from packed Structures of Arrays to Arrays of Structures for store. + void FsrRcasDepackHx2(out AH4 pix0,out AH4 pix1,AH2 pixR,AH2 pixG,AH2 pixB){ + #ifdef A_HLSL + // Invoke a slower path for DX only, since it won't allow uninitialized values. + pix0.a=pix1.a=0.0; + #endif + pix0.rgb=AH3(pixR.x,pixG.x,pixB.x); + pix1.rgb=AH3(pixR.y,pixG.y,pixB.y);} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrRcasHx2( + // Output values are for 2 8x8 tiles in a 16x8 region. + // pix<R,G,B>.x = left 8x8 tile + // pix<R,G,B>.y = right 8x8 tile + // This enables later processing to easily be packed as well. + out AH2 pixR, + out AH2 pixG, + out AH2 pixB, + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + out AH2 pixA, + #endif + AU2 ip, // Integer pixel position in output. + AU4 con){ // Constant generated by RcasSetup(). + // No scaling algorithm uses minimal 3x3 pixel neighborhood. + ASW2 sp0=ASW2(ip); + AH3 b0=FsrRcasLoadHx2(sp0+ASW2( 0,-1)).rgb; + AH3 d0=FsrRcasLoadHx2(sp0+ASW2(-1, 0)).rgb; + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + AH4 ee0=FsrRcasLoadHx2(sp0); + AH3 e0=ee0.rgb;pixA.r=ee0.a; + #else + AH3 e0=FsrRcasLoadHx2(sp0).rgb; + #endif + AH3 f0=FsrRcasLoadHx2(sp0+ASW2( 1, 0)).rgb; + AH3 h0=FsrRcasLoadHx2(sp0+ASW2( 0, 1)).rgb; + ASW2 sp1=sp0+ASW2(8,0); + AH3 b1=FsrRcasLoadHx2(sp1+ASW2( 0,-1)).rgb; + AH3 d1=FsrRcasLoadHx2(sp1+ASW2(-1, 0)).rgb; + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + AH4 ee1=FsrRcasLoadHx2(sp1); + AH3 e1=ee1.rgb;pixA.g=ee1.a; + #else + AH3 e1=FsrRcasLoadHx2(sp1).rgb; + #endif + AH3 f1=FsrRcasLoadHx2(sp1+ASW2( 1, 0)).rgb; + AH3 h1=FsrRcasLoadHx2(sp1+ASW2( 0, 1)).rgb; + // Arrays of Structures to Structures of Arrays conversion. + AH2 bR=AH2(b0.r,b1.r); + AH2 bG=AH2(b0.g,b1.g); + AH2 bB=AH2(b0.b,b1.b); + AH2 dR=AH2(d0.r,d1.r); + AH2 dG=AH2(d0.g,d1.g); + AH2 dB=AH2(d0.b,d1.b); + AH2 eR=AH2(e0.r,e1.r); + AH2 eG=AH2(e0.g,e1.g); + AH2 eB=AH2(e0.b,e1.b); + AH2 fR=AH2(f0.r,f1.r); + AH2 fG=AH2(f0.g,f1.g); + AH2 fB=AH2(f0.b,f1.b); + AH2 hR=AH2(h0.r,h1.r); + AH2 hG=AH2(h0.g,h1.g); + AH2 hB=AH2(h0.b,h1.b); + // Run optional input transform. + FsrRcasInputHx2(bR,bG,bB); + FsrRcasInputHx2(dR,dG,dB); + FsrRcasInputHx2(eR,eG,eB); + FsrRcasInputHx2(fR,fG,fB); + FsrRcasInputHx2(hR,hG,hB); + // Luma times 2. + AH2 bL=bB*AH2_(0.5)+(bR*AH2_(0.5)+bG); + AH2 dL=dB*AH2_(0.5)+(dR*AH2_(0.5)+dG); + AH2 eL=eB*AH2_(0.5)+(eR*AH2_(0.5)+eG); + AH2 fL=fB*AH2_(0.5)+(fR*AH2_(0.5)+fG); + AH2 hL=hB*AH2_(0.5)+(hR*AH2_(0.5)+hG); + // Noise detection. + AH2 nz=AH2_(0.25)*bL+AH2_(0.25)*dL+AH2_(0.25)*fL+AH2_(0.25)*hL-eL; + nz=ASatH2(abs(nz)*APrxMedRcpH2(AMax3H2(AMax3H2(bL,dL,eL),fL,hL)-AMin3H2(AMin3H2(bL,dL,eL),fL,hL))); + nz=AH2_(-0.5)*nz+AH2_(1.0); + // Min and max of ring. + AH2 mn4R=min(AMin3H2(bR,dR,fR),hR); + AH2 mn4G=min(AMin3H2(bG,dG,fG),hG); + AH2 mn4B=min(AMin3H2(bB,dB,fB),hB); + AH2 mx4R=max(AMax3H2(bR,dR,fR),hR); + AH2 mx4G=max(AMax3H2(bG,dG,fG),hG); + AH2 mx4B=max(AMax3H2(bB,dB,fB),hB); + // Immediate constants for peak range. + AH2 peakC=AH2(1.0,-1.0*4.0); + // Limiters, these need to be high precision RCPs. + AH2 hitMinR=mn4R*ARcpH2(AH2_(4.0)*mx4R); + AH2 hitMinG=mn4G*ARcpH2(AH2_(4.0)*mx4G); + AH2 hitMinB=mn4B*ARcpH2(AH2_(4.0)*mx4B); + AH2 hitMaxR=(peakC.x-mx4R)*ARcpH2(AH2_(4.0)*mn4R+peakC.y); + AH2 hitMaxG=(peakC.x-mx4G)*ARcpH2(AH2_(4.0)*mn4G+peakC.y); + AH2 hitMaxB=(peakC.x-mx4B)*ARcpH2(AH2_(4.0)*mn4B+peakC.y); + AH2 lobeR=max(-hitMinR,hitMaxR); + AH2 lobeG=max(-hitMinG,hitMaxG); + AH2 lobeB=max(-hitMinB,hitMaxB); + AH2 lobe=max(AH2_(-FSR_RCAS_LIMIT),min(AMax3H2(lobeR,lobeG,lobeB),AH2_(0.0)))*AH2_(AH2_AU1(con.y).x); + // Apply noise removal. + #ifdef FSR_RCAS_DENOISE + lobe*=nz; + #endif + // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. + AH2 rcpL=APrxMedRcpH2(AH2_(4.0)*lobe+AH2_(1.0)); + pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL; + pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL; + pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL;} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [LFGA] LINEAR FILM GRAIN APPLICATOR +// +//------------------------------------------------------------------------------------------------------------------------------ +// Adding output-resolution film grain after scaling is a good way to mask both rendering and scaling artifacts. +// Suggest using tiled blue noise as film grain input, with peak noise frequency set for a specific look and feel. +// The 'Lfga*()' functions provide a convenient way to introduce grain. +// These functions limit grain based on distance to signal limits. +// This is done so that the grain is temporally energy preserving, and thus won't modify image tonality. +// Grain application should be done in a linear colorspace. +// The grain should be temporally changing, but have a temporal sum per pixel that adds to zero (non-biased). +//------------------------------------------------------------------------------------------------------------------------------ +// Usage, +// FsrLfga*( +// color, // In/out linear colorspace color {0 to 1} ranged. +// grain, // Per pixel grain texture value {-0.5 to 0.5} ranged, input is 3-channel to support colored grain. +// amount); // Amount of grain (0 to 1} ranged. +//------------------------------------------------------------------------------------------------------------------------------ +// Example if grain texture is monochrome: 'FsrLfgaF(color,AF3_(grain),amount)' +//============================================================================================================================== +#if defined(A_GPU) + // Maximum grain is the minimum distance to the signal limit. + void FsrLfgaF(inout AF3 c,AF3 t,AF1 a){c+=(t*AF3_(a))*min(AF3_(1.0)-c,c);} +#endif +//============================================================================================================================== +#if defined(A_GPU)&&defined(A_HALF) + // Half precision version (slower). + void FsrLfgaH(inout AH3 c,AH3 t,AH1 a){c+=(t*AH3_(a))*min(AH3_(1.0)-c,c);} +//------------------------------------------------------------------------------------------------------------------------------ + // Packed half precision version (faster). + void FsrLfgaHx2(inout AH2 cR,inout AH2 cG,inout AH2 cB,AH2 tR,AH2 tG,AH2 tB,AH1 a){ + cR+=(tR*AH2_(a))*min(AH2_(1.0)-cR,cR);cG+=(tG*AH2_(a))*min(AH2_(1.0)-cG,cG);cB+=(tB*AH2_(a))*min(AH2_(1.0)-cB,cB);} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [SRTM] SIMPLE REVERSIBLE TONE-MAPPER +// +//------------------------------------------------------------------------------------------------------------------------------ +// This provides a way to take linear HDR color {0 to FP16_MAX} and convert it into a temporary {0 to 1} ranged post-tonemapped linear. +// The tonemapper preserves RGB ratio, which helps maintain HDR color bleed during filtering. +//------------------------------------------------------------------------------------------------------------------------------ +// Reversible tonemapper usage, +// FsrSrtm*(color); // {0 to FP16_MAX} converted to {0 to 1}. +// FsrSrtmInv*(color); // {0 to 1} converted into {0 to 32768, output peak safe for FP16}. +//============================================================================================================================== +#if defined(A_GPU) + void FsrSrtmF(inout AF3 c){c*=AF3_(ARcpF1(AMax3F1(c.r,c.g,c.b)+AF1_(1.0)));} + // The extra max solves the c=1.0 case (which is a /0). + void FsrSrtmInvF(inout AF3 c){c*=AF3_(ARcpF1(max(AF1_(1.0/32768.0),AF1_(1.0)-AMax3F1(c.r,c.g,c.b))));} +#endif +//============================================================================================================================== +#if defined(A_GPU)&&defined(A_HALF) + void FsrSrtmH(inout AH3 c){c*=AH3_(ARcpH1(AMax3H1(c.r,c.g,c.b)+AH1_(1.0)));} + void FsrSrtmInvH(inout AH3 c){c*=AH3_(ARcpH1(max(AH1_(1.0/32768.0),AH1_(1.0)-AMax3H1(c.r,c.g,c.b))));} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrSrtmHx2(inout AH2 cR,inout AH2 cG,inout AH2 cB){ + AH2 rcp=ARcpH2(AMax3H2(cR,cG,cB)+AH2_(1.0));cR*=rcp;cG*=rcp;cB*=rcp;} + void FsrSrtmInvHx2(inout AH2 cR,inout AH2 cG,inout AH2 cB){ + AH2 rcp=ARcpH2(max(AH2_(1.0/32768.0),AH2_(1.0)-AMax3H2(cR,cG,cB)));cR*=rcp;cG*=rcp;cB*=rcp;} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [TEPD] TEMPORAL ENERGY PRESERVING DITHER +// +//------------------------------------------------------------------------------------------------------------------------------ +// Temporally energy preserving dithered {0 to 1} linear to gamma 2.0 conversion. +// Gamma 2.0 is used so that the conversion back to linear is just to square the color. +// The conversion comes in 8-bit and 10-bit modes, designed for output to 8-bit UNORM or 10:10:10:2 respectively. +// Given good non-biased temporal blue noise as dither input, +// the output dither will temporally conserve energy. +// This is done by choosing the linear nearest step point instead of perceptual nearest. +// See code below for details. +//------------------------------------------------------------------------------------------------------------------------------ +// DX SPEC RULES FOR FLOAT->UNORM 8-BIT CONVERSION +// =============================================== +// - Output is 'uint(floor(saturate(n)*255.0+0.5))'. +// - Thus rounding is to nearest. +// - NaN gets converted to zero. +// - INF is clamped to {0.0 to 1.0}. +//============================================================================================================================== +#if defined(A_GPU) + // Hand tuned integer position to dither value, with more values than simple checkerboard. + // Only 32-bit has enough precision for this compddation. + // Output is {0 to <1}. + AF1 FsrTepdDitF(AU2 p,AU1 f){ + AF1 x=AF1_(p.x+f); + AF1 y=AF1_(p.y); + // The 1.61803 golden ratio. + AF1 a=AF1_((1.0+sqrt(5.0))/2.0); + // Number designed to provide a good visual pattern. + AF1 b=AF1_(1.0/3.69); + x=x*a+(y*b); + return AFractF1(x);} +//------------------------------------------------------------------------------------------------------------------------------ + // This version is 8-bit gamma 2.0. + // The 'c' input is {0 to 1}. + // Output is {0 to 1} ready for image store. + void FsrTepdC8F(inout AF3 c,AF1 dit){ + AF3 n=sqrt(c); + n=floor(n*AF3_(255.0))*AF3_(1.0/255.0); + AF3 a=n*n; + AF3 b=n+AF3_(1.0/255.0);b=b*b; + // Ratio of 'a' to 'b' required to produce 'c'. + // APrxLoRcpF1() won't work here (at least for very high dynamic ranges). + // APrxMedRcpF1() is an IADD,FMA,MUL. + AF3 r=(c-b)*APrxMedRcpF3(a-b); + // Use the ratio as a cutoff to choose 'a' or 'b'. + // AGtZeroF1() is a MUL. + c=ASatF3(n+AGtZeroF3(AF3_(dit)-r)*AF3_(1.0/255.0));} +//------------------------------------------------------------------------------------------------------------------------------ + // This version is 10-bit gamma 2.0. + // The 'c' input is {0 to 1}. + // Output is {0 to 1} ready for image store. + void FsrTepdC10F(inout AF3 c,AF1 dit){ + AF3 n=sqrt(c); + n=floor(n*AF3_(1023.0))*AF3_(1.0/1023.0); + AF3 a=n*n; + AF3 b=n+AF3_(1.0/1023.0);b=b*b; + AF3 r=(c-b)*APrxMedRcpF3(a-b); + c=ASatF3(n+AGtZeroF3(AF3_(dit)-r)*AF3_(1.0/1023.0));} +#endif +//============================================================================================================================== +#if defined(A_GPU)&&defined(A_HALF) + AH1 FsrTepdDitH(AU2 p,AU1 f){ + AF1 x=AF1_(p.x+f); + AF1 y=AF1_(p.y); + AF1 a=AF1_((1.0+sqrt(5.0))/2.0); + AF1 b=AF1_(1.0/3.69); + x=x*a+(y*b); + return AH1(AFractF1(x));} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC8H(inout AH3 c,AH1 dit){ + AH3 n=sqrt(c); + n=floor(n*AH3_(255.0))*AH3_(1.0/255.0); + AH3 a=n*n; + AH3 b=n+AH3_(1.0/255.0);b=b*b; + AH3 r=(c-b)*APrxMedRcpH3(a-b); + c=ASatH3(n+AGtZeroH3(AH3_(dit)-r)*AH3_(1.0/255.0));} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC10H(inout AH3 c,AH1 dit){ + AH3 n=sqrt(c); + n=floor(n*AH3_(1023.0))*AH3_(1.0/1023.0); + AH3 a=n*n; + AH3 b=n+AH3_(1.0/1023.0);b=b*b; + AH3 r=(c-b)*APrxMedRcpH3(a-b); + c=ASatH3(n+AGtZeroH3(AH3_(dit)-r)*AH3_(1.0/1023.0));} +//============================================================================================================================== + // This computes dither for positions 'p' and 'p+{8,0}'. + AH2 FsrTepdDitHx2(AU2 p,AU1 f){ + AF2 x; + x.x=AF1_(p.x+f); + x.y=x.x+AF1_(8.0); + AF1 y=AF1_(p.y); + AF1 a=AF1_((1.0+sqrt(5.0))/2.0); + AF1 b=AF1_(1.0/3.69); + x=x*AF2_(a)+AF2_(y*b); + return AH2(AFractF2(x));} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC8Hx2(inout AH2 cR,inout AH2 cG,inout AH2 cB,AH2 dit){ + AH2 nR=sqrt(cR); + AH2 nG=sqrt(cG); + AH2 nB=sqrt(cB); + nR=floor(nR*AH2_(255.0))*AH2_(1.0/255.0); + nG=floor(nG*AH2_(255.0))*AH2_(1.0/255.0); + nB=floor(nB*AH2_(255.0))*AH2_(1.0/255.0); + AH2 aR=nR*nR; + AH2 aG=nG*nG; + AH2 aB=nB*nB; + AH2 bR=nR+AH2_(1.0/255.0);bR=bR*bR; + AH2 bG=nG+AH2_(1.0/255.0);bG=bG*bG; + AH2 bB=nB+AH2_(1.0/255.0);bB=bB*bB; + AH2 rR=(cR-bR)*APrxMedRcpH2(aR-bR); + AH2 rG=(cG-bG)*APrxMedRcpH2(aG-bG); + AH2 rB=(cB-bB)*APrxMedRcpH2(aB-bB); + cR=ASatH2(nR+AGtZeroH2(dit-rR)*AH2_(1.0/255.0)); + cG=ASatH2(nG+AGtZeroH2(dit-rG)*AH2_(1.0/255.0)); + cB=ASatH2(nB+AGtZeroH2(dit-rB)*AH2_(1.0/255.0));} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC10Hx2(inout AH2 cR,inout AH2 cG,inout AH2 cB,AH2 dit){ + AH2 nR=sqrt(cR); + AH2 nG=sqrt(cG); + AH2 nB=sqrt(cB); + nR=floor(nR*AH2_(1023.0))*AH2_(1.0/1023.0); + nG=floor(nG*AH2_(1023.0))*AH2_(1.0/1023.0); + nB=floor(nB*AH2_(1023.0))*AH2_(1.0/1023.0); + AH2 aR=nR*nR; + AH2 aG=nG*nG; + AH2 aB=nB*nB; + AH2 bR=nR+AH2_(1.0/1023.0);bR=bR*bR; + AH2 bG=nG+AH2_(1.0/1023.0);bG=bG*bG; + AH2 bB=nB+AH2_(1.0/1023.0);bB=bB*bB; + AH2 rR=(cR-bR)*APrxMedRcpH2(aR-bR); + AH2 rG=(cG-bG)*APrxMedRcpH2(aG-bG); + AH2 rB=(cB-bB)*APrxMedRcpH2(aB-bB); + cR=ASatH2(nR+AGtZeroH2(dit-rR)*AH2_(1.0/1023.0)); + cG=ASatH2(nG+AGtZeroH2(dit-rG)*AH2_(1.0/1023.0)); + cB=ASatH2(nB+AGtZeroH2(dit-rB)*AH2_(1.0/1023.0));} +#endif diff --git a/3rdparty/bgfx/examples/46-fsr/fs_fsr_copy_linear_to_gamma.sc b/3rdparty/bgfx/examples/46-fsr/fs_fsr_copy_linear_to_gamma.sc new file mode 100644 index 00000000000..2c9205e5749 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/fs_fsr_copy_linear_to_gamma.sc @@ -0,0 +1,21 @@ +$input v_texcoord0 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" + +SAMPLER2D(s_color, 0); + +void main() +{ + vec2 texCoord = v_texcoord0; + vec4 linearColor = texture2D(s_color, texCoord); + + // this pass is writing directly out to backbuffer, convert from linear to gamma + vec4 color = vec4(toGamma(linearColor.xyz), linearColor.w); + + gl_FragColor = color; +} diff --git a/3rdparty/bgfx/examples/46-fsr/fs_fsr_forward.sc b/3rdparty/bgfx/examples/46-fsr/fs_fsr_forward.sc new file mode 100644 index 00000000000..d60110d89f8 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/fs_fsr_forward.sc @@ -0,0 +1,79 @@ +$input v_normal, v_texcoord0, v_texcoord1, v_texcoord2 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" + +SAMPLER2D(s_albedo, 0); +SAMPLER2D(s_normal, 1); + +// struct ModelUniforms +uniform vec4 u_modelParams[2]; + +#define u_color (u_modelParams[0].xyz) +#define u_lightPosition (u_modelParams[1].xyz) + +// http://www.thetenthplanet.de/archives/1180 +// "followup: normal mapping without precomputed tangents" +mat3 cotangentFrame(vec3 N, vec3 p, vec2 uv) +{ + // get edge vectors of the pixel triangle + vec3 dp1 = dFdx(p); + vec3 dp2 = dFdy(p); + vec2 duv1 = dFdx(uv); + vec2 duv2 = dFdy(uv); + + // solve the linear system + vec3 dp2perp = cross(dp2, N); + vec3 dp1perp = cross(N, dp1); + vec3 T = dp2perp * duv1.x + dp1perp * duv2.x; + vec3 B = dp2perp * duv1.y + dp1perp * duv2.y; + + // construct a scale-invariant frame + float invMax = inversesqrt(max(dot(T,T), dot(B,B))); + return mat3(T*invMax, B*invMax, N); +} + +void main() +{ + vec3 albedo = toLinear(texture2D(s_albedo, v_texcoord0).xyz); + + // get vertex normal + vec3 normal = normalize(v_normal); + + // get normal map normal, unpack, and calculate z + vec3 normalMap; + normalMap.xy = texture2D(s_normal, v_texcoord0).xy; + normalMap.xy = normalMap.xy * 2.0 - 1.0; + normalMap.z = sqrt(1.0 - dot(normalMap.xy, normalMap.xy)); + + // swap x and y, because the brick texture looks flipped, don't copy this... + normalMap.xy = -normalMap.yx; + + // perturb geometry normal by normal map + vec3 pos = v_texcoord1.xyz; // contains world space pos + mat3 TBN = cotangentFrame(normal, pos, v_texcoord0); + vec3 bumpedNormal = normalize(instMul(TBN, normalMap)); + + vec3 light = (u_lightPosition - pos); + light = normalize(light); + + float NdotL = saturate(dot(bumpedNormal, light)); + float diffuse = NdotL * 1.0; + + vec3 V = v_texcoord2.xyz; // contains view vector + vec3 H = normalize(V+light); + float NdotH = saturate(dot(bumpedNormal, H)); + float specular = 5.0 * pow(NdotH, 256); + float ambient = 0.1; + + float lightAmount = ambient + diffuse; + vec3 color = u_color * albedo * lightAmount + specular; + + // leave color in linear space for better dof filter result + + gl_FragColor = vec4(color, 1.0); +} diff --git a/3rdparty/bgfx/examples/46-fsr/fs_fsr_forward_grid.sc b/3rdparty/bgfx/examples/46-fsr/fs_fsr_forward_grid.sc new file mode 100644 index 00000000000..db5fd56f9c7 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/fs_fsr_forward_grid.sc @@ -0,0 +1,58 @@ +$input v_normal, v_texcoord0, v_texcoord1, v_texcoord2 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" + +// struct ModelUniforms +uniform vec4 u_modelParams[2]; + +#define u_color (u_modelParams[0].xyz) +#define u_lightPosition (u_modelParams[1].xyz) + + +int ModHelper (float a, float b) +{ + return int( a - (b*floor(a/b))); +} + +vec3 GetGridColor (vec2 position, float width, vec3 color) +{ + position = abs(floor( position + vec2(-width, -width) )); + int posXMod = ModHelper(position.x, 2.0); + int posYMod = ModHelper(position.y, 2.0); + float gridColorScale = (posXMod == posYMod) ? 0.75 : 1.25; + return toLinear(color) * gridColorScale; +} + +void main() +{ + vec3 worldSpacePosition = v_texcoord1.xyz; // contains ws pos + vec2 gridCoord = worldSpacePosition.xz; // assuming y is up + vec3 gridColor = GetGridColor(gridCoord.xy, 0.002, u_color); + + // get vertex normal + vec3 normal = normalize(v_normal); + + vec3 light = (u_lightPosition - worldSpacePosition); + light = normalize(light); + + float NdotL = saturate(dot(normal, light)); + float diffuse = NdotL * 1.0; + + vec3 V = v_texcoord2.xyz; // contains view vector + vec3 H = normalize(V+light); + float NdotH = saturate(dot(normal, H)); + float specular = 5.0 * pow(NdotH, 256); + float ambient = 0.1; + + float lightAmount = ambient + diffuse; + vec3 color = gridColor * lightAmount + specular; + + // leave color in linear space for better dof filter result + + gl_FragColor = vec4(color, 1.0); +} diff --git a/3rdparty/bgfx/examples/46-fsr/fsr.cpp b/3rdparty/bgfx/examples/46-fsr/fsr.cpp new file mode 100644 index 00000000000..39d9eff2ef8 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/fsr.cpp @@ -0,0 +1,346 @@ +/* +* Copyright 2021 Richard Schubert. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +* +* AMD FidelityFX Super Resolution 1.0 (FSR) +* Based on https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/sample/ +*/ + +#include "fsr.h" + +#include <bgfx_utils.h> + +struct FsrResources +{ + void init(uint32_t _width, uint32_t _height) + { + resize(_width, _height); + + // Create uniforms for screen passes and models + m_uniforms.init(); + + // Create texture sampler uniforms (used when we bind textures) + s_inputTexture = bgfx::createUniform("InputTexture", bgfx::UniformType::Sampler); + + // Create program from shaders. + m_bilinear32Program = bgfx::createProgram(loadShader("cs_fsr_bilinear_32"), true); + m_easu32Program = bgfx::createProgram(loadShader("cs_fsr_easu_32"), true); + m_rcas32Program = bgfx::createProgram(loadShader("cs_fsr_rcas_32"), true); + + m_support16BitPrecision = (bgfx::getRendererType() != bgfx::RendererType::OpenGL); + + if (m_support16BitPrecision) + { + m_bilinear16Program = bgfx::createProgram(loadShader("cs_fsr_bilinear_16"), true); + m_easu16Program = bgfx::createProgram(loadShader("cs_fsr_easu_16"), true); + m_rcas16Program = bgfx::createProgram(loadShader("cs_fsr_rcas_16"), true); + } + } + + void destroy() + { + if (m_support16BitPrecision) + { + bgfx::destroy(m_bilinear16Program); + m_bilinear16Program = BGFX_INVALID_HANDLE; + + bgfx::destroy(m_easu16Program); + m_easu16Program = BGFX_INVALID_HANDLE; + + bgfx::destroy(m_rcas16Program); + m_rcas16Program = BGFX_INVALID_HANDLE; + } + + bgfx::destroy(m_bilinear32Program); + m_bilinear32Program = BGFX_INVALID_HANDLE; + + bgfx::destroy(m_easu32Program); + m_easu32Program = BGFX_INVALID_HANDLE; + + bgfx::destroy(m_rcas32Program); + m_rcas32Program = BGFX_INVALID_HANDLE; + + m_uniforms.destroy(); + + bgfx::destroy(s_inputTexture); + s_inputTexture = BGFX_INVALID_HANDLE; + + if (bgfx::isValid(m_easuTexture16F) ) + { + bgfx::destroy(m_easuTexture16F); + m_easuTexture16F = BGFX_INVALID_HANDLE; + + bgfx::destroy(m_rcasTexture16F); + m_rcasTexture16F = BGFX_INVALID_HANDLE; + } + + if (bgfx::isValid(m_easuTexture32F) ) + { + bgfx::destroy(m_easuTexture32F); + m_easuTexture32F = BGFX_INVALID_HANDLE; + + bgfx::destroy(m_rcasTexture32F); + m_rcasTexture32F = BGFX_INVALID_HANDLE; + } + } + + void resize(uint32_t _width, uint32_t _height) + { + m_width = _width; + m_height = _height; + + if (bgfx::isValid(m_easuTexture16F) ) + { + bgfx::destroy(m_easuTexture16F); + m_easuTexture16F = BGFX_INVALID_HANDLE; + + bgfx::destroy(m_rcasTexture16F); + m_rcasTexture16F = BGFX_INVALID_HANDLE; + } + + if (bgfx::isValid(m_easuTexture32F) ) + { + bgfx::destroy(m_easuTexture32F); + bgfx::destroy(m_rcasTexture32F); + } + + if (m_support16BitPrecision) + { + m_easuTexture16F = bgfx::createTexture2D( + uint16_t(m_width) + , uint16_t(m_height) + , false + , 1 + , bgfx::TextureFormat::RGBA16F + , BGFX_TEXTURE_COMPUTE_WRITE | BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP + ); + bgfx::setName(m_easuTexture16F, "easuTexture16F"); + + m_rcasTexture16F = bgfx::createTexture2D( + uint16_t(m_width) + , uint16_t(m_height) + , false + , 1 + , bgfx::TextureFormat::RGBA16F + , BGFX_TEXTURE_COMPUTE_WRITE | BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP + ); + bgfx::setName(m_rcasTexture16F, "rcasTexture16F"); + } + + m_easuTexture32F = bgfx::createTexture2D( + uint16_t(m_width) + , uint16_t(m_height) + , false + , 1 + , bgfx::TextureFormat::RGBA32F + , BGFX_TEXTURE_COMPUTE_WRITE | BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP + ); + bgfx::setName(m_easuTexture32F, "easuTexture32F"); + + m_rcasTexture32F = bgfx::createTexture2D( + uint16_t(m_width) + , uint16_t(m_height) + , false + , 1 + , bgfx::TextureFormat::RGBA32F + , BGFX_TEXTURE_COMPUTE_WRITE | BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP + ); + bgfx::setName(m_rcasTexture32F, "rcasTexture32F"); + } + + struct Uniforms + { + struct Vec4 + { + float x; + float y; + float z; + float w; + }; + + enum + { + NumVec4 = 3 + }; + + void init() + { + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, NumVec4); + }; + + void submit() const + { + bgfx::setUniform(u_params, m_params, NumVec4); + } + + void destroy() + { + bgfx::destroy(u_params); + } + + union + { + struct + { + Vec4 ViewportSizeRcasAttenuation; + Vec4 SrcSize; + Vec4 DstSize; + }; + + uint32_t m_params[NumVec4 * 4]; + }; + + bgfx::UniformHandle u_params = BGFX_INVALID_HANDLE; + }; + + uint32_t m_width = 0; + uint32_t m_height = 0; + bool m_support16BitPrecision = false; + + // Resource handles + bgfx::ProgramHandle m_bilinear16Program = BGFX_INVALID_HANDLE; + bgfx::ProgramHandle m_easu16Program = BGFX_INVALID_HANDLE; + bgfx::ProgramHandle m_rcas16Program = BGFX_INVALID_HANDLE; + bgfx::TextureHandle m_easuTexture16F = BGFX_INVALID_HANDLE; + bgfx::TextureHandle m_rcasTexture16F = BGFX_INVALID_HANDLE; + + bgfx::ProgramHandle m_bilinear32Program = BGFX_INVALID_HANDLE; + bgfx::ProgramHandle m_easu32Program = BGFX_INVALID_HANDLE; + bgfx::ProgramHandle m_rcas32Program = BGFX_INVALID_HANDLE; + bgfx::TextureHandle m_easuTexture32F = BGFX_INVALID_HANDLE; + bgfx::TextureHandle m_rcasTexture32F = BGFX_INVALID_HANDLE; + + // Shader uniforms + Uniforms m_uniforms; + + // Uniforms to identify texture samplers + bgfx::UniformHandle s_inputTexture = BGFX_INVALID_HANDLE; + +}; + +Fsr::Fsr() +{ + m_resources = new FsrResources(); +} + +Fsr::~Fsr() +{ + delete m_resources; +} + +void Fsr::init(uint32_t _width, uint32_t _height) +{ + m_resources->init(_width, _height); +} + +void Fsr::destroy() +{ + m_resources->destroy(); +} + +void Fsr::resize(uint32_t _width, uint32_t _height) +{ + m_resources->resize(_width, _height); +} + +bgfx::ViewId Fsr::computeFsr(bgfx::ViewId _pass, bgfx::TextureHandle _colorTexture) +{ + updateUniforms(); + + bgfx::ViewId view = _pass; + + // This value is the image region dimension that each thread group of the FSR shader operates on + constexpr int threadGroupWorkRegionDim = 16; + + const int32_t dispatchX = (m_resources->m_width + (threadGroupWorkRegionDim - 1) ) / threadGroupWorkRegionDim; + const int32_t dispatchY = (m_resources->m_height + (threadGroupWorkRegionDim - 1) ) / threadGroupWorkRegionDim; + + bgfx::TextureFormat::Enum const format = m_config.m_fsr16Bit + ? bgfx::TextureFormat::RGBA16F + : bgfx::TextureFormat::RGBA32F + ; + + bgfx::TextureHandle fsrEasuTexture = m_config.m_fsr16Bit + ? m_resources->m_easuTexture16F + : m_resources->m_easuTexture32F + ; + + // EASU pass (upscale) + { + bgfx::ProgramHandle program = m_config.m_fsr16Bit + ? m_resources->m_easu16Program + : m_resources->m_easu32Program + ; + + if (!m_config.m_applyFsr) + { + program = m_resources->m_bilinear32Program; + } + + bgfx::setViewName(view, "fsr easu"); + m_resources->m_uniforms.submit(); + bgfx::setTexture(0, m_resources->s_inputTexture, _colorTexture); + bgfx::setImage(1, fsrEasuTexture, 0, bgfx::Access::Write, format); + bgfx::dispatch(view, program, dispatchX, dispatchY, 1); + ++view; + } + + // RCAS pass (sharpening) + if (m_config.m_applyFsrRcas) + { + bgfx::ProgramHandle program = m_config.m_fsr16Bit + ? m_resources->m_rcas16Program + : m_resources->m_rcas32Program + ; + + bgfx::setViewName(view, "fsr rcas"); + m_resources->m_uniforms.submit(); + bgfx::setTexture(0, m_resources->s_inputTexture, fsrEasuTexture); + bgfx::setImage( + 1 + , m_config.m_fsr16Bit? m_resources->m_rcasTexture16F: m_resources->m_rcasTexture32F + , 0 + , bgfx::Access::Write + , format + ); + bgfx::dispatch(view, program, dispatchX, dispatchY, 1); + ++view; + } + + return view; +} + +bgfx::TextureHandle Fsr::getResultTexture() const +{ + if (m_config.m_applyFsr && m_config.m_applyFsrRcas) + { + return m_config.m_fsr16Bit + ? m_resources->m_rcasTexture16F + : m_resources->m_rcasTexture32F + ; + } + + return m_config.m_fsr16Bit + ? m_resources->m_easuTexture16F + : m_resources->m_easuTexture32F + ; +} + +bool Fsr::supports16BitPrecision() const +{ + return m_resources->m_support16BitPrecision; +} + +void Fsr::updateUniforms() +{ + const float srcWidth = float(m_resources->m_width) / m_config.m_superSamplingFactor; + const float srcHeight = float(m_resources->m_height) / m_config.m_superSamplingFactor; + + m_resources->m_uniforms.ViewportSizeRcasAttenuation.x = srcWidth; + m_resources->m_uniforms.ViewportSizeRcasAttenuation.y = srcHeight; + m_resources->m_uniforms.ViewportSizeRcasAttenuation.z = m_config.m_rcasAttenuation; + m_resources->m_uniforms.SrcSize.x = float(m_resources->m_width); + m_resources->m_uniforms.SrcSize.y = float(m_resources->m_height); + m_resources->m_uniforms.DstSize.x = float(m_resources->m_width); + m_resources->m_uniforms.DstSize.y = float(m_resources->m_height); +} diff --git a/3rdparty/bgfx/examples/46-fsr/fsr.h b/3rdparty/bgfx/examples/46-fsr/fsr.h new file mode 100644 index 00000000000..63dd3c3fbc7 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/fsr.h @@ -0,0 +1,46 @@ +/* + * Copyright 2021 Richard Schubert. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + * + * AMD FidelityFX Super Resolution 1.0 (FSR) + * Based on https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/sample/ + */ + +#ifndef __FSR_H__ +#define __FSR_H__ + +#include <bgfx/bgfx.h> + +class Fsr +{ +public: + + struct Config + { + float m_superSamplingFactor = 2.0f; + float m_rcasAttenuation = 0.2f; + bool m_applyFsr = true; + bool m_applyFsrRcas = true; + bool m_fsr16Bit = false; + }; + + Config m_config; + + Fsr(); + ~Fsr(); + + void init(uint32_t _width, uint32_t _height); + void destroy(); + void resize(uint32_t _width, uint32_t _height); + + bgfx::ViewId computeFsr(bgfx::ViewId _pass, bgfx::TextureHandle _colorTexture); + bgfx::TextureHandle getResultTexture() const; + bool supports16BitPrecision() const; + +private: + void updateUniforms(); + + struct FsrResources *m_resources; +}; + +#endif // __FSR_H__ diff --git a/3rdparty/bgfx/examples/46-fsr/makefile b/3rdparty/bgfx/examples/46-fsr/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/46-fsr/screenshot.png b/3rdparty/bgfx/examples/46-fsr/screenshot.png Binary files differnew file mode 100644 index 00000000000..4dd18cab214 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/screenshot.png diff --git a/3rdparty/bgfx/examples/46-fsr/varying.def.sc b/3rdparty/bgfx/examples/46-fsr/varying.def.sc new file mode 100644 index 00000000000..4c827e4af32 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/varying.def.sc @@ -0,0 +1,9 @@ +vec4 a_position : POSITION; +vec2 a_texcoord0 : TEXCOORD0; +vec3 a_normal : NORMAL; + +vec2 v_texcoord0 : TEXCOORD0; +vec4 v_texcoord1 : TEXCOORD1; +vec4 v_texcoord2 : TEXCOORD2; +vec4 v_texcoord3 : TEXCOORD3; +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); diff --git a/3rdparty/bgfx/examples/46-fsr/vs_fsr_forward.sc b/3rdparty/bgfx/examples/46-fsr/vs_fsr_forward.sc new file mode 100644 index 00000000000..fa221b01e52 --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/vs_fsr_forward.sc @@ -0,0 +1,34 @@ +$input a_position, a_normal +$output v_normal, v_texcoord0, v_texcoord1, v_texcoord2 + +/* +* Copyright 2021 elven cache. All rights reserved. +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +*/ + +#include "../common/common.sh" + +void main() +{ + // Calculate vertex position + vec3 pos = a_position.xyz; + gl_Position = mul(u_modelViewProj, vec4(pos, 1.0)); + + vec3 wsPos = mul(u_model[0], vec4(pos, 1.0)).xyz; + + // Calculate normal, unpack + vec3 osNormal = a_normal.xyz * 2.0 - 1.0; + + // Transform normal into world space + vec3 wsNormal = mul(u_model[0], vec4(osNormal, 0.0)).xyz; + + v_normal.xyz = normalize(wsNormal); + v_texcoord0 = a_position.xy * vec2_splat(0.5); // the used mesh does not provide texture coordinates + + // Store world space view vector in extra texCoord attribute + vec3 wsCamPos = mul(u_invView, vec4(0.0, 0.0, 0.0, 1.0)).xyz; + vec3 view = normalize(wsCamPos - wsPos); + + v_texcoord1 = vec4(wsPos, 1.0); + v_texcoord2 = vec4(view, 1.0); +} diff --git a/3rdparty/bgfx/examples/46-fsr/vs_fsr_screenquad.sc b/3rdparty/bgfx/examples/46-fsr/vs_fsr_screenquad.sc new file mode 100644 index 00000000000..5b137dc5c3b --- /dev/null +++ b/3rdparty/bgfx/examples/46-fsr/vs_fsr_screenquad.sc @@ -0,0 +1,10 @@ +$input a_position, a_texcoord0 +$output v_texcoord0 + +#include "../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position.xyz, 1.0)); + v_texcoord0 = a_texcoord0; +} diff --git a/3rdparty/bgfx/examples/47-pixelformats/makefile b/3rdparty/bgfx/examples/47-pixelformats/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/47-pixelformats/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/47-pixelformats/pixelformats.cpp b/3rdparty/bgfx/examples/47-pixelformats/pixelformats.cpp new file mode 100644 index 00000000000..98c27558b29 --- /dev/null +++ b/3rdparty/bgfx/examples/47-pixelformats/pixelformats.cpp @@ -0,0 +1,828 @@ +/* + * Copyright 2022-2022 Sandy Carter. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "common.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" + +#include <bx/allocator.h> +#include <bx/math.h> + +#include <bimg/decode.h> + +#include <tinystl/string.h> +#include <tinystl/vector.h> +namespace stl = tinystl; + +namespace +{ + +constexpr int32_t kCheckerboardSize = 128; +constexpr int32_t kFirstUncompressedFormatIndex = bgfx::TextureFormat::Unknown + 1; +constexpr int32_t kNumCompressedFormats = bgfx::TextureFormat::Unknown; +constexpr int32_t kNumUncompressedFormats = bgfx::TextureFormat::UnknownDepth - kFirstUncompressedFormatIndex; +constexpr int32_t kNumFormats = kNumCompressedFormats + kNumUncompressedFormats; +const int32_t kNumFormatsInRow = (int32_t)bx::ceil(1.2f * bx::sqrt(kNumFormats) ); + +inline int32_t formatToIndex(bimg::TextureFormat::Enum format) +{ + int32_t index = format; + if (index >= kFirstUncompressedFormatIndex) + { + --index; + } + return index; +} + +inline bimg::TextureFormat::Enum indexToFormat(int32_t index) +{ + if (index < kNumCompressedFormats) + { + return bimg::TextureFormat::Enum(index); + } + else if (index >= kNumCompressedFormats && index < kNumFormats) + { + return bimg::TextureFormat::Enum(index + 1); + } + else + { + return bimg::TextureFormat::Unknown; + } +} + +struct TextureStatus +{ + enum Enum + { + Ok, + NotInitialized, + FormatNotSupported, + ConversionNotSupported, + FormatIgnored + }; + + inline static const char* getDescription(Enum value) + { + switch (value) + { + case Ok: return "Ok"; + case NotInitialized: return "Texture was not initialized"; + case FormatNotSupported: return "Format not supported by GPU/backend"; + case ConversionNotSupported: return "Conversion from RGBA8 not supported"; + case FormatIgnored: return "Format is ignored by this example"; + } + + return "Unknown"; + } + + inline static bool isError(Enum value) + { + return value == FormatNotSupported + || value == ConversionNotSupported + ; + } +}; + +struct Texture +{ + uint16_t m_width = 0; + uint16_t m_height = 0; + TextureStatus::Enum m_status = TextureStatus::NotInitialized; + bgfx::TextureHandle m_texture = BGFX_INVALID_HANDLE; +}; + +struct TextureSet +{ + stl::string m_name; + uint16_t m_maxWidth = 0; + uint16_t m_maxHeight = 0; + bool m_hasCompressedTextures = false; + Texture m_textures[kNumFormats]; +}; + +static bimg::ImageContainer* generateHueWheelImage() +{ + constexpr int32_t kTextureSize = 256; + constexpr int32_t kHalfTextureSize = kTextureSize / 2; + + bimg::ImageContainer* image = bimg::imageAlloc( + entry::getAllocator(), + bimg::TextureFormat::RGBA32F, + kTextureSize, + kTextureSize, + 1, + 1, + false, + false, + NULL + ); + if (NULL == image) + { + return NULL; + } + + float* rgbaf32Pixels = (float*)image->m_data; + + for (int32_t y = 0 ; y < kTextureSize; ++y) + { + for (int32_t x = 0; x < kTextureSize; ++x) + { + float relX = (x - kHalfTextureSize) / (float) kHalfTextureSize; + float relY = (y - kHalfTextureSize) / (float) kHalfTextureSize; + float distance = bx::min(1.0f, bx::sqrt(relX * relX + relY * relY) ); + float angle = bx::atan2(relY, relX); + float* pixel = &rgbaf32Pixels[(x + y * kTextureSize) * 4]; + float hsv[3] = {angle / (2.0f * bx::kPi), 1.0f, 1.0f - distance}; + bx::hsvToRgb(pixel, hsv); + pixel[3] = 1.0f - distance; + } + } + + for (int32_t y = 0; y < 16; ++y) + { + for (int32_t x = 0; x < 16; ++x) + { + float* r = &rgbaf32Pixels[(x + (kTextureSize - 36 + y) * kTextureSize) * 4]; + r[0] = 1.0f; + r[1] = 0.0f; + r[2] = 0.0f; + r[3] = 1.0f; + + float* g = &rgbaf32Pixels[(x + 16 + (kTextureSize - 36 + y) * kTextureSize) * 4]; + g[0] = 0.0f; + g[1] = 1.0f; + g[2] = 0.0f; + g[3] = 1.0f; + + float* b = &rgbaf32Pixels[(x + 32 + (kTextureSize - 36 + y) * kTextureSize) * 4]; + b[0] = 0.0f; + b[1] = 0.0f; + b[2] = 1.0f; + b[3] = 1.0f; + } + } + + for (int32_t y = 0; y < 16; ++y) + { + for (int32_t x = 0; x < 48; ++x) + { + float* a = &rgbaf32Pixels[(x + (kTextureSize - 20 + y) * kTextureSize) * 4]; + a[0] = 1.0f; + a[1] = 1.0f; + a[2] = 1.0f; + a[3] = 1.0f - (float)x / 48.0f; + } + } + + return image; +} + +static void textureSetPopulateCompressedFormat(TextureSet& textureSet, bimg::ImageContainer* source, bool freeImage = true) +{ + if (NULL == source) + { + return; + } + + uint32_t textureIndex = indexToFormat(source->m_format); + Texture& texture = textureSet.m_textures[textureIndex]; + + if (bgfx::isValid(texture.m_texture) || texture.m_status == TextureStatus::FormatNotSupported) + { + if (freeImage) + { + bimg::imageFree(source); + } + + return; + } + + bimg::ImageMip mip0; + bimg::imageGetRawData( + *source + , 0 + , 0 + , source->m_data + , source->m_size + , mip0 + ); + + texture.m_width = uint16_t(mip0.m_width); + texture.m_height = uint16_t(mip0.m_height); + texture.m_status = TextureStatus::Ok; + texture.m_texture = bgfx::createTexture2D( + uint16_t(mip0.m_width) + , uint16_t(mip0.m_height) + , false + , 1 + , bgfx::TextureFormat::Enum(mip0.m_format) + , BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT + , bgfx::copy(mip0.m_data, mip0.m_size) + ); + + bgfx::setName(texture.m_texture, bimg::getName(source->m_format) ); + + if (freeImage) + { + bimg::imageFree(source); + } + + textureSet.m_maxWidth = bx::max(textureSet.m_maxWidth, texture.m_width); + textureSet.m_maxHeight = bx::max(textureSet.m_maxHeight, texture.m_height); +} + +static void textureSetPopulateUncompressedFormats(TextureSet& textureSet, bimg::ImageContainer* source, bool freeImage = true) +{ + if (NULL == source) + { + return; + } + + const uint32_t flags = 0 + | BGFX_SAMPLER_MIN_POINT + | BGFX_SAMPLER_MAG_POINT + ; + + for (int32_t i = 0; i < kNumUncompressedFormats; ++i) + { + int32_t textureIndex = kNumCompressedFormats + i; + + Texture& texture = textureSet.m_textures[textureIndex]; + + if (bgfx::isValid(texture.m_texture) || texture.m_status == TextureStatus::FormatNotSupported) + { + continue; + } + + bimg::TextureFormat::Enum format = indexToFormat(textureIndex); + const char* formatName = bimg::getName(format); + int32_t formatNameLen = bx::strLen(formatName); + + if (!bimg::imageConvert(format, source->m_format) ) + { + texture.m_status = TextureStatus::ConversionNotSupported; + continue; + } + + if ( formatName[formatNameLen - 1] == 'I' + || formatName[formatNameLen - 1] == 'U') + { + texture.m_status = TextureStatus::FormatIgnored; + continue; + } + + bimg::TextureInfo info; + bimg::imageGetSize( + &info + , uint16_t(source->m_width) + , uint16_t(source->m_height) + , 1 + , false + , false + , 1 + , format + ); + + const bgfx::Memory* mem = bgfx::alloc(info.storageSize); + bimg::imageConvert( + entry::getAllocator() + , mem->data + , info.format + , source->m_data + , source->m_format + , source->m_width + , source->m_height + , 1 + ); + + texture.m_width = info.width; + texture.m_height = info.height; + texture.m_status = TextureStatus::Ok; + texture.m_texture = bgfx::createTexture2D( + info.width + , info.height + , info.numMips > 1 + , info.numLayers + , bgfx::TextureFormat::Enum(info.format) + , flags + , mem + ); + + bgfx::setName(texture.m_texture, formatName); + + textureSet.m_maxWidth = bx::max(textureSet.m_maxWidth, texture.m_width); + textureSet.m_maxHeight = bx::max(textureSet.m_maxHeight, texture.m_height); + } + + if (freeImage) + { + bimg::imageFree(source); + } +} + +static TextureSet makeEmptyTextureSet(const char* name) +{ + TextureSet textureSet; + textureSet.m_name = name; + + for (int32_t i = 0; i < kNumFormats; ++i) + { + bimg::TextureFormat::Enum format = indexToFormat(i); + + if (!bgfx::isTextureValid( + 1 + , false + , 1 + , bgfx::TextureFormat::Enum(format) + , BGFX_TEXTURE_NONE + ) ) + { + textureSet.m_textures[i].m_status = TextureStatus::FormatNotSupported; + } + } + + return textureSet; +} + +static TextureSet generateTextureSetFromImage(const char* name, bimg::ImageContainer* source, bool freeImage = true) +{ + TextureSet textureSet = makeEmptyTextureSet(name); + + if (NULL == source) + { + return textureSet; + } + + textureSetPopulateUncompressedFormats(textureSet, source, freeImage); + + return textureSet; +} + +static TextureSet generateTextureSetFromFileSet(const char* name, const char* filePaths[]) +{ + TextureSet textureSet = makeEmptyTextureSet(name); + + while (NULL != *filePaths) + { + const char* filePath = *filePaths++; + + uint32_t size; + void* data = load(filePath, &size); + if (NULL == data) + { + continue; + } + + bimg::ImageContainer* image = bimg::imageParse(entry::getAllocator(), data, size); + if (NULL == image) + { + unload(data); + continue; + } + + if (bimg::isCompressed(image->m_format) ) + { + textureSet.m_hasCompressedTextures = true; + + textureSetPopulateCompressedFormat(textureSet, image); + } + else + { + textureSetPopulateUncompressedFormats(textureSet, image); + } + } + + return textureSet; +} + +static TextureSet generateTextureSetFromFile(const char* filePath) +{ + const char* filePaths[] = + { + filePath, + nullptr + }; + + return generateTextureSetFromFileSet(bx::FilePath(filePath).getFileName().getPtr(), filePaths); +} + +class ExamplePixelFormats : public entry::AppI +{ +public: + ExamplePixelFormats(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_TEXT; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + const bgfx::Memory* checkerboardImageMemory = bgfx::alloc(kCheckerboardSize * kCheckerboardSize * 4); + bimg::imageCheckerboard( + checkerboardImageMemory->data + , kCheckerboardSize + , kCheckerboardSize + , 16 + , 0xFF909090 + , 0xFF707070 + ); + m_checkerboard = bgfx::createTexture2D( + kCheckerboardSize + , kCheckerboardSize + , false + , 1 + , bgfx::TextureFormat::RGBA8 + , BGFX_SAMPLER_MIN_POINT | BGFX_SAMPLER_MAG_POINT + , checkerboardImageMemory + ); + + m_textureSets.push_back(generateTextureSetFromImage("Hue Wheel", generateHueWheelImage() ) ); + m_textureSets.push_back(generateTextureSetFromFile("textures/pf_alpha_test.dds") ); + m_textureSets.push_back(generateTextureSetFromFile("textures/pf_uv_filtering_test.dds") ); + const char* textureCompressionSetFiles[] = + { + "textures/texture_compression_astc_4x4.dds", + "textures/texture_compression_astc_5x4.dds", + "textures/texture_compression_astc_5x5.dds", + "textures/texture_compression_astc_6x5.dds", + "textures/texture_compression_astc_6x6.dds", + "textures/texture_compression_astc_8x5.dds", + "textures/texture_compression_astc_8x6.dds", + "textures/texture_compression_astc_8x8.dds", + "textures/texture_compression_astc_10x5.dds", + "textures/texture_compression_astc_10x6.dds", + "textures/texture_compression_astc_10x8.dds", + "textures/texture_compression_astc_10x10.dds", + "textures/texture_compression_astc_12x10.dds", + "textures/texture_compression_astc_12x12.dds", + "textures/texture_compression_atc.dds", + "textures/texture_compression_atce.dds", + "textures/texture_compression_atci.dds", + "textures/texture_compression_bc1.ktx", + "textures/texture_compression_bc2.ktx", + "textures/texture_compression_bc3.ktx", + "textures/texture_compression_bc7.ktx", + "textures/texture_compression_etc1.ktx", + "textures/texture_compression_etc2.ktx", + "textures/texture_compression_ptc12.pvr", + "textures/texture_compression_ptc14.pvr", + "textures/texture_compression_ptc22.pvr", + "textures/texture_compression_ptc24.pvr", + "textures/texture_compression_rgba8.dds", + nullptr + }; + m_textureSets.push_back(generateTextureSetFromFileSet("texture_compression_* set", textureCompressionSetFiles)); + + m_currentTextureSet = &m_textureSets[0]; + + for (auto& textureSet : m_textureSets) + { + m_largestTextureSize = bx::max(m_largestTextureSize, float(bx::max(textureSet.m_maxWidth, textureSet.m_maxHeight))); + } + + imguiCreate(); + } + + int32_t shutdown() override + { + imguiDestroy(); + + for (auto& textureSet : m_textureSets) + { + for (auto texture : textureSet.m_textures) + { + if (bgfx::isValid(texture.m_texture) ) + { + bgfx::destroy(texture.m_texture); + } + } + } + + if (bgfx::isValid(m_checkerboard) ) + { + bgfx::destroy(m_checkerboard); + } + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + void imguiTextBoxUnformatted(const ImVec2& size, const char* text) const + { + ImVec2 textSize = ImGui::CalcTextSize(text); + ImVec2 textOffset = ImVec2( + size.x >= 0.0f ? bx::max( (size.x - textSize.x) / 2, 0.0f) : 0.0f + , size.y >= 0.0f ? bx::max( (size.y - textSize.y) / 2, 0.0f) : 0.0f + ); + ImGui::SetCursorPos(ImVec2( + ImGui::GetCursorPosX() + textOffset.x + , ImGui::GetCursorPosY() + textOffset.y + ) ); + ImGui::TextUnformatted(text); + }; + + void imguiStrikethroughItem() + { + ImVec2 itemSize = ImGui::GetItemRectSize(); + if (itemSize.x <= 0.0f || itemSize.y <= 0.0f) + return; + + ImVec2 p0 = ImGui::GetItemRectMin(); + ImVec2 p1 = ImGui::GetItemRectMax(); + p0.y = p1.y = p0.y + itemSize.y * 0.5f; + + ImGui::GetWindowDrawList()->AddLine(p0, p1, ImGui::GetColorU32(ImGuiCol_Text) ); + } + + void imguiTexturePreview(const ImVec2& size, bgfx::TextureHandle texture, const ImVec2& previewSizeHint = ImVec2(-1.0f, -1.0f) ) const + { + ImVec2 origin = ImGui::GetCursorScreenPos(); + + ImVec2 previewSize = ImVec2( + previewSizeHint.x >= 0.0f ? previewSizeHint.x : size.x + , previewSizeHint.y >= 0.0f ? previewSizeHint.y : size.y + ); + + ImVec2 previewPos = ImVec2( + origin.x + bx::max(0.0f, (size.x - previewSize.x) / 2) + , origin.y + bx::max(0.0f, (size.y - previewSize.y) / 2) + ); + + if (bgfx::isValid(texture) ) + { + if (bgfx::isValid(m_checkerboard) ) + { + static int64_t timeOffset = bx::getHPCounter(); + const float time = float( (bx::getHPCounter()-timeOffset)/double(bx::getHPFrequency() ) ); + const float animate = float(m_animate)*0.5f; + const float xx = bx::sin(time * 0.37f) * animate; + const float yy = bx::cos(time * 0.43f) * animate; + + const float uTile = bx::max(1.0f, previewSize.x / kCheckerboardSize); + const float vTile = bx::max(1.0f, previewSize.y / kCheckerboardSize); + + ImGui::SetCursorScreenPos(previewPos); + ImGui::Image(m_checkerboard, previewSize, ImVec2(xx, yy), ImVec2(xx+uTile, yy+vTile) ); + } + + ImGui::SetCursorScreenPos(previewPos); + ImGui::Image(texture, m_useAlpha ? IMGUI_FLAGS_ALPHA_BLEND : IMGUI_FLAGS_NONE, 0, previewSize); + } + else + { + ImU32 color = ImGui::GetColorU32(ImGuiCol_Text, 0.25f); + + ImDrawList* drawList = ImGui::GetWindowDrawList(); + ImVec2 p0 = previewPos; + ImVec2 p1 = ImVec2(p0.x + previewSize.x, p0.y + previewSize.y); + drawList->AddRect(p0, p1, color); + drawList->AddLine(p0, p1, color); + } + + ImGui::SetCursorScreenPos(origin); + ImGui::Dummy(size); + }; + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos(ImVec2(360.0f, 40.0f), ImGuiCond_FirstUseEver); + ImGui::Begin("Formats", NULL, ImGuiWindowFlags_AlwaysAutoResize); + + ImVec2 previewSize = ImVec2(m_previewSize, m_previewSize); + if (m_currentTextureSet->m_maxWidth > m_currentTextureSet->m_maxHeight) + previewSize.y /= float(m_currentTextureSet->m_maxWidth) / m_currentTextureSet->m_maxHeight; + else if (m_currentTextureSet->m_maxWidth < m_currentTextureSet->m_maxHeight) + previewSize.x *= float(m_currentTextureSet->m_maxWidth) / m_currentTextureSet->m_maxHeight; + + float cellWidth = previewSize.x; + for (int32_t i = 0; i < kNumFormats; ++i) + { + int32_t format = indexToFormat(i); + ImVec2 textSize = ImGui::CalcTextSize(bimg::getName(bimg::TextureFormat::Enum(format) ) ); + cellWidth = bx::max(cellWidth, textSize.x); + } + + ImDrawList* drawList = ImGui::GetWindowDrawList(); + + if (ImGui::BeginCombo("Sample", m_currentTextureSet ? m_currentTextureSet->m_name.c_str() : nullptr)) + { + for (auto& textureSet : m_textureSets) + { + bool isSelected = (&textureSet == m_currentTextureSet); + if (ImGui::Selectable(textureSet.m_name.c_str(), &isSelected)) + { + m_currentTextureSet = &textureSet; + if (!m_currentTextureSet->m_hasCompressedTextures && formatToIndex(m_selectedFormat) < kNumCompressedFormats) + m_selectedFormat = bimg::TextureFormat::RGBA8; + } + } + ImGui::EndCombo(); + } + ImGui::DragFloat("Preview Size", &m_previewSize, 1.0f, 10.0f, m_largestTextureSize, "%.0f px"); + ImGui::SameLine(); + ImGui::Checkbox("Alpha", &m_useAlpha); + ImGui::SameLine(); + ImGui::Checkbox("Animate", &m_animate); + ImGui::BeginTable("Formats", kNumFormatsInRow, ImGuiTableFlags_Borders | ImGuiTableFlags_SizingFixedFit); + + for (int32_t i = m_currentTextureSet->m_hasCompressedTextures ? 0 : kNumCompressedFormats; i < kNumFormats; ++i) + { + ImGui::TableNextColumn(); + + bimg::TextureFormat::Enum format = indexToFormat(i); + const Texture& texture = m_currentTextureSet->m_textures[i]; + + bool isSelected = (m_selectedFormat == format); + bool isFormatSupported = texture.m_status == TextureStatus::Ok; + bool isError = TextureStatus::isError(texture.m_status); + ImU32 labelColor = isError ? IM_COL32(255, 96, 96, 255) : ImGui::GetColorU32(isFormatSupported ? ImGuiCol_Text : ImGuiCol_TextDisabled); + + ImDrawListSplitter splitter; + splitter.Split(drawList, 2); + splitter.SetCurrentChannel(drawList, 1); + + ImGui::BeginGroup(); + ImGuiTextBuffer label; + label.append(bimg::getName(bimg::TextureFormat::Enum(format) ) ); + ImGui::PushStyleColor(ImGuiCol_Text, labelColor); + imguiTextBoxUnformatted(ImVec2(cellWidth, 0.0f), label.c_str() ); + if (TextureStatus::isError(texture.m_status) ) + { + imguiStrikethroughItem(); + } + imguiTexturePreview(ImVec2(cellWidth, previewSize.y), m_currentTextureSet->m_textures[i].m_texture, previewSize ); + ImGui::PopStyleColor(); + ImGui::EndGroup(); + if (!isFormatSupported && ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("%s", TextureStatus::getDescription(texture.m_status) ); + } + + splitter.SetCurrentChannel(drawList, 0); + ImGui::SetCursorScreenPos(ImGui::GetItemRectMin() ); + + ImGui::PushID(i); + + if (ImGui::Selectable( + "##selectable" + , &isSelected + , ImGuiSelectableFlags_AllowItemOverlap + , ImGui::GetItemRectSize() + ) ) + { + m_selectedFormat = format; + } + + ImGui::PopID(); + + splitter.Merge(drawList); + } + + ImGui::EndTable(); + ImGui::End(); + + { + int32_t selectedTextureIndex = formatToIndex(m_selectedFormat); + const Texture& texture = m_currentTextureSet->m_textures[selectedTextureIndex]; + + ImGui::SetNextWindowPos(ImVec2(10.0f, 280.0f), ImGuiCond_FirstUseEver); + ImGui::Begin("Selected Format", NULL, ImGuiWindowFlags_AlwaysAutoResize); + ImGui::Text("Format: %s", bimg::getName(m_selectedFormat) ); + ImGui::Text("Status: %s", TextureStatus::getDescription(texture.m_status) ); + + const bgfx::Caps* caps = bgfx::getCaps(); + + const uint32_t formatFlags = caps->formats[m_selectedFormat]; + + { + bool emulated = 0 != (formatFlags & (0 + | BGFX_CAPS_FORMAT_TEXTURE_2D_EMULATED + | BGFX_CAPS_FORMAT_TEXTURE_3D_EMULATED + | BGFX_CAPS_FORMAT_TEXTURE_CUBE_EMULATED + ) ); + ImGui::PushEnabled(false); + ImGui::Checkbox("Emu", &emulated); + ImGui::PopEnabled(); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) + { + ImGui::SetTooltip("Texture format is%s emulated.", emulated ? "" : " not"); + } + ImGui::SameLine(); + + bool framebuffer = 0 != (formatFlags & BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER); + ImGui::PushEnabled(false); + ImGui::Checkbox("FB", &framebuffer); + ImGui::PopEnabled(); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) + { + ImGui::SetTooltip("Texture format can%s be used as frame buffer.", framebuffer ? "" : "not"); + } + ImGui::SameLine(); + + bool msaa = 0 != (formatFlags & BGFX_CAPS_FORMAT_TEXTURE_MSAA); + ImGui::PushEnabled(false); + ImGui::Checkbox("MSAA", &msaa); + ImGui::PopEnabled(); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) + { + ImGui::SetTooltip("Texture can%s be sampled as MSAA.", msaa ? "" : "not"); + } + } + + ImVec2 size = ImVec2(float(m_currentTextureSet->m_maxWidth), float(m_currentTextureSet->m_maxHeight) ); + ImVec2 selectedPreviewSize = bgfx::isValid(texture.m_texture) ? ImVec2(float(texture.m_width), float(texture.m_height) ) : size; + + imguiTexturePreview(size, texture.m_texture, selectedPreviewSize); + ImGui::End(); + } + + imguiEndFrame(); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + + // This dummy draw call is here to make sure that view 0 is cleared + // if no other draw calls are submitted to viewZ 0. + bgfx::touch(0); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + + return true; + } + + return false; + } + + entry::MouseState m_mouseState; + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + float m_largestTextureSize = 256.0f; + float m_previewSize = 50.0f; + bool m_useAlpha = true; + bool m_animate = true; + bimg::TextureFormat::Enum m_selectedFormat = bimg::TextureFormat::RGBA8; + + bgfx::TextureHandle m_checkerboard = BGFX_INVALID_HANDLE; + stl::vector<TextureSet> m_textureSets; + TextureSet* m_currentTextureSet = NULL; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExamplePixelFormats + , "47-pixelformats" + , "Texture formats." + , "https://bkaradzic.github.io/bgfx/examples.html#pixelformats" + ); diff --git a/3rdparty/bgfx/examples/47-pixelformats/screenshot.png b/3rdparty/bgfx/examples/47-pixelformats/screenshot.png Binary files differnew file mode 100644 index 00000000000..6341f0ade3f --- /dev/null +++ b/3rdparty/bgfx/examples/47-pixelformats/screenshot.png diff --git a/3rdparty/bgfx/examples/48-drawindirect/cs_drawindirect.sc b/3rdparty/bgfx/examples/48-drawindirect/cs_drawindirect.sc new file mode 100644 index 00000000000..0e37a38ecef --- /dev/null +++ b/3rdparty/bgfx/examples/48-drawindirect/cs_drawindirect.sc @@ -0,0 +1,93 @@ +/* + * Copyright 2022 Liam Twigger. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "bgfx_compute.sh" + +//instance data for all instances (pre culling) +BUFFER_RO(instanceDataIn, vec4, 0); + +// Output +BUFFER_WR(indirectBuffer, uvec4, 1); +BUFFER_WR(instanceBufferOut, vec4, 2); +#ifdef INDIRECT_COUNT +BUFFER_WR(indirectCountBuffer, int, 3); +#endif + +uniform vec4 u_drawParams; + +// Use 64*1*1 local threads +NUM_THREADS(64, 1, 1) + +void main() +{ + int tId = int(gl_GlobalInvocationID.x); + int numDrawItems = int(u_drawParams.x); + int sideSize = int(u_drawParams.y); + float time = u_drawParams.z; + + // Work out the amount of work we're going to do here + int maxToDraw = min(sideSize*sideSize, numDrawItems); + + int numToDrawPerThread = maxToDraw/64 + 1; + + int idxStart = tId*numToDrawPerThread; + int idxMax = min(maxToDraw, (tId+1)*numToDrawPerThread); + + // Prepare draw mtx + for (int k = idxStart; k < idxMax; k++) { + int yy = k / sideSize; + int xx = k % sideSize; + + float _ax = time + xx * 0.21f; + float _ay = time + yy * 0.37f; + float sx = sin(_ax); + float cx = cos(_ax); + float sy = sin(_ay); + float cy = cos(_ay); + + vec4 a = vec4( cy, 0, sy, 0); + vec4 b = vec4( sx*sy, cx, -sx*cy, 0); + vec4 c = vec4(-cx*sy, sx, cx*cy, 0); + + vec4 d = vec4(-15.0f - (sideSize-11)*1.2f + float(xx) * 3.0f, -15.0f - (sideSize-11)*1.4f + float(yy) * 3.0f, max(0.0f, (sideSize-11.0f)*3.0f), 1.0f); + + vec4 color; + color.x = sin(time + float(xx) / 11.0f) * 0.5f + 0.5f; + color.y = cos(time + float(yy) / 11.0f) * 0.5f + 0.5f; + color.z = sin(time * 3.0f) * 0.5f + 0.5f; + color.w = 1.0f; + + instanceBufferOut[k*5+0] = a; + instanceBufferOut[k*5+1] = b; + instanceBufferOut[k*5+2] = c; + instanceBufferOut[k*5+3] = d; + instanceBufferOut[k*5+4] = color; + } + + // Fill indirect buffer + + for (int k = idxStart; k < idxMax; k++) { + drawIndexedIndirect( + // Target location params: + indirectBuffer, // target buffer + k, // index in buffer + // Draw call params: + instanceDataIn[k].w, // number of indices for this draw call + 1u, // number of instances for this draw call. You can disable this draw call by setting to zero + instanceDataIn[k].z, // offset in the index buffer + instanceDataIn[k].x, // offset in the vertex buffer. Note that you can use this to "reindex" submeshses - all indicies in this draw will be decremented by this amount + k // offset in the instance buffer. If you are drawing more than 1 instance per call see gpudrivenrendering for how to handle + ); + } + + #ifdef INDIRECT_COUNT + if (tId == 0) + { + // If BGFX_CAPS_DRAW_INDIRECT_COUNT is supported, you can limit the + // number of draw calls dynamically without a CPU round trip + indirectCountBuffer[0] = maxToDraw; + } + #endif +} diff --git a/3rdparty/bgfx/examples/48-drawindirect/cs_drawindirect_count.sc b/3rdparty/bgfx/examples/48-drawindirect/cs_drawindirect_count.sc new file mode 100644 index 00000000000..9a1f954153f --- /dev/null +++ b/3rdparty/bgfx/examples/48-drawindirect/cs_drawindirect_count.sc @@ -0,0 +1,2 @@ +#define INDIRECT_COUNT +#include "cs_drawindirect.sc" diff --git a/3rdparty/bgfx/examples/48-drawindirect/drawindirect.cpp b/3rdparty/bgfx/examples/48-drawindirect/drawindirect.cpp new file mode 100644 index 00000000000..65fffa123b7 --- /dev/null +++ b/3rdparty/bgfx/examples/48-drawindirect/drawindirect.cpp @@ -0,0 +1,469 @@ +/* + * Copyright 2022-2022 Liam Twigger. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +// Draw Indirect +// Render multiple different objects with one draw command. This example shows a minimal implementation of indirect drawing +// Reading References: +// https://litasa.github.io/blog/2017/09/04/OpenGL-MultiDrawIndirect-with-Individual-Textures +// https://cpp-rendering.io/indirect-rendering/ + +#include "common.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" + +namespace +{ + +struct PosColorVertex +{ + float m_x; + float m_y; + float m_z; + uint32_t m_abgr; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) + .end(); + }; + + static bgfx::VertexLayout ms_layout; +}; + +bgfx::VertexLayout PosColorVertex::ms_layout; + +struct ObjectInstance { + float m_vertexOffset; + float m_vertexCount; + float m_indexOffset; + float m_indexCount; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::TexCoord0, 4, bgfx::AttribType::Float) + .end(); + }; + + static bgfx::VertexLayout ms_layout; + }; + +bgfx::VertexLayout ObjectInstance::ms_layout; + +struct RenderInstance { + float m_mtx[16]; + float m_color[4]; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::TexCoord0, 4, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord1, 4, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord2, 4, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord3, 4, bgfx::AttribType::Float) + .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Float) + .end(); + }; + + static bgfx::VertexLayout ms_layout; + }; + +bgfx::VertexLayout RenderInstance::ms_layout; + +static PosColorVertex s_multiMeshVertices[12] = +{ + // Cube Model + {-1.0f, 1.0f, 1.0f, 0xff000000 }, + { 1.0f, 1.0f, 1.0f, 0xff0000ff }, + {-1.0f, -1.0f, 1.0f, 0xff00ff00 }, + { 1.0f, -1.0f, 1.0f, 0xff00ffff }, + {-1.0f, 1.0f, -1.0f, 0xffff0000 }, + { 1.0f, 1.0f, -1.0f, 0xffff00ff }, + {-1.0f, -1.0f, -1.0f, 0xffffff00 }, + { 1.0f, -1.0f, -1.0f, 0xffffffff }, + + // Tetrahedron Model (offset = 8) + { 1.0f, 1.0f, 1.0f, 0xff0000ff }, + { 1.0f, -1.0f, -1.0f, 0xff000000 }, + {-1.0f, 1.0f, -1.0f, 0xff00ff00 }, + {-1.0f, -1.0f, 1.0f, 0xff00ffff }, +}; + +static const uint16_t s_multiMeshIndices[48] = +{ + // Cube Indicies + 0, 1, 2, // 0 + 1, 3, 2, + 4, 6, 5, // 2 + 5, 6, 7, + 0, 2, 4, // 4 + 4, 2, 6, + 1, 5, 3, // 6 + 5, 7, 3, + 0, 4, 1, // 8 + 4, 5, 1, + 2, 3, 6, // 10 + 6, 3, 7, + + // Tetrahedron Indices (offset = 36) + 0, 2, 1, + 1, 2, 3, + 0, 3, 2, + 1, 3, 0, +}; + +static const uint32_t s_maxSideSize = 81; + +class DrawIndirect : public entry::AppI +{ +public: + DrawIndirect(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_TEXT; + m_reset = BGFX_RESET_VSYNC; + m_sideSize = 11; + m_nDrawElements = s_maxSideSize*s_maxSideSize; + m_useIndirectCount = false; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + // Create vertex stream declaration. + PosColorVertex::init(); + ObjectInstance::init(); + RenderInstance::init(); + + // Create static vertex buffer. + m_vbh = bgfx::createVertexBuffer( + bgfx::makeRef(s_multiMeshVertices, sizeof(s_multiMeshVertices) ) + , PosColorVertex::ms_layout + ); + + // Create static index buffer. + m_ibh = bgfx::createIndexBuffer( + bgfx::makeRef(s_multiMeshIndices, sizeof(s_multiMeshIndices) ) + ); + + // Create program from shaders. + m_program = loadProgram("vs_instancing", "fs_instancing"); // These are reused from 05-instancing + + m_indirect_program = BGFX_INVALID_HANDLE; + m_indirect_count_program = BGFX_INVALID_HANDLE; + m_indirect_buffer_handle = BGFX_INVALID_HANDLE; + m_indirect_count_buffer_handle = BGFX_INVALID_HANDLE; + m_object_list_buffer = BGFX_INVALID_HANDLE; + + u_drawParams = bgfx::createUniform("u_drawParams", bgfx::UniformType::Vec4); + + const bool computeSupported = !!(BGFX_CAPS_COMPUTE & bgfx::getCaps()->supported); + const bool indirectSupported = !!(BGFX_CAPS_DRAW_INDIRECT & bgfx::getCaps()->supported); + const bool instancingSupported = !!(BGFX_CAPS_INSTANCING & bgfx::getCaps()->supported); + + if (computeSupported && indirectSupported && instancingSupported) + { + // Set up indirect program + // This is a barebones program that populates the indirect buffer handle with draw requests + m_indirect_program = bgfx::createProgram(loadShader("cs_drawindirect"), true); + m_indirect_buffer_handle = bgfx::createIndirectBuffer(m_nDrawElements); + + const bool indirectCountSupported = !!(BGFX_CAPS_DRAW_INDIRECT_COUNT & bgfx::getCaps()->supported); + if (indirectCountSupported) + { + m_useIndirectCount = true; + m_indirect_count_program = bgfx::createProgram(loadShader("cs_drawindirect_count"), true); + + const bgfx::Memory * mem = bgfx::alloc(sizeof(uint32_t)); + *(uint32_t *)mem->data = 0; + m_indirect_count_buffer_handle = bgfx::createIndexBuffer(mem, BGFX_BUFFER_INDEX32 | BGFX_BUFFER_COMPUTE_WRITE | BGFX_BUFFER_DRAW_INDIRECT); + } + + const bgfx::Memory * mem = bgfx::alloc(sizeof(ObjectInstance) * m_nDrawElements); + ObjectInstance* objs = (ObjectInstance*) mem->data; + + for (uint32_t ii = 0; ii < m_nDrawElements; ++ii) + { + if (ii % 2) + { + // Tetrahedron + objs[ii].m_vertexOffset = 8; + objs[ii].m_vertexCount = 4; // m_vertexCount is unused in compute shader, its only here for completeness + objs[ii].m_indexOffset = 36; + objs[ii].m_indexCount = 12; + } + else + { + // Cube + objs[ii].m_vertexOffset = 0; + objs[ii].m_vertexCount = 8; + objs[ii].m_indexOffset = 0; + objs[ii].m_indexCount = 36; + } + } + + // This is a list of objects to be rendered via the indirect program + m_object_list_buffer = bgfx::createVertexBuffer(mem, ObjectInstance::ms_layout, BGFX_BUFFER_COMPUTE_READ); + + // This is the instance buffer used for rendering. + // You could instead use a dynamic instance buffer when rendering (use bgfx::allocInstanceDataBuffer in draw loop) + m_instance_buffer = bgfx::createDynamicVertexBuffer(m_nDrawElements, RenderInstance::ms_layout, BGFX_BUFFER_COMPUTE_WRITE); + } + + m_timeOffset = bx::getHPCounter(); + + imguiCreate(); + } + + int shutdown() override + { + imguiDestroy(); + + // Cleanup. + bgfx::destroy(m_ibh); + bgfx::destroy(m_vbh); + bgfx::destroy(m_program); + + if (bgfx::isValid(m_indirect_program)) + { + bgfx::destroy(m_indirect_program); + } + if (bgfx::isValid(m_indirect_count_program)) + { + bgfx::destroy(m_indirect_count_program); + } + if (bgfx::isValid(m_indirect_buffer_handle)) + { + bgfx::destroy(m_indirect_buffer_handle); + } + if (bgfx::isValid(m_indirect_count_buffer_handle)) + { + bgfx::destroy(m_indirect_count_buffer_handle); + } + if (bgfx::isValid(m_object_list_buffer)) + { + bgfx::destroy(m_object_list_buffer); + } + if (bgfx::isValid(m_instance_buffer)) + { + bgfx::destroy(m_instance_buffer); + } + bgfx::destroy(u_drawParams); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + // Get renderer capabilities info. + const bool computeSupported = !!(BGFX_CAPS_COMPUTE & bgfx::getCaps()->supported); + const bool indirectSupported = !!(BGFX_CAPS_DRAW_INDIRECT & bgfx::getCaps()->supported); + const bool indirectCountSupported = !!(BGFX_CAPS_DRAW_INDIRECT_COUNT & bgfx::getCaps()->supported); + const bool instancingSupported = !!(BGFX_CAPS_INSTANCING & bgfx::getCaps()->supported); + + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 5.0f - 10.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 5.0f, m_height / 2.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + ImGui::Text("%d draw calls", bgfx::getStats()->numDraw); + ImGui::Text("%d objects drawn", m_sideSize*m_sideSize); + + ImGui::Text("Grid Side Size:"); + ImGui::SliderInt("##size", (int*)&m_sideSize, 1, s_maxSideSize); + + ImGui::BeginDisabled(!indirectCountSupported); + ImGui::Checkbox("Indirect Count", &m_useIndirectCount); + ImGui::EndDisabled(); + if (!indirectCountSupported && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) ) + { + ImGui::SetTooltip("Indirect Count is not supported by GPU."); + } + + ImGui::End(); + + imguiEndFrame(); + + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + + // This dummy draw call is here to make sure that view 0 is cleared + // if no other draw calls are submitted to view 0. + bgfx::touch(0); + + const bx::Vec3 at = { 0.0f, 0.0f, 0.0f }; + const bx::Vec3 eye = { 0.0f, 0.0f, -35.0f }; + + // Set view and projection matrix for view 0. + { + float view[16]; + bx::mtxLookAt(view, eye, at); + + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 500.0f, bgfx::getCaps()->homogeneousDepth); + bgfx::setViewTransform(0, view, proj); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + } + + float time = (float)( (bx::getHPCounter() - m_timeOffset)/double(bx::getHPFrequency() ) ); + + if (computeSupported && indirectSupported && instancingSupported) + { + // Build indirect buffer & prepare instance buffer + // NOTE: IF you are rendering static data then + // this could be done once on startup and results stored + // This is done here for demonstration purposes + + // The model matrix for each instance is also set on compute + // you could modify this to, eg, do frustrum culling on the GPU + float ud[4] = { float(m_nDrawElements), float(m_sideSize), float(time), 0 }; + uint32_t numToDraw = (m_sideSize*m_sideSize); + + bgfx::setUniform(u_drawParams, ud); + + bgfx::setBuffer(0, m_object_list_buffer, bgfx::Access::Read); + bgfx::setBuffer(1, m_indirect_buffer_handle, bgfx::Access::Write); + bgfx::setBuffer(2, m_instance_buffer, bgfx::Access::Write); + + // Dispatch the call. We are using 64 local threads on the GPU to process the object list + // So lets dispatch ceil(numToDraw/64) workgroups of 64 local threads + if (m_useIndirectCount) + { + bgfx::setBuffer(3, m_indirect_count_buffer_handle, bgfx::Access::Write); + bgfx::dispatch(0, m_indirect_count_program, uint32_t(numToDraw/64 + 1), 1, 1); + } + else + { + bgfx::dispatch(0, m_indirect_program, uint32_t(numToDraw/64 + 1), 1, 1); + } + + // Submit our 1 draw call + // Set vertex and index buffer. + bgfx::setIndexBuffer(m_ibh); + bgfx::setVertexBuffer(0, m_vbh); + bgfx::setInstanceDataBuffer(m_instance_buffer, 0, numToDraw); + + // Set render states. + bgfx::setState(BGFX_STATE_DEFAULT); + + // Submit primitive for rendering to view 0. + if (m_useIndirectCount) + { + // With indirect count, the number of draws is read from a buffer + bgfx::submit(0, m_program, m_indirect_buffer_handle, 0, m_indirect_count_buffer_handle); + } + else + { + bgfx::submit(0, m_program, m_indirect_buffer_handle, 0, uint16_t(numToDraw)); + } + } + else + { + // Compute/Indirect/Instancing is not supported + bool blink = uint32_t(time*3.0f)&1; + bgfx::dbgTextPrintf(0, 0, blink ? 0x4f : 0x04, " Compute/Indirect/Instancing is not supported by GPU. "); + } + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + + return true; + } + + return false; + } + + entry::MouseState m_mouseState; + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + uint32_t m_sideSize; + uint32_t m_nDrawElements; + bool m_useIndirectCount; + + bgfx::VertexBufferHandle m_vbh; + bgfx::IndexBufferHandle m_ibh; + bgfx::ProgramHandle m_program; + bgfx::IndirectBufferHandle m_indirect_buffer_handle; + bgfx::IndexBufferHandle m_indirect_count_buffer_handle; + bgfx::ProgramHandle m_indirect_program; + bgfx::ProgramHandle m_indirect_count_program; + bgfx::VertexBufferHandle m_object_list_buffer; + bgfx::DynamicVertexBufferHandle m_instance_buffer; + bgfx::UniformHandle u_drawParams; + + int64_t m_timeOffset; +}; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + DrawIndirect + , "48-drawindirect" + , "Simple example of indirect rendering to render multiple different meshes with 1 draw call" + , "https://bkaradzic.github.io/bgfx/examples.html#drawindirect" + ); diff --git a/3rdparty/bgfx/examples/48-drawindirect/makefile b/3rdparty/bgfx/examples/48-drawindirect/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/48-drawindirect/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/48-drawindirect/screenshot.png b/3rdparty/bgfx/examples/48-drawindirect/screenshot.png Binary files differnew file mode 100644 index 00000000000..da13f2725db --- /dev/null +++ b/3rdparty/bgfx/examples/48-drawindirect/screenshot.png diff --git a/3rdparty/bgfx/examples/49-hextile/fs_hextile.bin b/3rdparty/bgfx/examples/49-hextile/fs_hextile.bin Binary files differnew file mode 100644 index 00000000000..30c4e7f669d --- /dev/null +++ b/3rdparty/bgfx/examples/49-hextile/fs_hextile.bin diff --git a/3rdparty/bgfx/examples/49-hextile/fs_hextile.sc b/3rdparty/bgfx/examples/49-hextile/fs_hextile.sc new file mode 100644 index 00000000000..65c888205f4 --- /dev/null +++ b/3rdparty/bgfx/examples/49-hextile/fs_hextile.sc @@ -0,0 +1,226 @@ +$input v_position, v_texcoord0 + +/* + * Copyright 2022 Preetish Kakkar. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + + /* + + Most of the code is inspired/ported from https://github.com/mmikk/hextile-demo/blob/main/hextile-demo/shader_lighting.hlsl + + The basic idea behind the algorithm is to use tiling & blending schema but instead of regular linear blending, the algorithm uses blending operator that prevents visual artifacts caused by linear blending + + We partition the uv-space on a triangle grid and compute the local triangle and the barycentric coordinates inside the triangle. We use a hash function to associate a random offset with each vertex of the triangle + grid and use this random offset to fetch the example texture. + + Finally, we blend the result using the barycentric coordinates as blending weights. + + */ + +#include "../common/common.sh" + +#define M_PI 3.1415926535897932384626433832795 + +SAMPLER2D(s_trx_d, 0); + +uniform vec4 u_params; + +#ifndef fmod +#define fmod(x, y) (x - y * trunc(x / y)) +#endif + +#define moduleOper(a, b) a - (float(b) * floor(a/float(b))) + +#define u_showWeights u_params.x +#define u_tileRate u_params.y +#define u_tileRotStrength u_params.z +#define u_useRegularTiling u_params.w + +vec3 Gain3(vec3 x, float r) +{ + // increase contrast when r>0.5 and + // reduce contrast if less + float k = log(1.0 - r) / log(0.5); + + vec3 s = 2.0 * step(0.5, x); + vec3 m = 2.0 * (1.0 - s); + + vec3 res = 0.5 * s + 0.25 * m * pow(max(vec3_splat(0.0), s + x * m), vec3_splat(k)); + + return res.xyz / (res.x + res.y + res.z); +} + +mat2 LoadRot2x2(vec2 idx, float rotStrength) +{ + float angle = abs(idx.x * idx.y) + abs(idx.x + idx.y) + M_PI; + + // remap to +/-pi + //angle = fmod(angle, 2.0*M_PI); + if (angle < 0.0) angle += 2.0 * M_PI; + if (angle > M_PI) angle -= 2.0 * M_PI; + + angle *= rotStrength; + + float cs = cos(angle); + float si = sin(angle); + + return mat2(cs, -si, si, cs); +} + +vec2 MakeCenST(vec2 Vertex) +{ + mat2 invSkewMat = mat2(1.0, 0.5, 0.0, 1.0 / 1.15470054); + + return mul(invSkewMat, Vertex) / (2.0 * sqrt(3.0)); +} + + +vec3 ProduceHexWeights(vec3 W, vec2 vertex1, vec2 vertex2, vec2 vertex3) +{ + vec3 res = vec3_splat(0.0); + + float v1 = moduleOper(((vertex1.x - vertex1.y)), 3.0); + if (v1 < 0.0) v1 += 3.0; + + float vh = v1 < 2.0 ? (v1 + 1.0) : 0.0; + float vl = v1 > 0.0 ? (v1 - 1.0) : 2.0; + float v2 = vertex1.x < vertex3.x ? vl : vh; + float v3 = vertex1.x < vertex3.x ? vh : vl; + + res.x = v3 == 0.0 ? W.z : (v2 == 0.0 ? W.y : W.x); + res.y = v3 == 1.0 ? W.z : (v2 == 1.0 ? W.y : W.x); + res.z = v3 == 2.0 ? W.z : (v2 == 2.0 ? W.y : W.x); + + return res; +} + +vec2 hash(vec2 p) +{ + vec2 r = mul(mat2(127.1, 311.7, 269.5, 183.3), p); + + return fract(sin(r) * 43758.5453); +} + +// Given a point in UV, compute local triangle barycentric coordinates and vertex IDs +void TriangleGrid(out float w1, out float w2, out float w3, + out vec2 vertex1, out vec2 vertex2, out vec2 vertex3, + vec2 uv) +{ + // Scaling of the input + uv *= 2.0 * sqrt(3.0); // controls the size of the input with respect to the size of the tiles. + + // Skew input space into simplex triangle grid + const mat2 gridToSkewedGrid = + mat2(1.0, -0.57735027, 0.0, 1.15470054); + vec2 skewedCoord = mul(gridToSkewedGrid, uv); + + vec2 baseId = floor(skewedCoord); + vec3 temp = vec3(fract(skewedCoord), 0.0); + temp.z = 1.0 - temp.x - temp.y; + + float s = step(0.0, -temp.z); + float s2 = 2.0 * s - 1.0; + + w1 = -temp.z * s2; + w2 = s - temp.y * s2; + w3 = s - temp.x * s2; + + vertex1 = baseId + vec2(s, s); + vertex2 = baseId + vec2(s, 1.0 - s); + vertex3 = baseId + vec2(1.0 - s, s); +} + +void hex2colTex(out vec4 color, out vec3 weights, vec2 uv, + float rotStrength, float r) +{ + // compute uv derivatives + vec2 dSTdx = dFdx(uv), dSTdy = dFdy(uv); + + // Get triangle info + float w1, w2, w3; + vec2 vertex1, vertex2, vertex3; + TriangleGrid(w1, w2, w3, vertex1, vertex2, vertex3, uv); + + mat2 rot1 = LoadRot2x2(vertex1, rotStrength); + mat2 rot2 = LoadRot2x2(vertex2, rotStrength); + mat2 rot3 = LoadRot2x2(vertex3, rotStrength); + + vec2 cen1 = MakeCenST(vertex1); + vec2 cen2 = MakeCenST(vertex2); + vec2 cen3 = MakeCenST(vertex3); + + // assign random offset to each triangle vertex + // this is used later to fetch from texture + vec2 uv1 = mul(uv - cen1, rot1) + cen1 + hash(vertex1); + vec2 uv2 = mul(uv - cen2, rot2) + cen2 + hash(vertex2); + vec2 uv3 = mul(uv - cen3, rot3) + cen3 + hash(vertex3); + + // Fetch input + // We could simply use texture2D function, however, the sreen space derivatives could be broken + // since we are using random offsets, we use texture2DGrad to make sure that we pass correct derivatives explicitly. + vec4 c1 = texture2DGrad(s_trx_d, uv1, + mul(dSTdx, rot1), mul(dSTdy, rot1)); + vec4 c2 = texture2DGrad(s_trx_d, uv2, + mul(dSTdx, rot2), mul(dSTdy, rot2)); + vec4 c3 = texture2DGrad(s_trx_d, uv3, + mul(dSTdx, rot3), mul(dSTdy, rot3)); + + // use luminance as weight + vec3 Lw = vec3(0.299, 0.587, 0.114); + vec3 Dw = vec3(dot(c1.xyz, Lw), dot(c2.xyz, Lw), dot(c3.xyz, Lw)); + + Dw = mix(vec3_splat(1.0), Dw, 0.6); // 0.6 is fall off constant + vec3 W = Dw * pow(vec3(w1, w2, w3), vec3_splat(7.0)); // 7 is g_exp + W /= (W.x + W.y + W.z); + if (r != 0.5) W = Gain3(W, r); + + // blend weights with color linearly + // histogram preserving blending will be better but requires precompution step to create histogram texture + color = W.x * c1 + W.y * c2 + W.z * c3; + weights = ProduceHexWeights(W.xyz, vertex1, vertex2, vertex3); +} + + +float GetTileRate() +{ + return 0.05 * u_tileRate; +} + +void FetchColorAndWeight(out vec3 color, out vec3 weights, vec2 uv) +{ + vec4 col4; + hex2colTex(col4, weights, uv, u_tileRotStrength, 0.7); + color = col4.xyz; +} + +void main() +{ + // actual world space position + vec3 surfPosInWorld = v_position.xyz; + + vec3 sp = GetTileRate() * surfPosInWorld; + + vec2 uv0 = vec2(sp.x, sp.z); + + if(u_useRegularTiling > 0.0) + { + gl_FragColor = vec4(texture2D(s_trx_d, uv0.xy)); + } + else + { + vec3 color, weights; + FetchColorAndWeight(color, weights, uv0); + + if (u_showWeights > 0.0) + { + gl_FragColor = vec4(weights, 1.0); + } + else + { + gl_FragColor = vec4(color, 1.0); + } + } + + +} diff --git a/3rdparty/bgfx/examples/49-hextile/hextile.cpp b/3rdparty/bgfx/examples/49-hextile/hextile.cpp new file mode 100644 index 00000000000..58dc2c7e3a5 --- /dev/null +++ b/3rdparty/bgfx/examples/49-hextile/hextile.cpp @@ -0,0 +1,328 @@ +/* + * Copyright 2022-2022 Preetish Kakkar. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include <bx/allocator.h> +#include <bx/debug.h> +#include <bx/math.h> +#include "common.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" + +namespace +{ + struct PosTextCoord0Vertex + { + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_layout + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + } + + static bgfx::VertexLayout ms_layout; + }; + + bgfx::VertexLayout PosTextCoord0Vertex::ms_layout; + + + static PosTextCoord0Vertex s_screenSpaceQuadVertices[] = + { + {-1.0f, 0.0f, -1.0f, 0.0, 0.0 }, + {-1.0f, 0.0f, 1.0f, 0.0, 1.0 }, + { 1.0f, 0.0f, -1.0f, 1.0, 0.0 }, + { 1.0f, 0.0f, 1.0f, 1.0, 1.0 }, + }; + + static const uint16_t s_screenSpaceQuadIndices[] = + { + 2, 3, 1, + 0, 2, 1, + }; + + + struct HextileData + { + bool m_showWeights = false; + int m_tileRate = 10; + float m_tileRotationStrength = 0.0f; + bool m_useRegularTiling = false; + bool m_pauseAnimation; + }; + + class ExampleHextile : public entry::AppI + { + public: + ExampleHextile(const char* _name, const char* _description, const char* _url) + : entry::AppI(_name, _description, _url) + , m_width(0) + , m_height(0) + , m_debug(BGFX_DEBUG_NONE) + , m_reset() + { + } + + void init(int32_t _argc, const char* const* _argv, uint32_t _width, uint32_t _height) override + { + Args args(_argc, _argv); + + m_width = _width; + m_height = _height; + m_debug = BGFX_DEBUG_NONE; + m_reset = BGFX_RESET_VSYNC; + + bgfx::Init init; + init.type = args.m_type; + init.vendorId = args.m_pciId; + init.platformData.nwh = entry::getNativeWindowHandle(entry::kDefaultWindowHandle); + init.platformData.ndt = entry::getNativeDisplayHandle(); + init.platformData.type = entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); + init.resolution.width = m_width; + init.resolution.height = m_height; + init.resolution.reset = m_reset; + bgfx::init(init); + + // Enable m_debug text. + bgfx::setDebug(m_debug); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + m_hexTileData.m_showWeights = false; + m_hexTileData.m_pauseAnimation = false; + + // Create vertex stream declaration. + PosTextCoord0Vertex::init(); + + // Create static vertex buffer. + m_vbh = bgfx::createVertexBuffer( + // Static data can be passed with bgfx::makeRef + bgfx::makeRef(s_screenSpaceQuadVertices, sizeof(s_screenSpaceQuadVertices)) + , PosTextCoord0Vertex::ms_layout + ); + + // Create static index buffer + m_ibh = bgfx::createIndexBuffer( + // Static data can be passed with bgfx::makeRef + bgfx::makeRef(s_screenSpaceQuadIndices, sizeof(s_screenSpaceQuadIndices)) + ); + + // Create program from shaders. + m_hextileProgram = loadProgram("vs_hextile", "fs_hextile"); + + // load texture to hextile + m_tileTexture = loadTexture("textures/aerial_rocks_04_diff_2k.ktx"); + + // Imgui. + imguiCreate(); + + m_timeOffset = bx::getHPCounter(); + + s_tileSampler = bgfx::createUniform("s_trx_d", bgfx::UniformType::Sampler); + + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, 3); + } + + virtual int shutdown() override + { + // Cleanup. + imguiDestroy(); + + if (bgfx::isValid(m_ibh)) + { + bgfx::destroy(m_ibh); + } + + if (bgfx::isValid(m_vbh)) + { + bgfx::destroy(m_vbh); + } + + if (bgfx::isValid(m_tileTexture)) + { + bgfx::destroy(m_tileTexture); + } + + if (bgfx::isValid(s_tileSampler)) + { + bgfx::destroy(s_tileSampler); + } + + if (bgfx::isValid(u_params)) + { + bgfx::destroy(u_params); + } + + bgfx::destroy(m_hextileProgram); + + /// When data is passed to bgfx via makeRef we need to make + /// sure library is done with it before freeing memory blocks. + bgfx::frame(); + + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() override + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState)) + { + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const float deltaTime = float(frameTime / freq); + + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , uint16_t(m_width) + , uint16_t(m_height) + ); + + showExampleDialog(this); + + ImGui::SetNextWindowPos( + ImVec2(m_width - m_width / 4.5f - 5.0f, 10.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::SetNextWindowSize( + ImVec2(m_width / 4.5f, m_height / 4.0f) + , ImGuiCond_FirstUseEver + ); + ImGui::Begin("Settings" + , NULL + , 0 + ); + + ImGui::Separator(); + + ImGui::Checkbox("Use Regular Tiling", &m_hexTileData.m_useRegularTiling); + ImGui::Checkbox("Show Weights", &m_hexTileData.m_showWeights); + ImGui::Checkbox("Pause Animation", &m_hexTileData.m_pauseAnimation); + + ImGui::SliderInt("Tile Rate", &m_hexTileData.m_tileRate, 2, 25); + + ImGui::SliderFloat("Tile Rotation", &m_hexTileData.m_tileRotationStrength, 0.0f, 20.0f); + + ImGui::Separator(); + + ImGui::End(); + imguiEndFrame(); + + // This dummy draw call is here to make sure that view 0 is cleared + // if no other draw calls are submitted to view 0. + bgfx::touch(0); + + const bx::Vec3 at = { 0.0f, 0.0f, 0.0f }; + + if (!m_hexTileData.m_pauseAnimation) + { + m_eye.z = bx::abs(m_eye.z) + (deltaTime / 4.0f); + + if (m_eye.z < 10.0f) + { + m_eye.z *= -1; + } + else + { + m_eye.z = -0.01f; + } + } + + float viewMtx[16]; + bx::mtxLookAt(viewMtx, m_eye, at); + + float projMtx[16]; + bx::mtxProj(projMtx, 30.0f, float(m_width) / float(m_height), 0.1f, 1000.0f, bgfx::getCaps()->homogeneousDepth); + + bgfx::setViewTransform(0, viewMtx, projMtx); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, uint16_t(m_width), uint16_t(m_height)); + + float modelTransform[16]; + bx::mtxSRT(modelTransform, 30.0f, 30.0f, 30.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); + bgfx::setTransform(modelTransform); + + bgfx::setVertexBuffer(0, m_vbh); + bgfx::setIndexBuffer(m_ibh); + + bgfx::setTexture(0, s_tileSampler, m_tileTexture); + + const float data[4] = { float(m_hexTileData.m_showWeights), float(m_hexTileData.m_tileRate), + float(m_hexTileData.m_tileRotationStrength), float(m_hexTileData.m_useRegularTiling) }; + bgfx::setUniform(u_params, data); + + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + | BGFX_STATE_MSAA + ); + + bgfx::submit(0, m_hextileProgram); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + + return true; + } + + return false; + } + + bgfx::VertexBufferHandle m_vbh; + bgfx::IndexBufferHandle m_ibh; + + bgfx::ProgramHandle m_hextileProgram; + bgfx::UniformHandle s_tileSampler; + bgfx::TextureHandle m_tileTexture; + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + HextileData m_hexTileData; + + entry::MouseState m_mouseState; + + bgfx::UniformHandle u_params; + + int64_t m_timeOffset; + + bx::Vec3 m_eye = { 0.0f, 2.0f, -0.01f }; + }; + +} // namespace + +ENTRY_IMPLEMENT_MAIN( + ExampleHextile + , "49-hextile" + , "Hextile example." + , "https://bkaradzic.github.io/bgfx/examples.html#hextile" +); diff --git a/3rdparty/bgfx/examples/49-hextile/makefile b/3rdparty/bgfx/examples/49-hextile/makefile new file mode 100644 index 00000000000..19c81e43692 --- /dev/null +++ b/3rdparty/bgfx/examples/49-hextile/makefile @@ -0,0 +1,10 @@ +# +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk diff --git a/3rdparty/bgfx/examples/49-hextile/screenshot.png b/3rdparty/bgfx/examples/49-hextile/screenshot.png Binary files differnew file mode 100644 index 00000000000..51b372ff329 --- /dev/null +++ b/3rdparty/bgfx/examples/49-hextile/screenshot.png diff --git a/3rdparty/bgfx/examples/49-hextile/varying.def.sc b/3rdparty/bgfx/examples/49-hextile/varying.def.sc new file mode 100644 index 00000000000..741df32452c --- /dev/null +++ b/3rdparty/bgfx/examples/49-hextile/varying.def.sc @@ -0,0 +1,13 @@ +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec3 v_position : TEXCOORD1 = vec3(0.0, 0.0, 0.0); +vec3 v_view : TEXCOORD2 = vec3(0.0, 0.0, 0.0); +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); +vec3 v_tangent : TANGENT = vec3(1.0, 0.0, 0.0); +vec3 v_bitangent : BINORMAL = vec3(0.0, 1.0, 0.0); +vec4 v_color0 : COLOR = vec4(1.0, 0.0, 0.0, 1.0); + +vec3 a_position : POSITION; +vec4 a_normal : NORMAL; +vec4 a_tangent : TANGENT; +vec2 a_texcoord0 : TEXCOORD0; +vec4 a_color0 : COLOR0; diff --git a/3rdparty/bgfx/examples/49-hextile/vs_hextile.sc b/3rdparty/bgfx/examples/49-hextile/vs_hextile.sc new file mode 100644 index 00000000000..50bf8754bea --- /dev/null +++ b/3rdparty/bgfx/examples/49-hextile/vs_hextile.sc @@ -0,0 +1,18 @@ +$input a_position, a_texcoord0 +$output v_position, v_texcoord0 + +/* + * Copyright 2015 Andrew Mac. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "../common/common.sh" + +void main() +{ + vec3 vp = mul(u_model[0], vec4(a_position.xyz, 1.0)).xyz; + v_position = vp; + v_texcoord0 = mul(u_model[0], vec4(a_texcoord0.xy, 1.0, 1.0)).xy; + + gl_Position = mul(u_viewProj, vec4(vp.xyz, 1.0)); +} diff --git a/3rdparty/bgfx/examples/assets/meshes/meshes.ninja b/3rdparty/bgfx/examples/assets/meshes/meshes.ninja index cc88f052ae6..9ebfc52af36 100644 --- a/3rdparty/bgfx/examples/assets/meshes/meshes.ninja +++ b/3rdparty/bgfx/examples/assets/meshes/meshes.ninja @@ -1,18 +1,18 @@ meshes = $pwd/../../runtime/meshes build $meshes/bunny.bin: geometryc_pack_normal_barycentric $pwd/bunny.obj -build $meshes/bunny_decimated.bin: geometryc_pack_normal $pwd/bunny_decimated.obj +build $meshes/bunny_decimated.bin: geometryc_pack_normal_compressed $pwd/bunny_decimated.obj build $meshes/bunny_patched.bin: geometryc_pack_normal $pwd/bunny_patched.obj build $meshes/column.bin: geometryc_pack_normal $pwd/column.obj build $meshes/cube.bin: geometryc_pack_normal $pwd/cube.obj build $meshes/hollowcube.bin: geometryc_pack_normal_barycentric $pwd/hollowcube.obj build $meshes/orb.bin: geometryc_pack_normal_barycentric $pwd/orb.obj build $meshes/platform.bin: geometryc_pack_normal $pwd/platform.obj -build $meshes/tree.bin: geometryc_pack_normal $pwd/tree.obj -build $meshes/tree1b_lod0_1.bin: geometryc_pack_normal $pwd/tree1b_lod0_1.obj -build $meshes/tree1b_lod0_2.bin: geometryc_pack_normal $pwd/tree1b_lod0_2.obj -build $meshes/tree1b_lod1_1.bin: geometryc_pack_normal $pwd/tree1b_lod1_1.obj -build $meshes/tree1b_lod1_2.bin: geometryc_pack_normal $pwd/tree1b_lod1_2.obj -build $meshes/tree1b_lod2_1.bin: geometryc_pack_normal $pwd/tree1b_lod2_1.obj -build $meshes/tree1b_lod2_2.bin: geometryc_pack_normal $pwd/tree1b_lod2_2.obj +build $meshes/tree.bin: geometryc_pack_normal_compressed $pwd/tree.obj +build $meshes/tree1b_lod0_1.bin: geometryc_pack_normal_compressed $pwd/tree1b_lod0_1.obj +build $meshes/tree1b_lod0_2.bin: geometryc_pack_normal_compressed $pwd/tree1b_lod0_2.obj +build $meshes/tree1b_lod1_1.bin: geometryc_pack_normal_compressed $pwd/tree1b_lod1_1.obj +build $meshes/tree1b_lod1_2.bin: geometryc_pack_normal_compressed $pwd/tree1b_lod1_2.obj +build $meshes/tree1b_lod2_1.bin: geometryc_pack_normal_compressed $pwd/tree1b_lod2_1.obj +build $meshes/tree1b_lod2_2.bin: geometryc_pack_normal_compressed $pwd/tree1b_lod2_2.obj build $meshes/test_scene.bin: geometryc_pack_normal $pwd/../sky/test_scene.obj diff --git a/3rdparty/bgfx/examples/assets/textures/aerial_rocks_04_diff_2k.jpg b/3rdparty/bgfx/examples/assets/textures/aerial_rocks_04_diff_2k.jpg Binary files differnew file mode 100644 index 00000000000..768143d37fb --- /dev/null +++ b/3rdparty/bgfx/examples/assets/textures/aerial_rocks_04_diff_2k.jpg diff --git a/3rdparty/bgfx/examples/assets/textures/alphatest.png b/3rdparty/bgfx/examples/assets/textures/texture-alpha-test.png Binary files differindex 98d68c1ab7a..98d68c1ab7a 100644 --- a/3rdparty/bgfx/examples/assets/textures/alphatest.png +++ b/3rdparty/bgfx/examples/assets/textures/texture-alpha-test.png diff --git a/3rdparty/bgfx/examples/assets/textures/texture_compression.png b/3rdparty/bgfx/examples/assets/textures/texture-compression-test.png Binary files differindex fb8386afadb..fb8386afadb 100644 --- a/3rdparty/bgfx/examples/assets/textures/texture_compression.png +++ b/3rdparty/bgfx/examples/assets/textures/texture-compression-test.png diff --git a/3rdparty/bgfx/examples/assets/textures/texture-cubemap-test.png b/3rdparty/bgfx/examples/assets/textures/texture-cubemap-test.png Binary files differnew file mode 100644 index 00000000000..9ba414f77ce --- /dev/null +++ b/3rdparty/bgfx/examples/assets/textures/texture-cubemap-test.png diff --git a/3rdparty/bgfx/examples/assets/textures/texture-uv-filtering-test.png b/3rdparty/bgfx/examples/assets/textures/texture-uv-filtering-test.png Binary files differnew file mode 100644 index 00000000000..ab9be83ffde --- /dev/null +++ b/3rdparty/bgfx/examples/assets/textures/texture-uv-filtering-test.png diff --git a/3rdparty/bgfx/examples/assets/textures/textures.ninja b/3rdparty/bgfx/examples/assets/textures/textures.ninja index ee31be41d2b..22fd3e32ba0 100644 --- a/3rdparty/bgfx/examples/assets/textures/textures.ninja +++ b/3rdparty/bgfx/examples/assets/textures/textures.ninja @@ -1,14 +1,34 @@ textures = $pwd/../../runtime/textures -build $textures/texture_compression_bc1.ktx: texturec_bc1 $pwd/texture_compression.png -build $textures/texture_compression_bc2.ktx: texturec_bc2 $pwd/texture_compression.png -build $textures/texture_compression_bc3.ktx: texturec_bc3 $pwd/texture_compression.png -build $textures/texture_compression_bc7.ktx: texturec_bc7 $pwd/texture_compression.png -build $textures/texture_compression_etc1.ktx: texturec_etc1 $pwd/texture_compression.png -build $textures/texture_compression_etc2.ktx: texturec_etc2 $pwd/texture_compression.png +build $textures/texture_compression_bc1.ktx: texturec_bc1 $pwd/texture-compression-test.png +build $textures/texture_compression_bc2.ktx: texturec_bc2 $pwd/texture-compression-test.png +build $textures/texture_compression_bc3.ktx: texturec_bc3 $pwd/texture-compression-test.png +build $textures/texture_compression_bc7.ktx: texturec_bc7 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_4x4.dds: texturec_astc4x4 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_5x4.dds: texturec_astc5x4 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_5x5.dds: texturec_astc5x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_6x5.dds: texturec_astc6x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_6x6.dds: texturec_astc6x6 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_8x5.dds: texturec_astc8x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_8x6.dds: texturec_astc8x6 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_8x8.dds: texturec_astc8x8 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x5.dds: texturec_astc10x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x6.dds: texturec_astc10x6 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x8.dds: texturec_astc10x8 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x10.dds: texturec_astc10x10 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_12x10.dds: texturec_astc12x10 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_12x12.dds: texturec_astc12x12 $pwd/texture-compression-test.png +build $textures/texture_compression_etc1.ktx: texturec_etc1 $pwd/texture-compression-test.png +build $textures/texture_compression_etc2.ktx: texturec_etc2 $pwd/texture-compression-test.png build $textures/parallax-d.ktx: texturec_diffuse $pwd/parallax-d.png build $textures/parallax-n.ktx: texturec_normal $pwd/parallax-n.png build $textures/parallax-h.ktx: texturec_height $pwd/parallax-h.png build $textures/lightmap.ktx: texturec_height $pwd/../sky/lightmap.png build $textures/uffizi.ktx: texturec_equirect $pwd/uffizi-large.exr + +build $textures/texture_compression_rgba8.dds: texturec_rgba8 $pwd/texture-compression-test.png +build $textures/pf_alpha_test.dds: texturec_rgba8 $pwd/texture-alpha-test.png +build $textures/pf_uv_filtering_test.dds: texturec_rgba8 $pwd/texture-uv-filtering-test.png + +build $textures/aerial_rocks_04_diff_2k.ktx: texturec_bc7 $pwd/aerial_rocks_04_diff_2k.jpg diff --git a/3rdparty/bgfx/examples/common/aviwriter.h b/3rdparty/bgfx/examples/common/aviwriter.h index 554e7166e24..32eb49f692e 100644 --- a/3rdparty/bgfx/examples/common/aviwriter.h +++ b/3rdparty/bgfx/examples/common/aviwriter.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef AVIWRITER_H_HEADER_GUARD @@ -41,93 +41,95 @@ struct AviWriter // is 0, 0. DIB expect OpenGL style coordinates, so this is inverted logic for AVI writer. m_yflip = !_yflip; + bx::Error err; + bx::StaticMemoryBlockWriter mem(m_frame, 8); // Stream Data (LIST 'movi' Chunk) http://msdn.microsoft.com/en-us/library/ms899496.aspx - bx::write(&mem, BX_MAKEFOURCC('0', '0', 'd', 'b') ); - bx::write(&mem, m_frameSize); + bx::write(&mem, BX_MAKEFOURCC('0', '0', 'd', 'b'), &err); + bx::write(&mem, m_frameSize, &err); - bx::write(m_writer, BX_MAKEFOURCC('R', 'I', 'F', 'F') ); + bx::write(m_writer, BX_MAKEFOURCC('R', 'I', 'F', 'F'), &err); m_riffSizeOffset = m_writer->seek(); - bx::write(m_writer, UINT32_C(0) ); + bx::write(m_writer, uint32_t(0), &err); - bx::write(m_writer, BX_MAKEFOURCC('A', 'V', 'I', ' ') ); + bx::write(m_writer, BX_MAKEFOURCC('A', 'V', 'I', ' '), &err); // AVI RIFF Form http://msdn.microsoft.com/en-us/library/ms899422.aspx - bx::write(m_writer, BX_MAKEFOURCC('L', 'I', 'S', 'T') ); - bx::write(m_writer, UINT32_C(192) ); - bx::write(m_writer, BX_MAKEFOURCC('h', 'd', 'r', 'l') ); + bx::write(m_writer, BX_MAKEFOURCC('L', 'I', 'S', 'T'), &err); + bx::write(m_writer, uint32_t(192), &err); + bx::write(m_writer, BX_MAKEFOURCC('h', 'd', 'r', 'l'), &err); // AVI Main Header http://msdn.microsoft.com/en-us/library/ms779632.aspx - bx::write(m_writer, BX_MAKEFOURCC('a', 'v', 'i', 'h') ); - bx::write(m_writer, UINT32_C(56) ); - bx::write(m_writer, UINT32_C(0) ); // dwMicroSecPerFrame - bx::write(m_writer, UINT32_C(0) ); // dwMaxBytesPerSec - bx::write(m_writer, UINT32_C(0) ); // dwPaddingGranularity - bx::write(m_writer, UINT32_C(0x110) ); // dwFlags + bx::write(m_writer, BX_MAKEFOURCC('a', 'v', 'i', 'h'), &err); + bx::write(m_writer, uint32_t(56), &err); + bx::write(m_writer, uint32_t(0), &err); // dwMicroSecPerFrame + bx::write(m_writer, uint32_t(0), &err); // dwMaxBytesPerSec + bx::write(m_writer, uint32_t(0), &err); // dwPaddingGranularity + bx::write(m_writer, uint32_t(0x110), &err); // dwFlags m_totalFramesOffset = m_writer->seek(); - bx::write(m_writer, UINT32_C(0) ); // dwTotalFrames - - bx::write(m_writer, UINT32_C(0) ); // dwInitialFrames - bx::write(m_writer, UINT32_C(1) ); // dwStreams - bx::write(m_writer, UINT32_C(0) ); // dwSuggestedBufferSize - bx::write(m_writer, _width); // dwWidth - bx::write(m_writer, _height); // dwHeight - bx::write(m_writer, UINT32_C(0) ); // dwReserved0 - bx::write(m_writer, UINT32_C(0) ); // dwReserved1 - bx::write(m_writer, UINT32_C(0) ); // dwReserved2 - bx::write(m_writer, UINT32_C(0) ); // dwReserved3 - - bx::write(m_writer, BX_MAKEFOURCC('L', 'I', 'S', 'T') ); - bx::write(m_writer, UINT32_C(116) ); - bx::write(m_writer, BX_MAKEFOURCC('s', 't', 'r', 'l') ); + bx::write(m_writer, uint32_t(0), &err); // dwTotalFrames + + bx::write(m_writer, uint32_t(0), &err); // dwInitialFrames + bx::write(m_writer, uint32_t(1), &err); // dwStreams + bx::write(m_writer, uint32_t(0), &err); // dwSuggestedBufferSize + bx::write(m_writer, _width, &err); // dwWidth + bx::write(m_writer, _height, &err); // dwHeight + bx::write(m_writer, uint32_t(0), &err); // dwReserved0 + bx::write(m_writer, uint32_t(0), &err); // dwReserved1 + bx::write(m_writer, uint32_t(0), &err); // dwReserved2 + bx::write(m_writer, uint32_t(0), &err); // dwReserved3 + + bx::write(m_writer, BX_MAKEFOURCC('L', 'I', 'S', 'T'), &err); + bx::write(m_writer, uint32_t(116), &err); + bx::write(m_writer, BX_MAKEFOURCC('s', 't', 'r', 'l'), &err); // AVISTREAMHEADER Structure http://msdn.microsoft.com/en-us/library/ms779638.aspx - bx::write(m_writer, BX_MAKEFOURCC('s', 't', 'r', 'h') ); - bx::write(m_writer, UINT32_C(56) ); + bx::write(m_writer, BX_MAKEFOURCC('s', 't', 'r', 'h'), &err); + bx::write(m_writer, uint32_t(56), &err); // AVI Stream Headers http://msdn.microsoft.com/en-us/library/ms899423.aspx - bx::write(m_writer, BX_MAKEFOURCC('v', 'i', 'd', 's') ); // fccType - bx::write(m_writer, BX_MAKEFOURCC('D', 'I', 'B', ' ') ); // fccHandler - bx::write(m_writer, UINT32_C(0) ); // dwFlags - bx::write(m_writer, uint16_t(0) ); // wPriority - bx::write(m_writer, uint16_t(0) ); // wLanguage - bx::write(m_writer, UINT32_C(0) ); // dwInitialFrames - bx::write(m_writer, UINT32_C(1) ); // dwScale - bx::write(m_writer, _fps); // dwRate - bx::write(m_writer, UINT32_C(0) ); // dwStart + bx::write(m_writer, BX_MAKEFOURCC('v', 'i', 'd', 's'), &err); // fccType + bx::write(m_writer, BX_MAKEFOURCC('D', 'I', 'B', ' '), &err); // fccHandler + bx::write(m_writer, uint32_t(0), &err); // dwFlags + bx::write(m_writer, uint16_t(0), &err); // wPriority + bx::write(m_writer, uint16_t(0), &err); // wLanguage + bx::write(m_writer, uint32_t(0), &err); // dwInitialFrames + bx::write(m_writer, uint32_t(1), &err); // dwScale + bx::write(m_writer, _fps, &err); // dwRate + bx::write(m_writer, uint32_t(0), &err); // dwStart m_lengthOffset = m_writer->seek(); - bx::write(m_writer, UINT32_C(0) ); // dwLength + bx::write(m_writer, uint32_t(0), &err); // dwLength - bx::write(m_writer, m_frameSize); // dwSuggestedBufferSize - bx::write(m_writer, UINT32_MAX); // dwQuality - bx::write(m_writer, UINT32_C(0) ); // dwSampleSize - bx::write(m_writer, int16_t(0) ); // rcFrame.left - bx::write(m_writer, int16_t(0) ); // rcFrame.top - bx::write(m_writer, uint16_t(_width) ); // rcFrame.right - bx::write(m_writer, uint16_t(_height) );// rcFrame.bottom + bx::write(m_writer, m_frameSize, &err); // dwSuggestedBufferSize + bx::write(m_writer, UINT32_MAX, &err); // dwQuality + bx::write(m_writer, uint32_t(0), &err); // dwSampleSize + bx::write(m_writer, int16_t(0), &err); // rcFrame.left + bx::write(m_writer, int16_t(0), &err); // rcFrame.top + bx::write(m_writer, uint16_t(_width), &err); // rcFrame.right + bx::write(m_writer, uint16_t(_height), &err);// rcFrame.bottom - bx::write(m_writer, BX_MAKEFOURCC('s', 't', 'r', 'f') ); - bx::write(m_writer, UINT32_C(40) ); + bx::write(m_writer, BX_MAKEFOURCC('s', 't', 'r', 'f'), &err); + bx::write(m_writer, uint32_t(40), &err); // BITMAPINFOHEADER structure http://msdn.microsoft.com/en-us/library/windows/desktop/dd318229%28v=vs.85%29.aspx - bx::write(m_writer, UINT32_C(40) ); // biSize - bx::write(m_writer, _width); // biWidth - bx::write(m_writer, _height); // biHeight - bx::write(m_writer, uint16_t(1) ); // biPlanes - bx::write(m_writer, uint16_t(24) ); // biBitCount - bx::write(m_writer, UINT32_C(0) ); // biCompression - bx::write(m_writer, m_frameSize); // biSizeImage - bx::write(m_writer, UINT32_C(0) ); // biXPelsPerMeter - bx::write(m_writer, UINT32_C(0) ); // biYPelsPerMeter - bx::write(m_writer, UINT32_C(0) ); // biClrUsed - bx::write(m_writer, UINT32_C(0) ); // biClrImportant - - bx::write(m_writer, BX_MAKEFOURCC('L', 'I', 'S', 'T') ); + bx::write(m_writer, uint32_t(40), &err); // biSize + bx::write(m_writer, _width, &err); // biWidth + bx::write(m_writer, _height, &err); // biHeight + bx::write(m_writer, uint16_t(1), &err); // biPlanes + bx::write(m_writer, uint16_t(24), &err); // biBitCount + bx::write(m_writer, uint32_t(0), &err); // biCompression + bx::write(m_writer, m_frameSize, &err); // biSizeImage + bx::write(m_writer, uint32_t(0), &err); // biXPelsPerMeter + bx::write(m_writer, uint32_t(0), &err); // biYPelsPerMeter + bx::write(m_writer, uint32_t(0), &err); // biClrUsed + bx::write(m_writer, uint32_t(0), &err); // biClrImportant + + bx::write(m_writer, BX_MAKEFOURCC('L', 'I', 'S', 'T'), &err); m_moviListOffset = m_writer->seek(); - bx::write(m_writer, UINT32_C(0) ); - bx::write(m_writer, BX_MAKEFOURCC('m', 'o', 'v', 'i') ); + bx::write(m_writer, uint32_t(0), &err); + bx::write(m_writer, BX_MAKEFOURCC('m', 'o', 'v', 'i'), &err); return true; } @@ -136,32 +138,34 @@ struct AviWriter { if (NULL != m_frame) { + bx::Error err; + int64_t pos = m_writer->seek(); m_writer->seek(m_moviListOffset, bx::Whence::Begin); - bx::write(m_writer, uint32_t(pos-m_moviListOffset-4) ); + bx::write(m_writer, uint32_t(pos-m_moviListOffset-4), &err); m_writer->seek(pos, bx::Whence::Begin); - bx::write(m_writer, BX_MAKEFOURCC('i', 'd', 'x', '1') ); - bx::write(m_writer, m_numFrames*16); + bx::write(m_writer, BX_MAKEFOURCC('i', 'd', 'x', '1'), &err); + bx::write(m_writer, m_numFrames*16, &err); for (uint32_t ii = 0, offset = 4; ii < m_numFrames; ++ii) { - bx::write(m_writer, BX_MAKEFOURCC('0', '0', 'd', 'b') ); - bx::write(m_writer, UINT32_C(16) ); - bx::write(m_writer, offset); - bx::write(m_writer, m_frameSize); + bx::write(m_writer, BX_MAKEFOURCC('0', '0', 'd', 'b'), &err); + bx::write(m_writer, uint32_t(16), &err); + bx::write(m_writer, offset, &err); + bx::write(m_writer, m_frameSize, &err); offset += m_frameSize + 8; } pos = m_writer->seek(); m_writer->seek(m_riffSizeOffset, bx::Whence::Begin); - bx::write(m_writer, uint32_t(pos-m_riffSizeOffset-4) ); + bx::write(m_writer, uint32_t(pos-m_riffSizeOffset-4), &err); m_writer->seek(m_totalFramesOffset, bx::Whence::Begin); - bx::write(m_writer, m_numFrames); + bx::write(m_writer, m_numFrames, &err); m_writer->seek(m_lengthOffset, bx::Whence::Begin); - bx::write(m_writer, m_numFrames); + bx::write(m_writer, m_numFrames, &err); bx::close(m_writer); @@ -210,7 +214,8 @@ struct AviWriter } } - bx::write(m_writer, m_frame, m_frameSize+8); + bx::Error err; + bx::write(m_writer, m_frame, m_frameSize+8, &err); } } diff --git a/3rdparty/bgfx/examples/common/bgfx_utils.cpp b/3rdparty/bgfx/examples/common/bgfx_utils.cpp index fd3b87251c5..209e3ea7fe1 100644 --- a/3rdparty/bgfx/examples/common/bgfx_utils.cpp +++ b/3rdparty/bgfx/examples/common/bgfx_utils.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -17,7 +17,7 @@ namespace stl = tinystl; #include <bx/readerwriter.h> #include <bx/string.h> #include "entry/entry.h" -#include <ib-compress/indexbufferdecompression.h> +#include <meshoptimizer/src/meshoptimizer.h> #include "bgfx_utils.h" @@ -29,7 +29,7 @@ void* load(bx::FileReaderI* _reader, bx::AllocatorI* _allocator, const char* _fi { uint32_t size = (uint32_t)bx::getSize(_reader); void* data = BX_ALLOC(_allocator, size); - bx::read(_reader, data, size); + bx::read(_reader, data, size, bx::ErrorAssert{}); bx::close(_reader); if (NULL != _size) { @@ -66,7 +66,7 @@ static const bgfx::Memory* loadMem(bx::FileReaderI* _reader, const char* _filePa { uint32_t size = (uint32_t)bx::getSize(_reader); const bgfx::Memory* mem = bgfx::alloc(size+1); - bx::read(_reader, mem->data, size); + bx::read(_reader, mem->data, size, bx::ErrorAssert{}); bx::close(_reader); mem->data[mem->size-1] = '\0'; return mem; @@ -82,7 +82,7 @@ static void* loadMem(bx::FileReaderI* _reader, bx::AllocatorI* _allocator, const { uint32_t size = (uint32_t)bx::getSize(_reader); void* data = BX_ALLOC(_allocator, size); - bx::read(_reader, data, size); + bx::read(_reader, data, size, bx::ErrorAssert{}); bx::close(_reader); if (NULL != _size) @@ -108,14 +108,17 @@ static bgfx::ShaderHandle loadShader(bx::FileReaderI* _reader, const char* _name case bgfx::RendererType::Direct3D9: shaderPath = "shaders/dx9/"; break; case bgfx::RendererType::Direct3D11: case bgfx::RendererType::Direct3D12: shaderPath = "shaders/dx11/"; break; + case bgfx::RendererType::Agc: case bgfx::RendererType::Gnm: shaderPath = "shaders/pssl/"; break; case bgfx::RendererType::Metal: shaderPath = "shaders/metal/"; break; + case bgfx::RendererType::Nvn: shaderPath = "shaders/nvn/"; break; case bgfx::RendererType::OpenGL: shaderPath = "shaders/glsl/"; break; case bgfx::RendererType::OpenGLES: shaderPath = "shaders/essl/"; break; case bgfx::RendererType::Vulkan: shaderPath = "shaders/spirv/"; break; + case bgfx::RendererType::WebGPU: shaderPath = "shaders/spirv/"; break; case bgfx::RendererType::Count: - BX_CHECK(false, "You should not be here!"); + BX_ASSERT(false, "You should not be here!"); break; } @@ -124,7 +127,7 @@ static bgfx::ShaderHandle loadShader(bx::FileReaderI* _reader, const char* _name bx::strCat(filePath, BX_COUNTOF(filePath), ".bin"); bgfx::ShaderHandle handle = bgfx::createShader(loadMem(_reader, filePath) ); - bgfx::setName(handle, filePath); + bgfx::setName(handle, _name); return handle; } @@ -158,7 +161,7 @@ static void imageReleaseCb(void* _ptr, void* _userData) bimg::imageFree(imageContainer); } -bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, uint32_t _flags, uint8_t _skip, bgfx::TextureInfo* _info, bimg::Orientation::Enum* _orientation) +bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, uint64_t _flags, uint8_t _skip, bgfx::TextureInfo* _info, bimg::Orientation::Enum* _orientation) { BX_UNUSED(_skip); bgfx::TextureHandle handle = BGFX_INVALID_HANDLE; @@ -244,7 +247,7 @@ bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, return handle; } -bgfx::TextureHandle loadTexture(const char* _name, uint32_t _flags, uint8_t _skip, bgfx::TextureInfo* _info, bimg::Orientation::Enum* _orientation) +bgfx::TextureHandle loadTexture(const char* _name, uint64_t _flags, uint8_t _skip, bgfx::TextureInfo* _info, bimg::Orientation::Enum* _orientation) { return loadTexture(entry::getFileReader(), _name, _flags, _skip, _info, _orientation); } @@ -257,7 +260,7 @@ bimg::ImageContainer* imageLoad(const char* _filePath, bgfx::TextureFormat::Enum return bimg::imageParse(entry::getAllocator(), data, size, bimg::TextureFormat::Enum(_dstFormat) ); } -void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices) +void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexLayout _layout, const uint16_t* _indices, uint32_t _numIndices) { struct PosTexcoord { @@ -285,14 +288,14 @@ void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl uint32_t i1 = indices[1]; uint32_t i2 = indices[2]; - bgfx::vertexUnpack(&v0.m_x, bgfx::Attrib::Position, _decl, _vertices, i0); - bgfx::vertexUnpack(&v0.m_u, bgfx::Attrib::TexCoord0, _decl, _vertices, i0); + bgfx::vertexUnpack(&v0.m_x, bgfx::Attrib::Position, _layout, _vertices, i0); + bgfx::vertexUnpack(&v0.m_u, bgfx::Attrib::TexCoord0, _layout, _vertices, i0); - bgfx::vertexUnpack(&v1.m_x, bgfx::Attrib::Position, _decl, _vertices, i1); - bgfx::vertexUnpack(&v1.m_u, bgfx::Attrib::TexCoord0, _decl, _vertices, i1); + bgfx::vertexUnpack(&v1.m_x, bgfx::Attrib::Position, _layout, _vertices, i1); + bgfx::vertexUnpack(&v1.m_u, bgfx::Attrib::TexCoord0, _layout, _vertices, i1); - bgfx::vertexUnpack(&v2.m_x, bgfx::Attrib::Position, _decl, _vertices, i2); - bgfx::vertexUnpack(&v2.m_u, bgfx::Attrib::TexCoord0, _decl, _vertices, i2); + bgfx::vertexUnpack(&v2.m_x, bgfx::Attrib::Position, _layout, _vertices, i2); + bgfx::vertexUnpack(&v2.m_u, bgfx::Attrib::TexCoord0, _layout, _vertices, i2); const float bax = v1.m_x - v0.m_x; const float bay = v1.m_y - v0.m_y; @@ -333,300 +336,338 @@ void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl for (uint32_t ii = 0; ii < _numVertices; ++ii) { - const float* tanu = &tangents[ii*6]; - const float* tanv = &tangents[ii*6 + 3]; + const bx::Vec3 tanu = bx::load<bx::Vec3>(&tangents[ii*6]); + const bx::Vec3 tanv = bx::load<bx::Vec3>(&tangents[ii*6 + 3]); - float normal[4]; - bgfx::vertexUnpack(normal, bgfx::Attrib::Normal, _decl, _vertices, ii); - float ndt = bx::vec3Dot(normal, tanu); + float nxyzw[4]; + bgfx::vertexUnpack(nxyzw, bgfx::Attrib::Normal, _layout, _vertices, ii); - float nxt[3]; - bx::vec3Cross(nxt, normal, tanu); - - float tmp[3]; - tmp[0] = tanu[0] - normal[0] * ndt; - tmp[1] = tanu[1] - normal[1] * ndt; - tmp[2] = tanu[2] - normal[2] * ndt; + const bx::Vec3 normal = bx::load<bx::Vec3>(nxyzw); + const float ndt = bx::dot(normal, tanu); + const bx::Vec3 nxt = bx::cross(normal, tanu); + const bx::Vec3 tmp = bx::sub(tanu, bx::mul(normal, ndt) ); float tangent[4]; - bx::vec3Norm(tangent, tmp); + bx::store(tangent, bx::normalize(tmp) ); + tangent[3] = bx::dot(nxt, tanv) < 0.0f ? -1.0f : 1.0f; - tangent[3] = bx::vec3Dot(nxt, tanv) < 0.0f ? -1.0f : 1.0f; - bgfx::vertexPack(tangent, true, bgfx::Attrib::Tangent, _decl, _vertices, ii); + bgfx::vertexPack(tangent, true, bgfx::Attrib::Tangent, _layout, _vertices, ii); } delete [] tangents; } -struct Aabb +Group::Group() { - float m_min[3]; - float m_max[3]; -}; + reset(); +} -struct Obb +void Group::reset() { - float m_mtx[16]; -}; + m_vbh.idx = bgfx::kInvalidHandle; + m_ibh.idx = bgfx::kInvalidHandle; + m_numVertices = 0; + m_vertices = NULL; + m_numIndices = 0; + m_indices = NULL; + m_prims.clear(); +} -struct Sphere +namespace bgfx { - float m_center[3]; - float m_radius; -}; + int32_t read(bx::ReaderI* _reader, bgfx::VertexLayout& _layout, bx::Error* _err); +} -struct Primitive +void Mesh::load(bx::ReaderSeekerI* _reader, bool _ramcopy) { - uint32_t m_startIndex; - uint32_t m_numIndices; - uint32_t m_startVertex; - uint32_t m_numVertices; + constexpr uint32_t kChunkVertexBuffer = BX_MAKEFOURCC('V', 'B', ' ', 0x1); + constexpr uint32_t kChunkVertexBufferCompressed = BX_MAKEFOURCC('V', 'B', 'C', 0x0); + constexpr uint32_t kChunkIndexBuffer = BX_MAKEFOURCC('I', 'B', ' ', 0x0); + constexpr uint32_t kChunkIndexBufferCompressed = BX_MAKEFOURCC('I', 'B', 'C', 0x1); + constexpr uint32_t kChunkPrimitive = BX_MAKEFOURCC('P', 'R', 'I', 0x0); - Sphere m_sphere; - Aabb m_aabb; - Obb m_obb; -}; + using namespace bx; + using namespace bgfx; -typedef stl::vector<Primitive> PrimitiveArray; + Group group; -struct Group -{ - Group() - { - reset(); - } + bx::AllocatorI* allocator = entry::getAllocator(); - void reset() + uint32_t chunk; + bx::Error err; + while (4 == bx::read(_reader, chunk, &err) + && err.isOk() ) { - m_vbh.idx = bgfx::kInvalidHandle; - m_ibh.idx = bgfx::kInvalidHandle; - m_prims.clear(); - } + switch (chunk) + { + case kChunkVertexBuffer: + { + read(_reader, group.m_sphere, &err); + read(_reader, group.m_aabb, &err); + read(_reader, group.m_obb, &err); - bgfx::VertexBufferHandle m_vbh; - bgfx::IndexBufferHandle m_ibh; - Sphere m_sphere; - Aabb m_aabb; - Obb m_obb; - PrimitiveArray m_prims; -}; + read(_reader, m_layout, &err); -namespace bgfx -{ - int32_t read(bx::ReaderI* _reader, bgfx::VertexDecl& _decl, bx::Error* _err = NULL); -} - -struct Mesh -{ - void load(bx::ReaderSeekerI* _reader) - { -#define BGFX_CHUNK_MAGIC_VB BX_MAKEFOURCC('V', 'B', ' ', 0x1) -#define BGFX_CHUNK_MAGIC_IB BX_MAKEFOURCC('I', 'B', ' ', 0x0) -#define BGFX_CHUNK_MAGIC_IBC BX_MAKEFOURCC('I', 'B', 'C', 0x0) -#define BGFX_CHUNK_MAGIC_PRI BX_MAKEFOURCC('P', 'R', 'I', 0x0) + uint16_t stride = m_layout.getStride(); - using namespace bx; - using namespace bgfx; + read(_reader, group.m_numVertices, &err); + const bgfx::Memory* mem = bgfx::alloc(group.m_numVertices*stride); + read(_reader, mem->data, mem->size, &err); - Group group; + if (_ramcopy) + { + group.m_vertices = (uint8_t*)BX_ALLOC(allocator, group.m_numVertices*stride); + bx::memCopy(group.m_vertices, mem->data, mem->size); + } - bx::AllocatorI* allocator = entry::getAllocator(); + group.m_vbh = bgfx::createVertexBuffer(mem, m_layout); + } + break; - uint32_t chunk; - bx::Error err; - while (4 == bx::read(_reader, chunk, &err) - && err.isOk() ) - { - switch (chunk) + case kChunkVertexBufferCompressed: { - case BGFX_CHUNK_MAGIC_VB: - { - read(_reader, group.m_sphere); - read(_reader, group.m_aabb); - read(_reader, group.m_obb); + read(_reader, group.m_sphere, &err); + read(_reader, group.m_aabb, &err); + read(_reader, group.m_obb, &err); + + read(_reader, m_layout, &err); + + uint16_t stride = m_layout.getStride(); + + read(_reader, group.m_numVertices, &err); + + const bgfx::Memory* mem = bgfx::alloc(group.m_numVertices*stride); + + uint32_t compressedSize; + bx::read(_reader, compressedSize, &err); - read(_reader, m_decl); + void* compressedVertices = BX_ALLOC(allocator, compressedSize); + bx::read(_reader, compressedVertices, compressedSize, &err); - uint16_t stride = m_decl.getStride(); + meshopt_decodeVertexBuffer(mem->data, group.m_numVertices, stride, (uint8_t*)compressedVertices, compressedSize); - uint16_t numVertices; - read(_reader, numVertices); - const bgfx::Memory* mem = bgfx::alloc(numVertices*stride); - read(_reader, mem->data, mem->size); + BX_FREE(allocator, compressedVertices); - group.m_vbh = bgfx::createVertexBuffer(mem, m_decl); + if (_ramcopy) + { + group.m_vertices = (uint8_t*)BX_ALLOC(allocator, group.m_numVertices*stride); + bx::memCopy(group.m_vertices, mem->data, mem->size); } + + group.m_vbh = bgfx::createVertexBuffer(mem, m_layout); + } break; - case BGFX_CHUNK_MAGIC_IB: + case kChunkIndexBuffer: + { + read(_reader, group.m_numIndices, &err); + + const bgfx::Memory* mem = bgfx::alloc(group.m_numIndices*2); + read(_reader, mem->data, mem->size, &err); + + if (_ramcopy) { - uint32_t numIndices; - read(_reader, numIndices); - const bgfx::Memory* mem = bgfx::alloc(numIndices*2); - read(_reader, mem->data, mem->size); - group.m_ibh = bgfx::createIndexBuffer(mem); + group.m_indices = (uint16_t*)BX_ALLOC(allocator, group.m_numIndices*2); + bx::memCopy(group.m_indices, mem->data, mem->size); } + + group.m_ibh = bgfx::createIndexBuffer(mem); + } break; - case BGFX_CHUNK_MAGIC_IBC: - { - uint32_t numIndices; - bx::read(_reader, numIndices); + case kChunkIndexBufferCompressed: + { + bx::read(_reader, group.m_numIndices, &err); - const bgfx::Memory* mem = bgfx::alloc(numIndices*2); + const bgfx::Memory* mem = bgfx::alloc(group.m_numIndices*2); - uint32_t compressedSize; - bx::read(_reader, compressedSize); + uint32_t compressedSize; + bx::read(_reader, compressedSize, &err); - void* compressedIndices = BX_ALLOC(allocator, compressedSize); + void* compressedIndices = BX_ALLOC(allocator, compressedSize); - bx::read(_reader, compressedIndices, compressedSize); + bx::read(_reader, compressedIndices, compressedSize, &err); - ReadBitstream rbs( (const uint8_t*)compressedIndices, compressedSize); - DecompressIndexBuffer( (uint16_t*)mem->data, numIndices / 3, rbs); + meshopt_decodeIndexBuffer(mem->data, group.m_numIndices, 2, (uint8_t*)compressedIndices, compressedSize); - BX_FREE(allocator, compressedIndices); + BX_FREE(allocator, compressedIndices); - group.m_ibh = bgfx::createIndexBuffer(mem); + if (_ramcopy) + { + group.m_indices = (uint16_t*)BX_ALLOC(allocator, group.m_numIndices*2); + bx::memCopy(group.m_indices, mem->data, mem->size); } + + group.m_ibh = bgfx::createIndexBuffer(mem); + } break; - case BGFX_CHUNK_MAGIC_PRI: + case kChunkPrimitive: + { + uint16_t len; + read(_reader, len, &err); + + stl::string material; + material.resize(len); + read(_reader, const_cast<char*>(material.c_str() ), len, &err); + + uint16_t num; + read(_reader, num, &err); + + for (uint32_t ii = 0; ii < num; ++ii) { - uint16_t len; - read(_reader, len); - - stl::string material; - material.resize(len); - read(_reader, const_cast<char*>(material.c_str() ), len); - - uint16_t num; - read(_reader, num); - - for (uint32_t ii = 0; ii < num; ++ii) - { - read(_reader, len); - - stl::string name; - name.resize(len); - read(_reader, const_cast<char*>(name.c_str() ), len); - - Primitive prim; - read(_reader, prim.m_startIndex); - read(_reader, prim.m_numIndices); - read(_reader, prim.m_startVertex); - read(_reader, prim.m_numVertices); - read(_reader, prim.m_sphere); - read(_reader, prim.m_aabb); - read(_reader, prim.m_obb); - - group.m_prims.push_back(prim); - } - - m_groups.push_back(group); - group.reset(); + read(_reader, len, &err); + + stl::string name; + name.resize(len); + read(_reader, const_cast<char*>(name.c_str() ), len, &err); + + Primitive prim; + read(_reader, prim.m_startIndex, &err); + read(_reader, prim.m_numIndices, &err); + read(_reader, prim.m_startVertex, &err); + read(_reader, prim.m_numVertices, &err); + read(_reader, prim.m_sphere, &err); + read(_reader, prim.m_aabb, &err); + read(_reader, prim.m_obb, &err); + + group.m_prims.push_back(prim); } + + m_groups.push_back(group); + group.reset(); + } break; default: DBG("%08x at %d", chunk, bx::skip(_reader, 0) ); break; - } } } +} - void unload() +void Mesh::unload() +{ + bx::AllocatorI* allocator = entry::getAllocator(); + + for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) { - for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) - { - const Group& group = *it; - bgfx::destroy(group.m_vbh); + const Group& group = *it; + bgfx::destroy(group.m_vbh); - if (bgfx::isValid(group.m_ibh) ) - { - bgfx::destroy(group.m_ibh); - } + if (bgfx::isValid(group.m_ibh) ) + { + bgfx::destroy(group.m_ibh); } - m_groups.clear(); - } - void submit(bgfx::ViewId _id, bgfx::ProgramHandle _program, const float* _mtx, uint64_t _state) const - { - if (BGFX_STATE_MASK == _state) + if (NULL != group.m_vertices) { - _state = 0 - | BGFX_STATE_WRITE_RGB - | BGFX_STATE_WRITE_A - | BGFX_STATE_WRITE_Z - | BGFX_STATE_DEPTH_TEST_LESS - | BGFX_STATE_CULL_CCW - | BGFX_STATE_MSAA - ; + BX_FREE(allocator, group.m_vertices); } - bgfx::setTransform(_mtx); - bgfx::setState(_state); - - for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) + if (NULL != group.m_indices) { - const Group& group = *it; - - bgfx::setIndexBuffer(group.m_ibh); - bgfx::setVertexBuffer(0, group.m_vbh); - bgfx::submit(_id, _program, 0, it != itEnd-1); + BX_FREE(allocator, group.m_indices); } } + m_groups.clear(); +} - void submit(const MeshState*const* _state, uint8_t _numPasses, const float* _mtx, uint16_t _numMatrices) const +void Mesh::submit(bgfx::ViewId _id, bgfx::ProgramHandle _program, const float* _mtx, uint64_t _state) const +{ + if (BGFX_STATE_MASK == _state) { - uint32_t cached = bgfx::setTransform(_mtx, _numMatrices); + _state = 0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_WRITE_A + | BGFX_STATE_WRITE_Z + | BGFX_STATE_DEPTH_TEST_LESS + | BGFX_STATE_CULL_CCW + | BGFX_STATE_MSAA + ; + } - for (uint32_t pass = 0; pass < _numPasses; ++pass) - { - bgfx::setTransform(cached, _numMatrices); + bgfx::setTransform(_mtx); + bgfx::setState(_state); - const MeshState& state = *_state[pass]; - bgfx::setState(state.m_state); + for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) + { + const Group& group = *it; + + bgfx::setIndexBuffer(group.m_ibh); + bgfx::setVertexBuffer(0, group.m_vbh); + bgfx::submit( + _id + , _program + , 0 + , BGFX_DISCARD_INDEX_BUFFER + | BGFX_DISCARD_VERTEX_STREAMS + ); + } - for (uint8_t tex = 0; tex < state.m_numTextures; ++tex) - { - const MeshState::Texture& texture = state.m_textures[tex]; - bgfx::setTexture(texture.m_stage - , texture.m_sampler - , texture.m_texture - , texture.m_flags - ); - } + bgfx::discard(); +} - for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) - { - const Group& group = *it; +void Mesh::submit(const MeshState*const* _state, uint8_t _numPasses, const float* _mtx, uint16_t _numMatrices) const +{ + uint32_t cached = bgfx::setTransform(_mtx, _numMatrices); - bgfx::setIndexBuffer(group.m_ibh); - bgfx::setVertexBuffer(0, group.m_vbh); - bgfx::submit(state.m_viewId, state.m_program, 0, it != itEnd-1); - } + for (uint32_t pass = 0; pass < _numPasses; ++pass) + { + bgfx::setTransform(cached, _numMatrices); + + const MeshState& state = *_state[pass]; + bgfx::setState(state.m_state); + + for (uint8_t tex = 0; tex < state.m_numTextures; ++tex) + { + const MeshState::Texture& texture = state.m_textures[tex]; + bgfx::setTexture( + texture.m_stage + , texture.m_sampler + , texture.m_texture + , texture.m_flags + ); + } + + for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) + { + const Group& group = *it; + + bgfx::setIndexBuffer(group.m_ibh); + bgfx::setVertexBuffer(0, group.m_vbh); + bgfx::submit( + state.m_viewId + , state.m_program + , 0 + , BGFX_DISCARD_INDEX_BUFFER + | BGFX_DISCARD_VERTEX_STREAMS + ); } + + bgfx::discard(0 + | BGFX_DISCARD_BINDINGS + | BGFX_DISCARD_STATE + | BGFX_DISCARD_TRANSFORM + ); } - bgfx::VertexDecl m_decl; - typedef stl::vector<Group> GroupArray; - GroupArray m_groups; -}; + bgfx::discard(); +} -Mesh* meshLoad(bx::ReaderSeekerI* _reader) +Mesh* meshLoad(bx::ReaderSeekerI* _reader, bool _ramcopy) { Mesh* mesh = new Mesh; - mesh->load(_reader); + mesh->load(_reader, _ramcopy); return mesh; } -Mesh* meshLoad(const char* _filePath) +Mesh* meshLoad(const char* _filePath, bool _ramcopy) { bx::FileReaderI* reader = entry::getFileReader(); if (bx::open(reader, _filePath) ) { - Mesh* mesh = meshLoad(reader); + Mesh* mesh = meshLoad(reader, _ramcopy); bx::close(reader); return mesh; } @@ -661,6 +702,53 @@ void meshSubmit(const Mesh* _mesh, const MeshState*const* _state, uint8_t _numPa _mesh->submit(_state, _numPasses, _mtx, _numMatrices); } +struct RendererTypeRemap +{ + bx::StringView name; + bgfx::RendererType::Enum type; +}; + +static RendererTypeRemap s_rendererTypeRemap[] = +{ + { "d3d11", bgfx::RendererType::Direct3D11 }, + { "d3d12", bgfx::RendererType::Direct3D12 }, + { "d3d9", bgfx::RendererType::Direct3D9 }, + { "gl", bgfx::RendererType::OpenGL }, + { "mtl", bgfx::RendererType::Metal }, + { "noop", bgfx::RendererType::Noop }, + { "vk", bgfx::RendererType::Vulkan }, +}; + +bx::StringView getName(bgfx::RendererType::Enum _type) +{ + for (uint32_t ii = 0; ii < BX_COUNTOF(s_rendererTypeRemap); ++ii) + { + const RendererTypeRemap& remap = s_rendererTypeRemap[ii]; + + if (_type == remap.type) + { + return remap.name; + } + } + + return ""; +} + +bgfx::RendererType::Enum getType(const bx::StringView& _name) +{ + for (uint32_t ii = 0; ii < BX_COUNTOF(s_rendererTypeRemap); ++ii) + { + const RendererTypeRemap& remap = s_rendererTypeRemap[ii]; + + if (0 == bx::strCmpI(_name, remap.name) ) + { + return remap.type; + } + } + + return bgfx::RendererType::Count; +} + Args::Args(int _argc, const char* const* _argv) : m_type(bgfx::RendererType::Count) , m_pciId(BGFX_PCI_ID_NONE) @@ -679,20 +767,17 @@ Args::Args(int _argc, const char* const* _argv) { m_type = bgfx::RendererType::Noop; } - else if (BX_ENABLED(BX_PLATFORM_WINDOWS|BX_PLATFORM_WINRT|BX_PLATFORM_XBOXONE) ) + if (cmdLine.hasArg("d3d9") ) { - if (cmdLine.hasArg("d3d9") ) - { - m_type = bgfx::RendererType::Direct3D9; - } - else if (cmdLine.hasArg("d3d11") ) - { - m_type = bgfx::RendererType::Direct3D11; - } - else if (cmdLine.hasArg("d3d12") ) - { - m_type = bgfx::RendererType::Direct3D12; - } + m_type = bgfx::RendererType::Direct3D9; + } + else if (cmdLine.hasArg("d3d11") ) + { + m_type = bgfx::RendererType::Direct3D11; + } + else if (cmdLine.hasArg("d3d12") ) + { + m_type = bgfx::RendererType::Direct3D12; } else if (BX_ENABLED(BX_PLATFORM_OSX) ) { diff --git a/3rdparty/bgfx/examples/common/bgfx_utils.h b/3rdparty/bgfx/examples/common/bgfx_utils.h index 87799f2e2c4..7146293f38c 100644 --- a/3rdparty/bgfx/examples/common/bgfx_utils.h +++ b/3rdparty/bgfx/examples/common/bgfx_utils.h @@ -1,15 +1,22 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef BGFX_UTILS_H_HEADER_GUARD #define BGFX_UTILS_H_HEADER_GUARD +#include <bx/bounds.h> #include <bx/pixelformat.h> +#include <bx/string.h> #include <bgfx/bgfx.h> #include <bimg/bimg.h> +#include <tinystl/allocator.h> +#include <tinystl/vector.h> +namespace stl = tinystl; + + /// void* load(const char* _filePath, uint32_t* _size = NULL); @@ -23,24 +30,24 @@ bgfx::ShaderHandle loadShader(const char* _name); bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName); /// -bgfx::TextureHandle loadTexture(const char* _name, uint32_t _flags = BGFX_SAMPLER_NONE, uint8_t _skip = 0, bgfx::TextureInfo* _info = NULL, bimg::Orientation::Enum* _orientation = NULL); +bgfx::TextureHandle loadTexture(const char* _name, uint64_t _flags = BGFX_TEXTURE_NONE|BGFX_SAMPLER_NONE, uint8_t _skip = 0, bgfx::TextureInfo* _info = NULL, bimg::Orientation::Enum* _orientation = NULL); /// bimg::ImageContainer* imageLoad(const char* _filePath, bgfx::TextureFormat::Enum _dstFormat); /// -void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices); +void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexLayout _layout, const uint16_t* _indices, uint32_t _numIndices); /// Returns true if both internal transient index and vertex buffer have /// enough space. /// /// @param[in] _numVertices Number of vertices. -/// @param[in] _decl Vertex declaration. +/// @param[in] _layout Vertex layout. /// @param[in] _numIndices Number of indices. /// -inline bool checkAvailTransientBuffers(uint32_t _numVertices, const bgfx::VertexDecl& _decl, uint32_t _numIndices) +inline bool checkAvailTransientBuffers(uint32_t _numVertices, const bgfx::VertexLayout& _layout, uint32_t _numIndices) { - return _numVertices == bgfx::getAvailTransientVertexBuffer(_numVertices, _decl) + return _numVertices == bgfx::getAvailTransientVertexBuffer(_numVertices, _layout) && (0 == _numIndices || _numIndices == bgfx::getAvailTransientIndexBuffer(_numIndices) ) ; } @@ -78,10 +85,51 @@ struct MeshState bgfx::ViewId m_viewId; }; -struct Mesh; +struct Primitive +{ + uint32_t m_startIndex; + uint32_t m_numIndices; + uint32_t m_startVertex; + uint32_t m_numVertices; + + bx::Sphere m_sphere; + bx::Aabb m_aabb; + bx::Obb m_obb; +}; + +typedef stl::vector<Primitive> PrimitiveArray; + +struct Group +{ + Group(); + void reset(); + + bgfx::VertexBufferHandle m_vbh; + bgfx::IndexBufferHandle m_ibh; + uint16_t m_numVertices; + uint8_t* m_vertices; + uint32_t m_numIndices; + uint16_t* m_indices; + bx::Sphere m_sphere; + bx::Aabb m_aabb; + bx::Obb m_obb; + PrimitiveArray m_prims; +}; +typedef stl::vector<Group> GroupArray; + +struct Mesh +{ + void load(bx::ReaderSeekerI* _reader, bool _ramcopy); + void unload(); + void submit(bgfx::ViewId _id, bgfx::ProgramHandle _program, const float* _mtx, uint64_t _state) const; + void submit(const MeshState*const* _state, uint8_t _numPasses, const float* _mtx, uint16_t _numMatrices) const; + + bgfx::VertexLayout m_layout; + GroupArray m_groups; +}; /// -Mesh* meshLoad(const char* _filePath); +Mesh* meshLoad(const char* _filePath, bool _ramcopy = false); /// void meshUnload(Mesh* _mesh); @@ -98,6 +146,12 @@ void meshSubmit(const Mesh* _mesh, bgfx::ViewId _id, bgfx::ProgramHandle _progra /// void meshSubmit(const Mesh* _mesh, const MeshState*const* _state, uint8_t _numPasses, const float* _mtx, uint16_t _numMatrices = 1); +/// bgfx::RendererType::Enum to name. +bx::StringView getName(bgfx::RendererType::Enum _type); + +/// Name to bgfx::RendererType::Enum. +bgfx::RendererType::Enum getType(const bx::StringView& _name); + /// struct Args { diff --git a/3rdparty/bgfx/examples/common/bounds.cpp b/3rdparty/bgfx/examples/common/bounds.cpp deleted file mode 100644 index 2d73dfcb973..00000000000 --- a/3rdparty/bgfx/examples/common/bounds.cpp +++ /dev/null @@ -1,857 +0,0 @@ -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bx/rng.h> -#include <bx/math.h> -#include "bounds.h" - -void aabbToObb(Obb& _obb, const Aabb& _aabb) -{ - bx::memSet(_obb.m_mtx, 0, sizeof(_obb.m_mtx) ); - _obb.m_mtx[ 0] = (_aabb.m_max.x - _aabb.m_min.x) * 0.5f; - _obb.m_mtx[ 5] = (_aabb.m_max.y - _aabb.m_min.y) * 0.5f; - _obb.m_mtx[10] = (_aabb.m_max.z - _aabb.m_min.z) * 0.5f; - _obb.m_mtx[12] = (_aabb.m_min.x + _aabb.m_max.x) * 0.5f; - _obb.m_mtx[13] = (_aabb.m_min.y + _aabb.m_max.y) * 0.5f; - _obb.m_mtx[14] = (_aabb.m_min.z + _aabb.m_max.z) * 0.5f; - _obb.m_mtx[15] = 1.0f; -} - -void toAabb(Aabb& _aabb, const Obb& _obb) -{ - bx::Vec3 xyz = { 1.0f, 1.0f, 1.0f }; - bx::Vec3 tmp = bx::mul(xyz, _obb.m_mtx); - - _aabb.m_min = tmp; - _aabb.m_max = tmp; - - for (uint32_t ii = 1; ii < 8; ++ii) - { - xyz.x = ii & 1 ? -1.0f : 1.0f; - xyz.y = ii & 2 ? -1.0f : 1.0f; - xyz.z = ii & 4 ? -1.0f : 1.0f; - tmp = bx::mul(xyz, _obb.m_mtx); - - _aabb.m_min = bx::min(_aabb.m_min, tmp); - _aabb.m_max = bx::max(_aabb.m_max, tmp); - } -} - -void toAabb(Aabb& _aabb, const Sphere& _sphere) -{ - const float radius = _sphere.m_radius; - _aabb.m_min = bx::sub(_sphere.m_center, radius); - _aabb.m_max = bx::add(_sphere.m_center, radius); -} - -void toAabb(Aabb& _aabb, const Disk& _disk) -{ - // Reference(s): - // - https://web.archive.org/web/20181113055756/http://iquilezles.org/www/articles/diskbbox/diskbbox.htm - // - const bx::Vec3 nsq = bx::mul(_disk.m_normal, _disk.m_normal); - const bx::Vec3 one = { 1.0f, 1.0f, 1.0f }; - const bx::Vec3 tmp = bx::sub(one, nsq); - const float inv = 1.0f / (tmp.x*tmp.y*tmp.z); - - const bx::Vec3 extent = - { - _disk.m_radius * tmp.x * bx::sqrt((nsq.x + nsq.y * nsq.z) * inv), - _disk.m_radius * tmp.y * bx::sqrt((nsq.y + nsq.z * nsq.x) * inv), - _disk.m_radius * tmp.z * bx::sqrt((nsq.z + nsq.x * nsq.y) * inv), - }; - - _aabb.m_min = bx::sub(_disk.m_center, extent); - _aabb.m_max = bx::add(_disk.m_center, extent); -} - -void toAabb(Aabb& _aabb, const Cylinder& _cylinder) -{ - // Reference(s): - // - https://web.archive.org/web/20181113055756/http://iquilezles.org/www/articles/diskbbox/diskbbox.htm - // - const bx::Vec3 axis = bx::sub(_cylinder.m_end, _cylinder.m_pos); - const bx::Vec3 asq = bx::mul(axis, axis); - const bx::Vec3 nsq = bx::mul(asq, 1.0f/bx::dot(axis, axis) ); - const bx::Vec3 one = { 1.0f, 1.0f, 1.0f }; - const bx::Vec3 tmp = bx::sub(one, nsq); - - const float inv = 1.0f / (tmp.x*tmp.y*tmp.z); - - const bx::Vec3 extent = - { - _cylinder.m_radius * tmp.x * bx::sqrt( (nsq.x + nsq.y * nsq.z) * inv), - _cylinder.m_radius * tmp.y * bx::sqrt( (nsq.y + nsq.z * nsq.x) * inv), - _cylinder.m_radius * tmp.z * bx::sqrt( (nsq.z + nsq.x * nsq.y) * inv), - }; - - const bx::Vec3 minP = bx::sub(_cylinder.m_pos, extent); - const bx::Vec3 minE = bx::sub(_cylinder.m_end, extent); - const bx::Vec3 maxP = bx::add(_cylinder.m_pos, extent); - const bx::Vec3 maxE = bx::add(_cylinder.m_end, extent); - - _aabb.m_min = bx::min(minP, minE); - _aabb.m_max = bx::max(maxP, maxE); -} - -void aabbTransformToObb(Obb& _obb, const Aabb& _aabb, const float* _mtx) -{ - aabbToObb(_obb, _aabb); - float result[16]; - bx::mtxMul(result, _obb.m_mtx, _mtx); - bx::memCopy(_obb.m_mtx, result, sizeof(result) ); -} - -void toAabb(Aabb& _aabb, const void* _vertices, uint32_t _numVertices, uint32_t _stride) -{ - bx::Vec3 min, max; - uint8_t* vertex = (uint8_t*)_vertices; - float* position = (float*)vertex; - min.x = max.x = position[0]; - min.y = max.y = position[1]; - min.z = max.z = position[2]; - vertex += _stride; - - for (uint32_t ii = 1; ii < _numVertices; ++ii) - { - position = (float*)vertex; - vertex += _stride; - - bx::Vec3 pos = - { - position[0], - position[1], - position[2], - }; - min = bx::min(pos, min); - max = bx::max(pos, max); - } - - _aabb.m_min = min; - _aabb.m_max = max; -} - -void toAabb(Aabb& _aabb, const float* _mtx, const void* _vertices, uint32_t _numVertices, uint32_t _stride) -{ - bx::Vec3 min, max; - uint8_t* vertex = (uint8_t*)_vertices; - - float position[3]; - bx::vec3MulMtx(position, (float*)vertex, _mtx); - min.x = max.x = position[0]; - min.y = max.y = position[1]; - min.z = max.z = position[2]; - vertex += _stride; - - for (uint32_t ii = 1; ii < _numVertices; ++ii) - { - bx::vec3MulMtx(position, (float*)vertex, _mtx); - vertex += _stride; - - bx::Vec3 pos = - { - position[0], - position[1], - position[2], - }; - min = bx::min(pos, min); - max = bx::max(pos, max); - } - - _aabb.m_min = min; - _aabb.m_max = max; -} - -float calcAreaAabb(const Aabb& _aabb) -{ - const float ww = _aabb.m_max.x - _aabb.m_min.x; - const float hh = _aabb.m_max.y - _aabb.m_min.y; - const float dd = _aabb.m_max.z - _aabb.m_min.z; - return 2.0f * (ww*hh + ww*dd + hh*dd); -} - -void aabbExpand(Aabb& _aabb, float _factor) -{ - _aabb.m_min.x -= _factor; - _aabb.m_min.y -= _factor; - _aabb.m_min.z -= _factor; - _aabb.m_max.x += _factor; - _aabb.m_max.y += _factor; - _aabb.m_max.z += _factor; -} - -void aabbExpand(Aabb& _aabb, const float* _pos) -{ - const bx::Vec3 pos = { _pos[0], _pos[1], _pos[2] }; - _aabb.m_min = bx::min(_aabb.m_min, pos); - _aabb.m_max = bx::max(_aabb.m_max, pos); -} - -uint32_t aabbOverlapTest(const Aabb& _aabb0, const Aabb& _aabb1) -{ - const uint32_t ltMinX = _aabb0.m_max.x < _aabb1.m_min.x; - const uint32_t gtMaxX = _aabb0.m_min.x > _aabb1.m_max.x; - const uint32_t ltMinY = _aabb0.m_max.y < _aabb1.m_min.y; - const uint32_t gtMaxY = _aabb0.m_min.y > _aabb1.m_max.y; - const uint32_t ltMinZ = _aabb0.m_max.z < _aabb1.m_min.z; - const uint32_t gtMaxZ = _aabb0.m_min.z > _aabb1.m_max.z; - - return 0 - | (ltMinX<<0) - | (gtMaxX<<1) - | (ltMinY<<2) - | (gtMaxY<<3) - | (ltMinZ<<4) - | (gtMaxZ<<5) - ; -} - -void calcObb(Obb& _obb, const void* _vertices, uint32_t _numVertices, uint32_t _stride, uint32_t _steps) -{ - Aabb aabb; - toAabb(aabb, _vertices, _numVertices, _stride); - float minArea = calcAreaAabb(aabb); - - Obb best; - aabbToObb(best, aabb); - - float angleStep = float(bx::kPiHalf/_steps); - float ax = 0.0f; - float mtx[16]; - - for (uint32_t ii = 0; ii < _steps; ++ii) - { - float ay = 0.0f; - - for (uint32_t jj = 0; jj < _steps; ++jj) - { - float az = 0.0f; - - for (uint32_t kk = 0; kk < _steps; ++kk) - { - bx::mtxRotateXYZ(mtx, ax, ay, az); - - float mtxT[16]; - bx::mtxTranspose(mtxT, mtx); - toAabb(aabb, mtxT, _vertices, _numVertices, _stride); - - float area = calcAreaAabb(aabb); - if (area < minArea) - { - minArea = area; - aabbTransformToObb(best, aabb, mtx); - } - - az += angleStep; - } - - ay += angleStep; - } - - ax += angleStep; - } - - bx::memCopy(&_obb, &best, sizeof(Obb) ); -} - -void calcMaxBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _numVertices, uint32_t _stride) -{ - Aabb aabb; - toAabb(aabb, _vertices, _numVertices, _stride); - - bx::Vec3 center = - { - (aabb.m_min.x + aabb.m_max.x) * 0.5f, - (aabb.m_min.y + aabb.m_max.y) * 0.5f, - (aabb.m_min.z + aabb.m_max.z) * 0.5f, - }; - - float maxDistSq = 0.0f; - uint8_t* vertex = (uint8_t*)_vertices; - - for (uint32_t ii = 0; ii < _numVertices; ++ii) - { - float* position = (float*)vertex; - vertex += _stride; - - const float xx = position[0] - center.x; - const float yy = position[1] - center.y; - const float zz = position[2] - center.z; - const float distSq = xx*xx + yy*yy + zz*zz; - maxDistSq = bx::max(distSq, maxDistSq); - } - - _sphere.m_center = center; - _sphere.m_radius = bx::sqrt(maxDistSq); -} - -void calcMinBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _numVertices, uint32_t _stride, float _step) -{ - bx::RngMwc rng; - - uint8_t* vertex = (uint8_t*)_vertices; - - bx::Vec3 center; - float* position = (float*)&vertex[0]; - center.x = position[0]; - center.y = position[1]; - center.z = position[2]; - - position = (float*)&vertex[1*_stride]; - center.x += position[0]; - center.y += position[1]; - center.z += position[2]; - - center.x *= 0.5f; - center.y *= 0.5f; - center.z *= 0.5f; - - float xx = position[0] - center.x; - float yy = position[1] - center.y; - float zz = position[2] - center.z; - float maxDistSq = xx*xx + yy*yy + zz*zz; - - float radiusStep = _step * 0.37f; - - bool done; - do - { - done = true; - for (uint32_t ii = 0, index = rng.gen()%_numVertices; ii < _numVertices; ++ii, index = (index + 1)%_numVertices) - { - position = (float*)&vertex[index*_stride]; - - xx = position[0] - center.x; - yy = position[1] - center.y; - zz = position[2] - center.z; - float distSq = xx*xx + yy*yy + zz*zz; - - if (distSq > maxDistSq) - { - done = false; - - center.x += xx * radiusStep; - center.y += yy * radiusStep; - center.z += zz * radiusStep; - maxDistSq = bx::lerp(maxDistSq, distSq, _step); - - break; - } - } - - } while (!done); - - _sphere.m_center = center; - _sphere.m_radius = bx::sqrt(maxDistSq); -} - -void calcPlaneUv(const Plane& _plane, bx::Vec3& _udir, bx::Vec3& _vdir) -{ - bx::calcTangentFrame(_udir, _vdir, _plane.m_normal); -} - -void buildFrustumPlanes(Plane* _result, const float* _viewProj) -{ - const float xw = _viewProj[ 3]; - const float yw = _viewProj[ 7]; - const float zw = _viewProj[11]; - const float ww = _viewProj[15]; - - const float xz = _viewProj[ 2]; - const float yz = _viewProj[ 6]; - const float zz = _viewProj[10]; - const float wz = _viewProj[14]; - - Plane& near = _result[0]; - Plane& far = _result[1]; - Plane& left = _result[2]; - Plane& right = _result[3]; - Plane& top = _result[4]; - Plane& bottom = _result[5]; - - near.m_normal.x = xw - xz; - near.m_normal.y = yw - yz; - near.m_normal.z = zw - zz; - near.m_dist = ww - wz; - - far.m_normal.x = xw + xz; - far.m_normal.y = yw + yz; - far.m_normal.z = zw + zz; - far.m_dist = ww + wz; - - const float xx = _viewProj[ 0]; - const float yx = _viewProj[ 4]; - const float zx = _viewProj[ 8]; - const float wx = _viewProj[12]; - - left.m_normal.x = xw - xx; - left.m_normal.y = yw - yx; - left.m_normal.z = zw - zx; - left.m_dist = ww - wx; - - right.m_normal.x = xw + xx; - right.m_normal.y = yw + yx; - right.m_normal.z = zw + zx; - right.m_dist = ww + wx; - - const float xy = _viewProj[ 1]; - const float yy = _viewProj[ 5]; - const float zy = _viewProj[ 9]; - const float wy = _viewProj[13]; - - top.m_normal.x = xw + xy; - top.m_normal.y = yw + yy; - top.m_normal.z = zw + zy; - top.m_dist = ww + wy; - - bottom.m_normal.x = xw - xy; - bottom.m_normal.y = yw - yy; - bottom.m_normal.z = zw - zy; - bottom.m_dist = ww - wy; - - Plane* plane = _result; - for (uint32_t ii = 0; ii < 6; ++ii) - { - const float len = bx::length(plane->m_normal); - plane->m_normal = bx::normalize(plane->m_normal); - float invLen = 1.0f / len; - plane->m_dist *= invLen; - ++plane; - } -} - -bx::Vec3 intersectPlanes(const Plane& _pa, const Plane& _pb, const Plane& _pc) -{ - const bx::Vec3 axb = bx::cross(_pa.m_normal, _pb.m_normal); - const bx::Vec3 bxc = bx::cross(_pb.m_normal, _pc.m_normal); - const bx::Vec3 cxa = bx::cross(_pc.m_normal, _pa.m_normal); - const bx::Vec3 tmp0 = bx::mul(bxc, _pa.m_dist); - const bx::Vec3 tmp1 = bx::mul(cxa, _pb.m_dist); - const bx::Vec3 tmp2 = bx::mul(axb, _pc.m_dist); - const bx::Vec3 tmp3 = bx::add(tmp0, tmp1); - const bx::Vec3 tmp4 = bx::add(tmp3, tmp2); - - const float denom = bx::dot(_pa.m_normal, bxc); - const bx::Vec3 result = bx::mul(tmp4, -1.0f/denom); - - return result; -} - -Ray makeRay(float _x, float _y, const float* _invVp) -{ - Ray ray; - - const bx::Vec3 near = { _x, _y, 0.0f }; - ray.m_pos = bx::mulH(near, _invVp); - - const bx::Vec3 far = { _x, _y, 1.0f }; - bx::Vec3 tmp = bx::mulH(far, _invVp); - - const bx::Vec3 dir = bx::sub(tmp, ray.m_pos); - ray.m_dir = bx::normalize(dir); - - return ray; -} - -inline bx::Vec3 getPointAt(const Ray& _ray, float _t) -{ - return bx::add(bx::mul(_ray.m_dir, _t), _ray.m_pos); -} - -bool intersect(const Ray& _ray, const Aabb& _aabb, Hit* _hit) -{ - const bx::Vec3 invDir = bx::rcp(_ray.m_dir); - const bx::Vec3 tmp0 = bx::sub(_aabb.m_min, _ray.m_pos); - const bx::Vec3 t0 = bx::mul(tmp0, invDir); - const bx::Vec3 tmp1 = bx::sub(_aabb.m_max, _ray.m_pos); - const bx::Vec3 t1 = bx::mul(tmp1, invDir); - - const bx::Vec3 min = bx::min(t0, t1); - const bx::Vec3 max = bx::max(t0, t1); - - const float tmin = bx::max(min.x, min.y, min.z); - const float tmax = bx::min(max.x, max.y, max.z); - - if (tmax < 0.0f - || tmin > tmax) - { - return false; - } - - if (NULL != _hit) - { - _hit->m_normal.x = float( (t1.x == tmin) - (t0.x == tmin) ); - _hit->m_normal.y = float( (t1.y == tmin) - (t0.y == tmin) ); - _hit->m_normal.z = float( (t1.z == tmin) - (t0.z == tmin) ); - - _hit->m_dist = tmin; - _hit->m_pos = getPointAt(_ray, tmin); - } - - return true; -} - -static const Aabb s_kUnitAabb = -{ - { -1.0f, -1.0f, -1.0f }, - { 1.0f, 1.0f, 1.0f }, -}; - -bool intersect(const Ray& _ray, const Obb& _obb, Hit* _hit) -{ - Aabb aabb; - toAabb(aabb, _obb); - - if (!intersect(_ray, aabb) ) - { - return false; - } - - float mtxInv[16]; - bx::mtxInverse(mtxInv, _obb.m_mtx); - - Ray obbRay; - obbRay.m_pos = bx::mul(_ray.m_pos, mtxInv); - obbRay.m_dir = bx::mulXyz0(_ray.m_dir, mtxInv); - - if (intersect(obbRay, s_kUnitAabb, _hit) ) - { - if (NULL != _hit) - { - _hit->m_pos = bx::mul(_hit->m_pos, _obb.m_mtx); - - const bx::Vec3 tmp = bx::mulXyz0(_hit->m_normal, _obb.m_mtx); - _hit->m_normal = bx::normalize(tmp); - } - - return true; - } - - return false; -} - -bool intersect(const Ray& _ray, const Disk& _disk, Hit* _hit) -{ - Plane plane; - plane.m_normal = _disk.m_normal; - plane.m_dist = -bx::dot(_disk.m_center, _disk.m_normal); - - Hit tmpHit; - _hit = NULL != _hit ? _hit : &tmpHit; - - if (intersect(_ray, plane, _hit) ) - { - const bx::Vec3 tmp = bx::sub(_disk.m_center, _hit->m_pos); - return bx::dot(tmp, tmp) <= bx::square(_disk.m_radius); - } - - return false; -} - -static bool intersect(const Ray& _ray, const Cylinder& _cylinder, bool _capsule, Hit* _hit) -{ - bx::Vec3 axis = bx::sub(_cylinder.m_end, _cylinder.m_pos); - const bx::Vec3 rc = bx::sub(_ray.m_pos, _cylinder.m_pos); - const bx::Vec3 dxa = bx::cross(_ray.m_dir, axis); - - const float len = bx::length(dxa); - const bx::Vec3 normal = bx::normalize(dxa); - const float dist = bx::abs(bx::dot(rc, normal) ); - - if (dist > _cylinder.m_radius) - { - return false; - } - - bx::Vec3 vo = bx::cross(rc, axis); - const float t0 = -bx::dot(vo, normal) / len; - - vo = bx::normalize(bx::cross(normal, axis) ); - - const float rsq = bx::square(_cylinder.m_radius); - const float ddoto = bx::dot(_ray.m_dir, vo); - const float ss = t0 - bx::abs(bx::sqrt(rsq - bx::square(dist) ) / ddoto); - - if (0.0f > ss) - { - return false; - } - - const bx::Vec3 point = getPointAt(_ray, ss); - - const float axisLen = bx::length(axis); - axis = bx::normalize(axis); - const float pdota = bx::dot(_cylinder.m_pos, axis); - const float height = bx::dot(point, axis) - pdota; - - if (height > 0.0f - && height < axisLen) - { - if (NULL != _hit) - { - const float t1 = height / axisLen; - const bx::Vec3 pointOnAxis = bx::lerp(_cylinder.m_pos, _cylinder.m_end, t1); - - _hit->m_pos = point; - - const bx::Vec3 tmp = bx::sub(point, pointOnAxis); - _hit->m_normal = bx::normalize(tmp); - - _hit->m_dist = ss; - } - - return true; - } - - if (_capsule) - { - const float rdota = bx::dot(_ray.m_pos, axis); - const float pp = rdota - pdota; - const float t1 = pp / axisLen; - - const bx::Vec3 pointOnAxis = bx::lerp(_cylinder.m_pos, _cylinder.m_end, t1); - const bx::Vec3 axisToRay = bx::sub(_ray.m_pos, pointOnAxis); - - if (_cylinder.m_radius < bx::length(axisToRay) - && 0.0f > ss) - { - return false; - } - - Sphere sphere; - sphere.m_radius = _cylinder.m_radius; - - sphere.m_center = 0.0f >= height - ? _cylinder.m_pos - : _cylinder.m_end - ; - - return intersect(_ray, sphere, _hit); - } - - Plane plane; - bx::Vec3 pos; - - if (0.0f >= height) - { - plane.m_normal = bx::neg(axis); - pos = _cylinder.m_pos; - } - else - { - plane.m_normal = axis; - pos = _cylinder.m_end; - } - - plane.m_dist = -bx::dot(pos, plane.m_normal); - - Hit tmpHit; - _hit = NULL != _hit ? _hit : &tmpHit; - - if (intersect(_ray, plane, _hit) ) - { - const bx::Vec3 tmp = bx::sub(pos, _hit->m_pos); - return bx::dot(tmp, tmp) <= rsq; - } - - return false; -} - -bool intersect(const Ray& _ray, const Cylinder& _cylinder, Hit* _hit) -{ - return intersect(_ray, _cylinder, false, _hit); -} - -bool intersect(const Ray& _ray, const Capsule& _capsule, Hit* _hit) -{ - BX_STATIC_ASSERT(sizeof(Capsule) == sizeof(Cylinder) ); - return intersect(_ray, *( (const Cylinder*)&_capsule), true, _hit); -} - -bool intersect(const Ray& _ray, const Cone& _cone, Hit* _hit) -{ - const bx::Vec3 axis = bx::sub(_cone.m_pos, _cone.m_end); - - const float len = bx::length(axis); - const bx::Vec3 normal = bx::normalize(axis); - - Disk disk; - disk.m_center = _cone.m_pos; - disk.m_normal = normal; - disk.m_radius = _cone.m_radius; - - Hit tmpInt; - Hit* out = NULL != _hit ? _hit : &tmpInt; - bool hit = intersect(_ray, disk, out); - - const bx::Vec3 ro = bx::sub(_ray.m_pos, _cone.m_end); - - const float hyp = bx::sqrt(bx::square(_cone.m_radius) + bx::square(len) ); - const float cosaSq = bx::square(len/hyp); - const float ndoto = bx::dot(normal, ro); - const float ndotd = bx::dot(normal, _ray.m_dir); - - const float aa = bx::square(ndotd) - cosaSq; - const float bb = 2.0f * (ndotd*ndoto - bx::dot(_ray.m_dir, ro)*cosaSq); - const float cc = bx::square(ndoto) - bx::dot(ro, ro)*cosaSq; - - float det = bb*bb - 4.0f*aa*cc; - - if (0.0f > det) - { - return hit; - } - - det = bx::sqrt(det); - const float invA2 = 1.0f / (2.0f*aa); - const float t1 = (-bb - det) * invA2; - const float t2 = (-bb + det) * invA2; - - float tt = t1; - if (0.0f > t1 - || (0.0f < t2 && t2 < t1) ) - { - tt = t2; - } - - if (0.0f > tt) - { - return hit; - } - - const bx::Vec3 hitPos = getPointAt(_ray, tt); - const bx::Vec3 point = bx::sub(hitPos, _cone.m_end); - - const float hh = bx::dot(normal, point); - - if (0.0f > hh - || len < hh) - { - return hit; - } - - if (NULL != _hit) - { - if (!hit - || tt < _hit->m_dist) - { - _hit->m_dist = tt; - _hit->m_pos = hitPos; - - const float scale = hh / bx::dot(point, point); - const bx::Vec3 pointScaled = bx::mul(point, scale); - - const bx::Vec3 tmp = bx::sub(pointScaled, normal); - _hit->m_normal = bx::normalize(tmp); - } - } - - return true; -} - -bool intersect(const Ray& _ray, const Plane& _plane, Hit* _hit) -{ - float equation = bx::dot(_ray.m_pos, _plane.m_normal) + _plane.m_dist; - if (0.0f > equation) - { - return false; - } - - float ndotd = bx::dot(_ray.m_dir, _plane.m_normal); - if (0.0f < ndotd) - { - return false; - } - - if (NULL != _hit) - { - _hit->m_normal = _plane.m_normal; - - float tt = -equation/ndotd; - _hit->m_dist = tt; - _hit->m_pos = getPointAt(_ray, tt); - } - - return true; -} - -bool intersect(const Ray& _ray, const Sphere& _sphere, Hit* _hit) -{ - const bx::Vec3 rs = bx::sub(_ray.m_pos, _sphere.m_center); - - const float bb = bx::dot(rs, _ray.m_dir); - if (0.0f < bb) - { - return false; - } - - const float aa = bx::dot(_ray.m_dir, _ray.m_dir); - const float cc = bx::dot(rs, rs) - bx::square(_sphere.m_radius); - - const float discriminant = bb*bb - aa*cc; - - if (0.0f >= discriminant) - { - return false; - } - - const float sqrtDiscriminant = bx::sqrt(discriminant); - const float invA = 1.0f / aa; - const float tt = -(bb + sqrtDiscriminant)*invA; - - if (0.0f >= tt) - { - return false; - } - - if (NULL != _hit) - { - _hit->m_dist = tt; - - const bx::Vec3 point = getPointAt(_ray, tt); - _hit->m_pos = point; - - const bx::Vec3 tmp = bx::sub(point, _sphere.m_center); - _hit->m_normal = bx::normalize(tmp); - } - - return true; -} - -bool intersect(const Ray& _ray, const Tris& _triangle, Hit* _hit) -{ - const bx::Vec3 edge10 = bx::sub(_triangle.m_v1, _triangle.m_v0); - const bx::Vec3 edge02 = bx::sub(_triangle.m_v0, _triangle.m_v2); - const bx::Vec3 normal = bx::cross(edge02, edge10); - const bx::Vec3 vo = bx::sub(_triangle.m_v0, _ray.m_pos); - const bx::Vec3 dxo = bx::cross(_ray.m_dir, vo); - const float det = bx::dot(normal, _ray.m_dir); - - if (det > 0.0f) - { - return false; - } - - const float invDet = 1.0f/det; - const float bz = bx::dot(dxo, edge02) * invDet; - const float by = bx::dot(dxo, edge10) * invDet; - const float bx = 1.0f - by - bz; - - if (bx < 0.0f || by < 0.0f || bz < 0.0f) - { - return false; - } - - if (NULL != _hit) - { - _hit->m_normal = bx::normalize(normal); - - const float tt = bx::dot(normal, vo) * invDet; - _hit->m_dist = tt; - _hit->m_pos = getPointAt(_ray, tt); - } - - return true; -} diff --git a/3rdparty/bgfx/examples/common/bounds.h b/3rdparty/bgfx/examples/common/bounds.h deleted file mode 100644 index aea395df780..00000000000 --- a/3rdparty/bgfx/examples/common/bounds.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#ifndef BOUNDS_H_HEADER_GUARD -#define BOUNDS_H_HEADER_GUARD - -#include <bx/math.h> - -struct Aabb -{ - bx::Vec3 m_min; - bx::Vec3 m_max; -}; - -struct Cylinder -{ - bx::Vec3 m_pos; - bx::Vec3 m_end; - float m_radius; -}; - -struct Capsule -{ - bx::Vec3 m_pos; - bx::Vec3 m_end; - float m_radius; -}; - -struct Cone -{ - bx::Vec3 m_pos; - bx::Vec3 m_end; - float m_radius; -}; - -struct Disk -{ - bx::Vec3 m_center; - bx::Vec3 m_normal; - float m_radius; -}; - -struct Obb -{ - float m_mtx[16]; -}; - -struct Plane -{ - bx::Vec3 m_normal; - float m_dist; -}; - -struct Ray -{ - bx::Vec3 m_pos; - bx::Vec3 m_dir; -}; - -struct Sphere -{ - bx::Vec3 m_center; - float m_radius; -}; - -struct Tris -{ - bx::Vec3 m_v0; - bx::Vec3 m_v1; - bx::Vec3 m_v2; -}; - -struct Hit -{ - bx::Vec3 m_pos; - bx::Vec3 m_normal; - float m_dist; -}; - -/// Convert axis aligned bounding box to oriented bounding box. -void aabbToObb(Obb& _obb, const Aabb& _aabb); - -/// Convert oriented bounding box to axis aligned bounding box. -void toAabb(Aabb& _aabb, const Obb& _obb); - -/// Convert sphere to axis aligned bounding box. -void toAabb(Aabb& _aabb, const Sphere& _sphere); - -/// Convert disk to axis aligned bounding box. -void toAabb(Aabb& _aabb, const Disk& _disk); - -/// Convert cylinder to axis aligned bounding box. -void toAabb(Aabb& _aabb, const Cylinder& _cylinder); - -/// Calculate axis aligned bounding box. -void toAabb(Aabb& _aabb, const void* _vertices, uint32_t _numVertices, uint32_t _stride); - -/// Transform vertices and calculate axis aligned bounding box. -void toAabb(Aabb& _aabb, const float* _mtx, const void* _vertices, uint32_t _numVertices, uint32_t _stride); - -/// Expand AABB. -void aabbExpand(Aabb& _aabb, float _factor); - -/// Expand AABB with xyz. -void aabbExpand(Aabb& _aabb, const float* _pos); - -/// Calculate surface area of axis aligned bounding box. -float calcAreaAabb(const Aabb& _aabb); - -/// Returns 0 is two AABB don't overlap, otherwise returns flags of overlap -/// test. -uint32_t aabbOverlapTest(const Aabb& _aabb0, const Aabb& _aabb1); - -/// Calculate oriented bounding box. -void calcObb(Obb& _obb, const void* _vertices, uint32_t _numVertices, uint32_t _stride, uint32_t _steps = 17); - -/// Calculate maximum bounding sphere. -void calcMaxBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _numVertices, uint32_t _stride); - -/// Calculate minimum bounding sphere. -void calcMinBoundingSphere(Sphere& _sphere, const void* _vertices, uint32_t _numVertices, uint32_t _stride, float _step = 0.01f); - -/// Returns 6 (near, far, left, right, top, bottom) planes representing frustum planes. -void buildFrustumPlanes(Plane* _planes, const float* _viewProj); - -/// Returns point from 3 intersecting planes. -bx::Vec3 intersectPlanes(const Plane& _pa, const Plane& _pb, const Plane& _pc); - -/// Make screen space ray from x, y coordinate and inverse view-projection matrix. -Ray makeRay(float _x, float _y, const float* _invVp); - -/// Intersect ray / AABB. -bool intersect(const Ray& _ray, const Aabb& _aabb, Hit* _hit = NULL); - -/// Intersect ray / OBB. -bool intersect(const Ray& _ray, const Obb& _obb, Hit* _hit = NULL); - -/// Intersect ray / cylinder. -bool intersect(const Ray& _ray, const Cylinder& _cylinder, Hit* _hit = NULL); - -/// Intersect ray / capsule. -bool intersect(const Ray& _ray, const Capsule& _capsule, Hit* _hit = NULL); - -/// Intersect ray / cone. -bool intersect(const Ray& _ray, const Cone& _cone, Hit* _hit = NULL); - -/// Intersect ray / disk. -bool intersect(const Ray& _ray, const Disk& _disk, Hit* _hit = NULL); - -/// Intersect ray / plane. -bool intersect(const Ray& _ray, const Plane& _plane, Hit* _hit = NULL); - -/// Intersect ray / sphere. -bool intersect(const Ray& _ray, const Sphere& _sphere, Hit* _hit = NULL); - -/// Intersect ray / triangle. -bool intersect(const Ray& _ray, const Tris& _triangle, Hit* _hit = NULL); - -#endif // BOUNDS_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/camera.cpp b/3rdparty/bgfx/examples/common/camera.cpp index 3e48e57d4f7..2578d327726 100644 --- a/3rdparty/bgfx/examples/common/camera.cpp +++ b/3rdparty/bgfx/examples/common/camera.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bx/timer.h> @@ -79,13 +79,14 @@ struct Camera { int32_t m_mx; int32_t m_my; + int32_t m_mz; }; Camera() { reset(); entry::MouseState mouseState; - update(0.0f, mouseState); + update(0.0f, mouseState, true); cmdAdd("move", cmdMove); inputAddBindings("camBindings", s_camBindings); @@ -93,6 +94,7 @@ struct Camera ~Camera() { + cmdRemove("move"); inputRemoveBindings("camBindings"); } @@ -100,8 +102,10 @@ struct Camera { m_mouseNow.m_mx = 0; m_mouseNow.m_my = 0; + m_mouseNow.m_mz = 0; m_mouseLast.m_mx = 0; m_mouseLast.m_my = 0; + m_mouseLast.m_mz = 0; m_eye.x = 0.0f; m_eye.y = 0.0f; m_eye.z = -35.0f; @@ -126,8 +130,19 @@ struct Camera m_keys |= _down ? _key : 0; } - void update(float _deltaTime, const entry::MouseState& _mouseState) + void update(float _deltaTime, const entry::MouseState& _mouseState, bool _reset) { + if (_reset) + { + m_mouseLast.m_mx = _mouseState.m_mx; + m_mouseLast.m_my = _mouseState.m_my; + m_mouseLast.m_mz = _mouseState.m_mz; + m_mouseNow = m_mouseLast; + m_mouseDown = false; + + return; + } + if (!m_mouseDown) { m_mouseLast.m_mx = _mouseState.m_mx; @@ -142,10 +157,15 @@ struct Camera m_mouseNow.m_my = _mouseState.m_my; } + m_mouseLast.m_mz = m_mouseNow.m_mz; + m_mouseNow.m_mz = _mouseState.m_mz; + + const float deltaZ = float(m_mouseNow.m_mz - m_mouseLast.m_mz); + if (m_mouseDown) { - int32_t deltaX = m_mouseNow.m_mx - m_mouseLast.m_mx; - int32_t deltaY = m_mouseNow.m_my - m_mouseLast.m_my; + const int32_t deltaX = m_mouseNow.m_mx - m_mouseLast.m_mx; + const int32_t deltaY = m_mouseNow.m_my - m_mouseLast.m_my; m_horizontalAngle += m_mouseSpeed * float(deltaX); m_verticalAngle -= m_mouseSpeed * float(deltaY); @@ -174,63 +194,47 @@ struct Camera const bx::Vec3 right = { bx::sin(m_horizontalAngle - bx::kPiHalf), - 0, + 0.0f, bx::cos(m_horizontalAngle - bx::kPiHalf), }; const bx::Vec3 up = bx::cross(right, direction); + m_eye = bx::mad(direction, deltaZ * _deltaTime * m_moveSpeed, m_eye); + if (m_keys & CAMERA_KEY_FORWARD) { - const bx::Vec3 pos = m_eye; - const bx::Vec3 tmp = bx::mul(direction, _deltaTime * m_moveSpeed); - - m_eye = bx::add(pos, tmp); + m_eye = bx::mad(direction, _deltaTime * m_moveSpeed, m_eye); setKeyState(CAMERA_KEY_FORWARD, false); } if (m_keys & CAMERA_KEY_BACKWARD) { - const bx::Vec3 pos = m_eye; - const bx::Vec3 tmp = bx::mul(direction, _deltaTime * m_moveSpeed); - - m_eye = bx::sub(pos, tmp); + m_eye = bx::mad(direction, -_deltaTime * m_moveSpeed, m_eye); setKeyState(CAMERA_KEY_BACKWARD, false); } if (m_keys & CAMERA_KEY_LEFT) { - const bx::Vec3 pos = m_eye; - const bx::Vec3 tmp = bx::mul(right, _deltaTime * m_moveSpeed); - - m_eye = bx::add(pos, tmp); + m_eye = bx::mad(right, _deltaTime * m_moveSpeed, m_eye); setKeyState(CAMERA_KEY_LEFT, false); } if (m_keys & CAMERA_KEY_RIGHT) { - const bx::Vec3 pos = m_eye; - const bx::Vec3 tmp = bx::mul(right, _deltaTime * m_moveSpeed); - - m_eye = bx::sub(pos, tmp); + m_eye = bx::mad(right, -_deltaTime * m_moveSpeed, m_eye); setKeyState(CAMERA_KEY_RIGHT, false); } if (m_keys & CAMERA_KEY_UP) { - const bx::Vec3 pos = m_eye; - const bx::Vec3 tmp = bx::mul(up, _deltaTime * m_moveSpeed); - - m_eye = bx::add(pos, tmp); + m_eye = bx::mad(up, _deltaTime * m_moveSpeed, m_eye); setKeyState(CAMERA_KEY_UP, false); } if (m_keys & CAMERA_KEY_DOWN) { - const bx::Vec3 pos = m_eye; - const bx::Vec3 tmp = bx::mul(up, _deltaTime * m_moveSpeed); - - m_eye = bx::sub(pos, tmp); + m_eye = bx::mad(up, -_deltaTime * m_moveSpeed, m_eye); setKeyState(CAMERA_KEY_DOWN, false); } @@ -240,12 +244,12 @@ struct Camera void getViewMtx(float* _viewMtx) { - bx::mtxLookAt(_viewMtx, bx::load(&m_eye.x), bx::load(&m_at.x), bx::load(&m_up.x) ); + bx::mtxLookAt(_viewMtx, bx::load<bx::Vec3>(&m_eye.x), bx::load<bx::Vec3>(&m_at.x), bx::load<bx::Vec3>(&m_up.x) ); } - void setPosition(const float* _pos) + void setPosition(const bx::Vec3& _pos) { - bx::memCopy(&m_eye.x, _pos, sizeof(float)*3); + m_eye = _pos; } void setVerticalAngle(float _verticalAngle) @@ -261,9 +265,9 @@ struct Camera MouseCoords m_mouseNow; MouseCoords m_mouseLast; - bx::Vec3 m_eye; - bx::Vec3 m_at; - bx::Vec3 m_up; + bx::Vec3 m_eye = bx::init::Zero; + bx::Vec3 m_at = bx::init::Zero; + bx::Vec3 m_up = bx::init::Zero; float m_horizontalAngle; float m_verticalAngle; @@ -288,7 +292,7 @@ void cameraDestroy() s_camera = NULL; } -void cameraSetPosition(const float* _pos) +void cameraSetPosition(const bx::Vec3& _pos) { s_camera->setPosition(_pos); } @@ -313,17 +317,17 @@ void cameraGetViewMtx(float* _viewMtx) s_camera->getViewMtx(_viewMtx); } -void cameraGetPosition(float* _pos) +bx::Vec3 cameraGetPosition() { - bx::memCopy(_pos, &s_camera->m_eye.x, 3*sizeof(float) ); + return s_camera->m_eye; } -void cameraGetAt(float* _at) +bx::Vec3 cameraGetAt() { - bx::memCopy(_at, &s_camera->m_at.x, 3*sizeof(float) ); + return s_camera->m_at; } -void cameraUpdate(float _deltaTime, const entry::MouseState& _mouseState) +void cameraUpdate(float _deltaTime, const entry::MouseState& _mouseState, bool _reset) { - s_camera->update(_deltaTime, _mouseState); + s_camera->update(_deltaTime, _mouseState, _reset); } diff --git a/3rdparty/bgfx/examples/common/camera.h b/3rdparty/bgfx/examples/common/camera.h index ba1c0cc1f96..80a77d7fb97 100644 --- a/3rdparty/bgfx/examples/common/camera.h +++ b/3rdparty/bgfx/examples/common/camera.h @@ -1,6 +1,6 @@ /* * Copyright 2013 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef CAMERA_H_HEADER_GUARD @@ -22,7 +22,7 @@ void cameraCreate(); void cameraDestroy(); /// -void cameraSetPosition(const float* _pos); +void cameraSetPosition(const bx::Vec3& _pos); /// void cameraSetHorizontalAngle(float _horizontalAngle); @@ -37,12 +37,12 @@ void cameraSetKeyState(uint8_t _key, bool _down); void cameraGetViewMtx(float* _viewMtx); /// -void cameraGetPosition(float* _pos); +bx::Vec3 cameraGetPosition(); /// -void cameraGetAt(float* _at); +bx::Vec3 cameraGetAt(); /// -void cameraUpdate(float _deltaTime, const entry::MouseState& _mouseState); +void cameraUpdate(float _deltaTime, const entry::MouseState& _mouseState, bool _reset = false); #endif // CAMERA_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/common.h b/3rdparty/bgfx/examples/common/common.h index e86a41c2610..c15209bbc94 100644 --- a/3rdparty/bgfx/examples/common/common.h +++ b/3rdparty/bgfx/examples/common/common.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef COMMON_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/common.sh b/3rdparty/bgfx/examples/common/common.sh index e997f87ebaa..fab6caf1749 100644 --- a/3rdparty/bgfx/examples/common/common.sh +++ b/3rdparty/bgfx/examples/common/common.sh @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/cube_atlas.cpp b/3rdparty/bgfx/examples/common/cube_atlas.cpp index 44c58b1e098..a5689e83531 100644 --- a/3rdparty/bgfx/examples/common/cube_atlas.cpp +++ b/3rdparty/bgfx/examples/common/cube_atlas.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -85,8 +85,8 @@ RectanglePacker::RectanglePacker(uint32_t _width, uint32_t _height) void RectanglePacker::init(uint32_t _width, uint32_t _height) { - BX_CHECK(_width > 2, "_width must be > 2"); - BX_CHECK(_height > 2, "_height must be > 2"); + BX_ASSERT(_width > 2, "_width must be > 2"); + BX_ASSERT(_height > 2, "_height must be > 2"); m_width = _width; m_height = _height; m_usedSpace = 0; @@ -256,13 +256,13 @@ Atlas::Atlas(uint16_t _textureSize, uint16_t _maxRegionsCount) , m_regionCount(0) , m_maxRegionCount(_maxRegionsCount) { - BX_CHECK(_textureSize >= 64 && _textureSize <= 4096, "Invalid _textureSize %d.", _textureSize); - BX_CHECK(_maxRegionsCount >= 64 && _maxRegionsCount <= 32000, "Invalid _maxRegionsCount %d.", _maxRegionsCount); + BX_ASSERT(_textureSize >= 64 && _textureSize <= 4096, "Invalid _textureSize %d.", _textureSize); + BX_ASSERT(_maxRegionsCount >= 64 && _maxRegionsCount <= 32000, "Invalid _maxRegionsCount %d.", _maxRegionsCount); - init(); + m_texelSize = float(UINT16_MAX) / float(m_textureSize); - m_layers = new PackedLayer[24]; - for (int ii = 0; ii < 24; ++ii) + m_layers = new PackedLayer[6]; + for (int ii = 0; ii < 6; ++ii) { m_layers[ii].packer.init(_textureSize, _textureSize); } @@ -279,15 +279,15 @@ Atlas::Atlas(uint16_t _textureSize, uint16_t _maxRegionsCount) } Atlas::Atlas(uint16_t _textureSize, const uint8_t* _textureBuffer, uint16_t _regionCount, const uint8_t* _regionBuffer, uint16_t _maxRegionsCount) - : m_usedLayers(24) + : m_usedLayers(6) , m_usedFaces(6) , m_textureSize(_textureSize) , m_regionCount(_regionCount) , m_maxRegionCount(_regionCount < _maxRegionsCount ? _regionCount : _maxRegionsCount) { - BX_CHECK(_regionCount <= 64 && _maxRegionsCount <= 4096, "_regionCount %d, _maxRegionsCount %d", _regionCount, _maxRegionsCount); + BX_ASSERT(_regionCount <= 64 && _maxRegionsCount <= 4096, "_regionCount %d, _maxRegionsCount %d", _regionCount, _maxRegionsCount); - init(); + m_texelSize = float(UINT16_MAX) / float(m_textureSize); m_regions = new AtlasRegion[_regionCount]; m_textureBuffer = new uint8_t[getTextureBufferSize()]; @@ -313,30 +313,6 @@ Atlas::~Atlas() delete [] m_textureBuffer; } -void Atlas::init() -{ - m_texelSize = float(UINT16_MAX) / float(m_textureSize); - float texelHalf = m_texelSize/2.0f; - switch (bgfx::getRendererType() ) - { - case bgfx::RendererType::Direct3D9: - m_texelOffset[0] = 0.0f; - m_texelOffset[1] = 0.0f; - break; - - case bgfx::RendererType::Direct3D11: - case bgfx::RendererType::Direct3D12: - m_texelOffset[0] = texelHalf; - m_texelOffset[1] = texelHalf; - break; - - default: - m_texelOffset[0] = texelHalf; - m_texelOffset[1] = -texelHalf; - break; - } -} - uint16_t Atlas::addRegion(uint16_t _width, uint16_t _height, const uint8_t* _bitmapBuffer, AtlasRegion::Type _type, uint16_t outline) { if (m_regionCount >= m_maxRegionCount) @@ -366,8 +342,9 @@ uint16_t Atlas::addRegion(uint16_t _width, uint16_t _height, const uint8_t* _bit return UINT16_MAX; } - for (int ii = 0; ii < _type; ++ii) + //for (int ii = 0; ii < _type; ++ii) { + int ii = 0; AtlasRegion& region = m_layers[idx + ii].faceRegion; region.x = 0; region.y = 0; @@ -376,7 +353,7 @@ uint16_t Atlas::addRegion(uint16_t _width, uint16_t _height, const uint8_t* _bit region.setMask(_type, m_usedFaces, ii); } - m_usedLayers += _type; + m_usedLayers++; m_usedFaces++; if (!m_layers[idx].packer.addRectangle(_width + 1, _height + 1, xx, yy) ) @@ -468,10 +445,10 @@ static void writeUV(uint8_t* _vertexBuffer, int16_t _x, int16_t _y, int16_t _z, void Atlas::packUV(const AtlasRegion& _region, uint8_t* _vertexBuffer, uint32_t _offset, uint32_t _stride) const { - int16_t x0 = (int16_t)( ( (float)_region.x * m_texelSize + m_texelOffset[0]) - float(INT16_MAX) ); - int16_t y0 = (int16_t)( ( (float)_region.y * m_texelSize + m_texelOffset[1]) - float(INT16_MAX) ); - int16_t x1 = (int16_t)( ( ( (float)_region.x + _region.width) * m_texelSize + m_texelOffset[0]) - float(INT16_MAX) ); - int16_t y1 = (int16_t)( ( ( (float)_region.y + _region.height) * m_texelSize + m_texelOffset[1]) - float(INT16_MAX) ); + int16_t x0 = (int16_t)( ( (float)_region.x * m_texelSize) - float(INT16_MAX) ); + int16_t y0 = (int16_t)( ( (float)_region.y * m_texelSize) - float(INT16_MAX) ); + int16_t x1 = (int16_t)( ( ( (float)_region.x + _region.width) * m_texelSize) - float(INT16_MAX) ); + int16_t y1 = (int16_t)( ( ( (float)_region.y + _region.height) * m_texelSize) - float(INT16_MAX) ); int16_t ww = (int16_t)( (float(INT16_MAX) / 4.0f) * (float)_region.getComponentIndex() ); _vertexBuffer += _offset; diff --git a/3rdparty/bgfx/examples/common/cube_atlas.h b/3rdparty/bgfx/examples/common/cube_atlas.h index 9a33a7611a6..d823e63f7c8 100644 --- a/3rdparty/bgfx/examples/common/cube_atlas.h +++ b/3rdparty/bgfx/examples/common/cube_atlas.h @@ -1,6 +1,6 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef CUBE_ATLAS_H_HEADER_GUARD @@ -135,8 +135,6 @@ public: } private: - void init(); - struct PackedLayer; PackedLayer* m_layers; AtlasRegion* m_regions; @@ -148,7 +146,6 @@ private: bgfx::TextureHandle m_textureHandle; uint16_t m_textureSize; float m_texelSize; - float m_texelOffset[2]; uint16_t m_regionCount; uint16_t m_maxRegionCount; diff --git a/3rdparty/bgfx/examples/common/debugdraw/debugdraw.cpp b/3rdparty/bgfx/examples/common/debugdraw/debugdraw.cpp index 669f1e0204c..eee5aef0816 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/debugdraw.cpp +++ b/3rdparty/bgfx/examples/common/debugdraw/debugdraw.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx/bgfx.h> @@ -9,6 +9,7 @@ #include "../bgfx_utils.h" #include "../packrect.h" +#include <bx/debug.h> #include <bx/mutex.h> #include <bx/math.h> #include <bx/sort.h> @@ -29,7 +30,7 @@ struct DebugVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 1, bgfx::AttribType::Float) @@ -37,10 +38,10 @@ struct DebugVertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl DebugVertex::ms_decl; +bgfx::VertexLayout DebugVertex::ms_layout; struct DebugUvVertex { @@ -53,7 +54,7 @@ struct DebugUvVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) @@ -61,10 +62,10 @@ struct DebugUvVertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl DebugUvVertex::ms_decl; +bgfx::VertexLayout DebugUvVertex::ms_layout; struct DebugShapeVertex { @@ -75,17 +76,17 @@ struct DebugShapeVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Indices, 4, bgfx::AttribType::Uint8) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl DebugShapeVertex::ms_decl; +bgfx::VertexLayout DebugShapeVertex::ms_layout; struct DebugMeshVertex { @@ -95,16 +96,16 @@ struct DebugMeshVertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl DebugMeshVertex::ms_decl; +bgfx::VertexLayout DebugMeshVertex::ms_layout; static DebugShapeVertex s_quadVertices[4] = { @@ -198,22 +199,22 @@ uint32_t genSphere(uint8_t _subdiv0, void* _pos0 = NULL, uint16_t _posStride0 = static const float ss = 1.0f/len * scale; static const float ll = ss*golden; - static const float vv[12][4] = + static const bx::Vec3 vv[] = { - { -ll, 0.0f, -ss, 0.0f }, - { ll, 0.0f, -ss, 0.0f }, - { ll, 0.0f, ss, 0.0f }, - { -ll, 0.0f, ss, 0.0f }, - - { -ss, ll, 0.0f, 0.0f }, - { ss, ll, 0.0f, 0.0f }, - { ss, -ll, 0.0f, 0.0f }, - { -ss, -ll, 0.0f, 0.0f }, - - { 0.0f, -ss, ll, 0.0f }, - { 0.0f, ss, ll, 0.0f }, - { 0.0f, ss, -ll, 0.0f }, - { 0.0f, -ss, -ll, 0.0f }, + { -ll, 0.0f, -ss }, + { ll, 0.0f, -ss }, + { ll, 0.0f, ss }, + { -ll, 0.0f, ss }, + + { -ss, ll, 0.0f }, + { ss, ll, 0.0f }, + { ss, -ll, 0.0f }, + { -ss, -ll, 0.0f }, + + { 0.0f, -ss, ll }, + { 0.0f, ss, ll }, + { 0.0f, ss, -ll }, + { 0.0f, -ss, -ll }, }; m_numVertices = 0; @@ -242,25 +243,23 @@ uint32_t genSphere(uint8_t _subdiv0, void* _pos0 = NULL, uint16_t _posStride0 = triangle(vv[ 3], vv[ 9], vv[ 8], scale, _subdiv); } - void addVert(const float* _v) + void addVert(const bx::Vec3& _v) { - float* verts = (float*)m_pos; - verts[0] = _v[0]; - verts[1] = _v[1]; - verts[2] = _v[2]; + bx::store(m_pos, _v); m_pos += m_posStride; if (NULL != m_normals) { - float* normals = (float*)m_normals; - bx::vec3Norm(normals, _v); + const bx::Vec3 normal = bx::normalize(_v); + bx::store(m_normals, normal); + m_normals += m_normalStride; } m_numVertices++; } - void triangle(const float* _v0, const float* _v1, const float* _v2, float _scale, uint8_t _subdiv) + void triangle(const bx::Vec3& _v0, const bx::Vec3& _v1, const bx::Vec3& _v2, float _scale, uint8_t _subdiv) { if (0 == _subdiv) { @@ -270,23 +269,9 @@ uint32_t genSphere(uint8_t _subdiv0, void* _pos0 = NULL, uint16_t _posStride0 = } else { - float tmp0[4]; - float tmp1[4]; - - float v01[4]; - bx::vec3Add(tmp0, _v0, _v1); - bx::vec3Norm(tmp1, tmp0); - bx::vec3Mul(v01, tmp1, _scale); - - float v12[4]; - bx::vec3Add(tmp0, _v1, _v2); - bx::vec3Norm(tmp1, tmp0); - bx::vec3Mul(v12, tmp1, _scale); - - float v20[4]; - bx::vec3Add(tmp0, _v2, _v0); - bx::vec3Norm(tmp1, tmp0); - bx::vec3Mul(v20, tmp1, _scale); + const bx::Vec3 v01 = bx::mul(bx::normalize(bx::add(_v0, _v1) ), _scale); + const bx::Vec3 v12 = bx::mul(bx::normalize(bx::add(_v1, _v2) ), _scale); + const bx::Vec3 v20 = bx::mul(bx::normalize(bx::add(_v2, _v0) ), _scale); --_subdiv; triangle(_v0, v01, v20, _scale, _subdiv); @@ -309,28 +294,16 @@ uint32_t genSphere(uint8_t _subdiv0, void* _pos0 = NULL, uint16_t _posStride0 = return numVertices; } -void getPoint(float* _result, Axis::Enum _axis, float _x, float _y) +bx::Vec3 getPoint(Axis::Enum _axis, float _x, float _y) { switch (_axis) { - case Axis::X: - _result[0] = 0.0f; - _result[1] = _x; - _result[2] = _y; - break; - - case Axis::Y: - _result[0] = _y; - _result[1] = 0.0f; - _result[2] = _x; - break; - - default: - _result[0] = _x; - _result[1] = _y; - _result[2] = 0.0f; - break; + case Axis::X: return { 0.0f, _x, _y }; + case Axis::Y: return { _y, 0.0f, _x }; + default: break; } + + return { _x, _y, 0.0f }; } #include "vs_debugdraw_lines.bin.h" @@ -441,7 +414,7 @@ struct GeometryT Geometry& geometry = m_geometry[handle.idx]; geometry.m_vbh = bgfx::createVertexBuffer( bgfx::copy(_vertices, _numVertices*sizeof(DdVertex) ) - , DebugMeshVertex::ms_decl + , DebugMeshVertex::ms_layout ); geometry.m_topologyNumIndices[0] = _numIndices; @@ -540,7 +513,7 @@ struct Program }; }; -struct Mesh +struct DebugMesh { enum Enum { @@ -648,20 +621,20 @@ struct DebugDrawShared , true ); - u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, 4); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, 4); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); m_texture = bgfx::createTexture2D(SPRITE_TEXTURE_SIZE, SPRITE_TEXTURE_SIZE, false, 1, bgfx::TextureFormat::BGRA8); - void* vertices[Mesh::Count] = {}; - uint16_t* indices[Mesh::Count] = {}; - uint16_t stride = DebugShapeVertex::ms_decl.getStride(); + void* vertices[DebugMesh::Count] = {}; + uint16_t* indices[DebugMesh::Count] = {}; + uint16_t stride = DebugShapeVertex::ms_layout.getStride(); uint32_t startVertex = 0; uint32_t startIndex = 0; for (uint32_t mesh = 0; mesh < 4; ++mesh) { - Mesh::Enum id = Mesh::Enum(Mesh::Sphere0+mesh); + DebugMesh::Enum id = DebugMesh::Enum(DebugMesh::Sphere0+mesh); const uint8_t tess = uint8_t(3-mesh); const uint32_t numVertices = genSphere(tess); @@ -713,7 +686,7 @@ struct DebugDrawShared for (uint32_t mesh = 0; mesh < 4; ++mesh) { - Mesh::Enum id = Mesh::Enum(Mesh::Cone0+mesh); + DebugMesh::Enum id = DebugMesh::Enum(DebugMesh::Cone0+mesh); const uint32_t num = getCircleLod(uint8_t(mesh) ); const float step = bx::kPi * 2.0f / num; @@ -774,7 +747,7 @@ struct DebugDrawShared for (uint32_t mesh = 0; mesh < 4; ++mesh) { - Mesh::Enum id = Mesh::Enum(Mesh::Cylinder0+mesh); + DebugMesh::Enum id = DebugMesh::Enum(DebugMesh::Cylinder0+mesh); const uint32_t num = getCircleLod(uint8_t(mesh) ); const float step = bx::kPi * 2.0f / num; @@ -844,7 +817,7 @@ struct DebugDrawShared for (uint32_t mesh = 0; mesh < 4; ++mesh) { - Mesh::Enum id = Mesh::Enum(Mesh::Capsule0+mesh); + DebugMesh::Enum id = DebugMesh::Enum(DebugMesh::Capsule0+mesh); const uint32_t num = getCircleLod(uint8_t(mesh) ); const float step = bx::kPi * 2.0f / num; @@ -912,30 +885,30 @@ struct DebugDrawShared startIndex += numIndices + numLineListIndices; } - m_mesh[Mesh::Quad].m_startVertex = startVertex; - m_mesh[Mesh::Quad].m_numVertices = BX_COUNTOF(s_quadVertices); - m_mesh[Mesh::Quad].m_startIndex[0] = startIndex; - m_mesh[Mesh::Quad].m_numIndices[0] = BX_COUNTOF(s_quadIndices); - m_mesh[Mesh::Quad].m_startIndex[1] = 0; - m_mesh[Mesh::Quad].m_numIndices[1] = 0; + m_mesh[DebugMesh::Quad].m_startVertex = startVertex; + m_mesh[DebugMesh::Quad].m_numVertices = BX_COUNTOF(s_quadVertices); + m_mesh[DebugMesh::Quad].m_startIndex[0] = startIndex; + m_mesh[DebugMesh::Quad].m_numIndices[0] = BX_COUNTOF(s_quadIndices); + m_mesh[DebugMesh::Quad].m_startIndex[1] = 0; + m_mesh[DebugMesh::Quad].m_numIndices[1] = 0; startVertex += BX_COUNTOF(s_quadVertices); startIndex += BX_COUNTOF(s_quadIndices); - m_mesh[Mesh::Cube].m_startVertex = startVertex; - m_mesh[Mesh::Cube].m_numVertices = BX_COUNTOF(s_cubeVertices); - m_mesh[Mesh::Cube].m_startIndex[0] = startIndex; - m_mesh[Mesh::Cube].m_numIndices[0] = BX_COUNTOF(s_cubeIndices); - m_mesh[Mesh::Cube].m_startIndex[1] = 0; - m_mesh[Mesh::Cube].m_numIndices[1] = 0; - startVertex += m_mesh[Mesh::Cube].m_numVertices; - startIndex += m_mesh[Mesh::Cube].m_numIndices[0]; + m_mesh[DebugMesh::Cube].m_startVertex = startVertex; + m_mesh[DebugMesh::Cube].m_numVertices = BX_COUNTOF(s_cubeVertices); + m_mesh[DebugMesh::Cube].m_startIndex[0] = startIndex; + m_mesh[DebugMesh::Cube].m_numIndices[0] = BX_COUNTOF(s_cubeIndices); + m_mesh[DebugMesh::Cube].m_startIndex[1] = 0; + m_mesh[DebugMesh::Cube].m_numIndices[1] = 0; + startVertex += m_mesh[DebugMesh::Cube].m_numVertices; + startIndex += m_mesh[DebugMesh::Cube].m_numIndices[0]; const bgfx::Memory* vb = bgfx::alloc(startVertex*stride); const bgfx::Memory* ib = bgfx::alloc(startIndex*sizeof(uint16_t) ); - for (uint32_t mesh = Mesh::Sphere0; mesh < Mesh::Quad; ++mesh) + for (uint32_t mesh = DebugMesh::Sphere0; mesh < DebugMesh::Quad; ++mesh) { - Mesh::Enum id = Mesh::Enum(mesh); + DebugMesh::Enum id = DebugMesh::Enum(mesh); bx::memCopy(&vb->data[m_mesh[id].m_startVertex * stride] , vertices[id] , m_mesh[id].m_numVertices*stride @@ -950,27 +923,27 @@ struct DebugDrawShared BX_FREE(m_allocator, indices[id]); } - bx::memCopy(&vb->data[m_mesh[Mesh::Quad].m_startVertex * stride] + bx::memCopy(&vb->data[m_mesh[DebugMesh::Quad].m_startVertex * stride] , s_quadVertices , sizeof(s_quadVertices) ); - bx::memCopy(&ib->data[m_mesh[Mesh::Quad].m_startIndex[0] * sizeof(uint16_t)] + bx::memCopy(&ib->data[m_mesh[DebugMesh::Quad].m_startIndex[0] * sizeof(uint16_t)] , s_quadIndices , sizeof(s_quadIndices) ); - bx::memCopy(&vb->data[m_mesh[Mesh::Cube].m_startVertex * stride] + bx::memCopy(&vb->data[m_mesh[DebugMesh::Cube].m_startVertex * stride] , s_cubeVertices , sizeof(s_cubeVertices) ); - bx::memCopy(&ib->data[m_mesh[Mesh::Cube].m_startIndex[0] * sizeof(uint16_t)] + bx::memCopy(&ib->data[m_mesh[DebugMesh::Cube].m_startIndex[0] * sizeof(uint16_t)] , s_cubeIndices , sizeof(s_cubeIndices) ); - m_vbh = bgfx::createVertexBuffer(vb, DebugShapeVertex::ms_decl); + m_vbh = bgfx::createVertexBuffer(vb, DebugShapeVertex::ms_layout); m_ibh = bgfx::createIndexBuffer(ib); } @@ -1029,7 +1002,7 @@ struct DebugDrawShared Sprite m_sprite; Geometry m_geometry; - Mesh m_mesh[Mesh::Count]; + DebugMesh m_mesh[DebugMesh::Count]; bgfx::UniformHandle s_texColor; bgfx::TextureHandle m_texture; @@ -1054,6 +1027,7 @@ struct DebugDrawEncoderImpl void init(bgfx::Encoder* _encoder) { m_defaultEncoder = _encoder; + m_state = State::Count; } void shutdown() @@ -1062,7 +1036,7 @@ struct DebugDrawEncoderImpl void begin(bgfx::ViewId _viewId, bool _depthTestLess, bgfx::Encoder* _encoder) { - BX_CHECK(State::Count == m_state); + BX_ASSERT(State::Count == m_state, ""); m_viewId = _viewId; m_encoder = _encoder == NULL ? m_defaultEncoder : _encoder; @@ -1096,7 +1070,7 @@ struct DebugDrawEncoderImpl void end() { - BX_CHECK(0 == m_stack, "Invalid stack %d.", m_stack); + BX_ASSERT(0 == m_stack, "Invalid stack %d.", m_stack); flushQuad(); flush(); @@ -1107,14 +1081,14 @@ struct DebugDrawEncoderImpl void push() { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); ++m_stack; m_attrib[m_stack] = m_attrib[m_stack-1]; } void pop() { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); const Attrib& curr = m_attrib[m_stack]; const Attrib& prev = m_attrib[m_stack-1]; if (curr.m_stipple != prev.m_stipple @@ -1127,7 +1101,7 @@ struct DebugDrawEncoderImpl void setDepthTestLess(bool _depthTestLess) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); if (m_depthTestLess != _depthTestLess) { m_depthTestLess = _depthTestLess; @@ -1143,7 +1117,7 @@ struct DebugDrawEncoderImpl void setTransform(const void* _mtx, uint16_t _num = 1, bool _flush = true) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); if (_flush) { flush(); @@ -1178,8 +1152,8 @@ struct DebugDrawEncoderImpl void pushTransform(const void* _mtx, uint16_t _num, bool _flush = true) { - BX_CHECK(m_mtxStackCurrent < BX_COUNTOF(m_mtxStack), "Out of matrix stack!"); - BX_CHECK(State::Count != m_state); + BX_ASSERT(m_mtxStackCurrent < BX_COUNTOF(m_mtxStack), "Out of matrix stack!"); + BX_ASSERT(State::Count != m_state, ""); if (_flush) { flush(); @@ -1209,7 +1183,7 @@ struct DebugDrawEncoderImpl void popTransform(bool _flush = true) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); if (_flush) { flush(); @@ -1225,9 +1199,9 @@ struct DebugDrawEncoderImpl pushTransform(mtx, 1); } - void pushTranslate(const float* _pos) + void pushTranslate(const bx::Vec3& _pos) { - pushTranslate(_pos[0], _pos[1], _pos[2]); + pushTranslate(_pos.x, _pos.y, _pos.z); } void setState(bool _depthTest, bool _depthWrite, bool _clockwise) @@ -1269,25 +1243,25 @@ struct DebugDrawEncoderImpl void setColor(uint32_t _abgr) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); m_attrib[m_stack].m_abgr = _abgr; } void setLod(uint8_t _lod) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); m_attrib[m_stack].m_lod = _lod; } void setWireframe(bool _wireframe) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); m_attrib[m_stack].m_wireframe = _wireframe; } void setStipple(bool _stipple, float _scale = 1.0f, float _offset = 0.0f) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); Attrib& attrib = m_attrib[m_stack]; @@ -1309,7 +1283,7 @@ struct DebugDrawEncoderImpl void moveTo(float _x, float _y, float _z = 0.0f) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); softFlush(); @@ -1327,24 +1301,20 @@ struct DebugDrawEncoderImpl m_vertexPos = m_pos; } - void moveTo(const void* _pos) + void moveTo(const bx::Vec3& _pos) { - BX_CHECK(State::Count != m_state); - - const float* pos = (const float*)_pos; - moveTo(pos[0], pos[1], pos[2]); + BX_ASSERT(State::Count != m_state, ""); + moveTo(_pos.x, _pos.y, _pos.z); } void moveTo(Axis::Enum _axis, float _x, float _y) { - float pos[3]; - getPoint(pos, _axis, _x, _y); - moveTo(pos); + moveTo(getPoint(_axis, _x, _y) ); } void lineTo(float _x, float _y, float _z = 0.0f) { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); if (State::None == m_state) { moveTo(_x, _y, _z); @@ -1388,92 +1358,86 @@ struct DebugDrawEncoderImpl vertex.m_abgr = attrib.m_abgr; vertex.m_len = attrib.m_offset; - float tmp[3]; - bx::vec3Sub(tmp, &vertex.m_x, &m_cache[prev].m_x); - float len = bx::vec3Length(tmp) * attrib.m_scale; + float len = bx::length(bx::sub(bx::load<bx::Vec3>(&vertex.m_x), bx::load<bx::Vec3>(&m_cache[prev].m_x) ) ) * attrib.m_scale; vertex.m_len = m_cache[prev].m_len + len; m_indices[m_indexPos++] = prev; m_indices[m_indexPos++] = curr; } - void lineTo(const void* _pos) + void lineTo(const bx::Vec3& _pos) { - BX_CHECK(State::Count != m_state); - - const float* pos = (const float*)_pos; - lineTo(pos[0], pos[1], pos[2]); + BX_ASSERT(State::Count != m_state, ""); + lineTo(_pos.x, _pos.y, _pos.z); } void lineTo(Axis::Enum _axis, float _x, float _y) { - float pos[3]; - getPoint(pos, _axis, _x, _y); - lineTo(pos); + lineTo(getPoint(_axis, _x, _y) ); } void close() { - BX_CHECK(State::Count != m_state); + BX_ASSERT(State::Count != m_state, ""); DebugVertex& vertex = m_cache[m_vertexPos]; lineTo(vertex.m_x, vertex.m_y, vertex.m_z); m_state = State::None; } - void draw(const Aabb& _aabb) + void draw(const bx::Aabb& _aabb) { const Attrib& attrib = m_attrib[m_stack]; if (attrib.m_wireframe) { - moveTo(_aabb.m_min.x, _aabb.m_min.y, _aabb.m_min.z); - lineTo(_aabb.m_max.x, _aabb.m_min.y, _aabb.m_min.z); - lineTo(_aabb.m_max.x, _aabb.m_max.y, _aabb.m_min.z); - lineTo(_aabb.m_min.x, _aabb.m_max.y, _aabb.m_min.z); + moveTo(_aabb.min.x, _aabb.min.y, _aabb.min.z); + lineTo(_aabb.max.x, _aabb.min.y, _aabb.min.z); + lineTo(_aabb.max.x, _aabb.max.y, _aabb.min.z); + lineTo(_aabb.min.x, _aabb.max.y, _aabb.min.z); close(); - moveTo(_aabb.m_min.x, _aabb.m_min.y, _aabb.m_max.z); - lineTo(_aabb.m_max.x, _aabb.m_min.y, _aabb.m_max.z); - lineTo(_aabb.m_max.x, _aabb.m_max.y, _aabb.m_max.z); - lineTo(_aabb.m_min.x, _aabb.m_max.y, _aabb.m_max.z); + moveTo(_aabb.min.x, _aabb.min.y, _aabb.max.z); + lineTo(_aabb.max.x, _aabb.min.y, _aabb.max.z); + lineTo(_aabb.max.x, _aabb.max.y, _aabb.max.z); + lineTo(_aabb.min.x, _aabb.max.y, _aabb.max.z); close(); - moveTo(_aabb.m_min.x, _aabb.m_min.y, _aabb.m_min.z); - lineTo(_aabb.m_min.x, _aabb.m_min.y, _aabb.m_max.z); + moveTo(_aabb.min.x, _aabb.min.y, _aabb.min.z); + lineTo(_aabb.min.x, _aabb.min.y, _aabb.max.z); - moveTo(_aabb.m_max.x, _aabb.m_min.y, _aabb.m_min.z); - lineTo(_aabb.m_max.x, _aabb.m_min.y, _aabb.m_max.z); + moveTo(_aabb.max.x, _aabb.min.y, _aabb.min.z); + lineTo(_aabb.max.x, _aabb.min.y, _aabb.max.z); - moveTo(_aabb.m_min.x, _aabb.m_max.y, _aabb.m_min.z); - lineTo(_aabb.m_min.x, _aabb.m_max.y, _aabb.m_max.z); + moveTo(_aabb.min.x, _aabb.max.y, _aabb.min.z); + lineTo(_aabb.min.x, _aabb.max.y, _aabb.max.z); - moveTo(_aabb.m_max.x, _aabb.m_max.y, _aabb.m_min.z); - lineTo(_aabb.m_max.x, _aabb.m_max.y, _aabb.m_max.z); + moveTo(_aabb.max.x, _aabb.max.y, _aabb.min.z); + lineTo(_aabb.max.x, _aabb.max.y, _aabb.max.z); } else { - Obb obb; - aabbToObb(obb, _aabb); - draw(Mesh::Cube, obb.m_mtx, 1, false); + bx::Obb obb; + toObb(obb, _aabb); + draw(DebugMesh::Cube, obb.mtx, 1, false); } } - void draw(const Cylinder& _cylinder, bool _capsule) + void draw(const bx::Cylinder& _cylinder, bool _capsule) { - drawCylinder(&_cylinder.m_pos.x, &_cylinder.m_end.x, _cylinder.m_radius, _capsule); + drawCylinder(_cylinder.pos, _cylinder.end, _cylinder.radius, _capsule); } - void draw(const Disk& _disk) + void draw(const bx::Disk& _disk) { - drawCircle(&_disk.m_normal.x, &_disk.m_center.x, _disk.m_radius, 0.0f); + drawCircle(_disk.normal, _disk.center, _disk.radius, 0.0f); } - void draw(const Obb& _obb) + void draw(const bx::Obb& _obb) { const Attrib& attrib = m_attrib[m_stack]; if (attrib.m_wireframe) { - pushTransform(_obb.m_mtx, 1); + pushTransform(_obb.mtx, 1); moveTo(-1.0f, -1.0f, -1.0f); lineTo( 1.0f, -1.0f, -1.0f); @@ -1503,30 +1467,53 @@ struct DebugDrawEncoderImpl } else { - draw(Mesh::Cube, _obb.m_mtx, 1, false); + draw(DebugMesh::Cube, _obb.mtx, 1, false); } } - void draw(const Sphere& _sphere) + void draw(const bx::Sphere& _sphere) { const Attrib& attrib = m_attrib[m_stack]; float mtx[16]; bx::mtxSRT(mtx - , _sphere.m_radius - , _sphere.m_radius - , _sphere.m_radius + , _sphere.radius + , _sphere.radius + , _sphere.radius , 0.0f , 0.0f , 0.0f - , _sphere.m_center.x - , _sphere.m_center.y - , _sphere.m_center.z + , _sphere.center.x + , _sphere.center.y + , _sphere.center.z ); - uint8_t lod = attrib.m_lod > Mesh::SphereMaxLod - ? uint8_t(Mesh::SphereMaxLod) + uint8_t lod = attrib.m_lod > DebugMesh::SphereMaxLod + ? uint8_t(DebugMesh::SphereMaxLod) : attrib.m_lod ; - draw(Mesh::Enum(Mesh::Sphere0 + lod), mtx, 1, attrib.m_wireframe); + draw(DebugMesh::Enum(DebugMesh::Sphere0 + lod), mtx, 1, attrib.m_wireframe); + } + + void draw(const bx::Triangle& _triangle) + { + Attrib& attrib = m_attrib[m_stack]; + if (attrib.m_wireframe) + { + moveTo(_triangle.v0); + lineTo(_triangle.v1); + lineTo(_triangle.v2); + close(); + } + else + { + BX_STATIC_ASSERT(sizeof(DdVertex) == sizeof(bx::Vec3), ""); + + uint64_t old = attrib.m_state; + attrib.m_state &= ~BGFX_STATE_CULL_MASK; + + draw(false, 3, reinterpret_cast<const DdVertex*>(&_triangle.v0.x), 0, NULL); + + attrib.m_state = old; + } } void setUParams(const Attrib& _attrib, bool _wireframe) @@ -1562,7 +1549,7 @@ struct DebugDrawEncoderImpl }, }; - bx::vec3Norm(params[0], params[0]); + bx::store(params[0], bx::normalize(bx::load<bx::Vec3>(params[0]) ) ); m_encoder->setUniform(s_dds.u_params, params, 4); m_encoder->setState(0 @@ -1607,11 +1594,11 @@ struct DebugDrawEncoderImpl { flush(); - if (_numVertices == bgfx::getAvailTransientVertexBuffer(_numVertices, DebugMeshVertex::ms_decl) ) + if (_numVertices == bgfx::getAvailTransientVertexBuffer(_numVertices, DebugMeshVertex::ms_layout) ) { bgfx::TransientVertexBuffer tvb; - bgfx::allocTransientVertexBuffer(&tvb, _numVertices, DebugMeshVertex::ms_decl); - bx::memCopy(tvb.data, _vertices, _numVertices * DebugMeshVertex::ms_decl.m_stride); + bgfx::allocTransientVertexBuffer(&tvb, _numVertices, DebugMeshVertex::ms_layout); + bx::memCopy(tvb.data, _vertices, _numVertices * DebugMeshVertex::ms_layout.m_stride); m_encoder->setVertexBuffer(0, &tvb); const Attrib& attrib = m_attrib[m_stack]; @@ -1633,7 +1620,6 @@ struct DebugDrawEncoderImpl , false ); - bgfx::allocTransientIndexBuffer(&tib, numIndices); bgfx::topologyConvert( bgfx::TopologyConvert::TriListToLineList @@ -1649,53 +1635,59 @@ struct DebugDrawEncoderImpl bgfx::allocTransientIndexBuffer(&tib, numIndices); bx::memCopy(tib.data, _indices, numIndices * sizeof(uint16_t) ); } + m_encoder->setIndexBuffer(&tib); } m_encoder->setTransform(m_mtxStack[m_mtxStackCurrent].mtx); - bgfx::ProgramHandle program = s_dds.m_program[wireframe ? Program::FillMesh : Program::FillLitMesh]; + bgfx::ProgramHandle program = s_dds.m_program[wireframe + ? Program::FillMesh + : Program::FillLitMesh + ]; m_encoder->submit(m_viewId, program); } } void drawFrustum(const float* _viewProj) { - Plane planes[6]; + bx::Plane planes[6] = { bx::init::None, bx::init::None, bx::init::None, bx::init::None, bx::init::None, bx::init::None }; buildFrustumPlanes(planes, _viewProj); - bx::Vec3 points[8]; - points[0] = intersectPlanes(planes[0], planes[2], planes[4]); - points[1] = intersectPlanes(planes[0], planes[3], planes[4]); - points[2] = intersectPlanes(planes[0], planes[3], planes[5]); - points[3] = intersectPlanes(planes[0], planes[2], planes[5]); - points[4] = intersectPlanes(planes[1], planes[2], planes[4]); - points[5] = intersectPlanes(planes[1], planes[3], planes[4]); - points[6] = intersectPlanes(planes[1], planes[3], planes[5]); - points[7] = intersectPlanes(planes[1], planes[2], planes[5]); - - moveTo(&points[0].x); - lineTo(&points[1].x); - lineTo(&points[2].x); - lineTo(&points[3].x); + const bx::Vec3 points[8] = + { + intersectPlanes(planes[0], planes[2], planes[4]), + intersectPlanes(planes[0], planes[3], planes[4]), + intersectPlanes(planes[0], planes[3], planes[5]), + intersectPlanes(planes[0], planes[2], planes[5]), + intersectPlanes(planes[1], planes[2], planes[4]), + intersectPlanes(planes[1], planes[3], planes[4]), + intersectPlanes(planes[1], planes[3], planes[5]), + intersectPlanes(planes[1], planes[2], planes[5]), + }; + + moveTo(points[0]); + lineTo(points[1]); + lineTo(points[2]); + lineTo(points[3]); close(); - moveTo(&points[4].x); - lineTo(&points[5].x); - lineTo(&points[6].x); - lineTo(&points[7].x); + moveTo(points[4]); + lineTo(points[5]); + lineTo(points[6]); + lineTo(points[7]); close(); - moveTo(&points[0].x); - lineTo(&points[4].x); + moveTo(points[0]); + lineTo(points[4]); - moveTo(&points[1].x); - lineTo(&points[5].x); + moveTo(points[1]); + lineTo(points[5]); - moveTo(&points[2].x); - lineTo(&points[6].x); + moveTo(points[2]); + lineTo(points[6]); - moveTo(&points[3].x); - lineTo(&points[7].x); + moveTo(points[3]); + lineTo(points[7]); } void drawFrustum(const void* _viewProj) @@ -1711,65 +1703,64 @@ struct DebugDrawEncoderImpl _degrees = bx::wrap(_degrees, 360.0f); - float pos[3]; - getPoint(pos, _axis + bx::Vec3 pos = getPoint( + _axis , bx::sin(step * 0)*_radius , bx::cos(step * 0)*_radius ); - moveTo(pos[0] + _x, pos[1] + _y, pos[2] + _z); + moveTo({pos.x + _x, pos.y + _y, pos.z + _z}); uint32_t n = uint32_t(num*_degrees/360.0f); for (uint32_t ii = 1; ii < n+1; ++ii) { - getPoint(pos, _axis + pos = getPoint( + _axis , bx::sin(step * ii)*_radius , bx::cos(step * ii)*_radius ); - lineTo(pos[0] + _x, pos[1] + _y, pos[2] + _z); + lineTo({pos.x + _x, pos.y + _y, pos.z + _z}); } moveTo(_x, _y, _z); - getPoint(pos, _axis + pos = getPoint( + _axis , bx::sin(step * 0)*_radius , bx::cos(step * 0)*_radius ); - lineTo(pos[0] + _x, pos[1] + _y, pos[2] + _z); + lineTo({pos.x + _x, pos.y + _y, pos.z + _z}); - getPoint(pos, _axis + pos = getPoint( + _axis , bx::sin(step * n)*_radius , bx::cos(step * n)*_radius ); - moveTo(pos[0] + _x, pos[1] + _y, pos[2] + _z); + moveTo({pos.x + _x, pos.y + _y, pos.z + _z}); lineTo(_x, _y, _z); } - void drawCircle(const float* _normal, const float* _center, float _radius, float _weight) + void drawCircle(const bx::Vec3& _normal, const bx::Vec3& _center, float _radius, float _weight) { const Attrib& attrib = m_attrib[m_stack]; const uint32_t num = getCircleLod(attrib.m_lod); const float step = bx::kPi * 2.0f / num; _weight = bx::clamp(_weight, 0.0f, 2.0f); - float udir[3]; - float vdir[3]; - bx::vec3TangentFrame(_normal, udir, vdir, attrib.m_spin); - - float pos[3]; - float tmp0[3]; - float tmp1[3]; + bx::Vec3 udir(bx::init::None); + bx::Vec3 vdir(bx::init::None); + bx::calcTangentFrame(udir, vdir, _normal, attrib.m_spin); float xy0[2]; float xy1[2]; circle(xy0, 0.0f); squircle(xy1, 0.0f); - bx::vec3Mul(pos, udir, bx::lerp(xy0[0], xy1[0], _weight)*_radius); - bx::vec3Mul(tmp0, vdir, bx::lerp(xy0[1], xy1[1], _weight)*_radius); - bx::vec3Add(tmp1, pos, tmp0); - bx::vec3Add(pos, tmp1, _center); - moveTo(pos); + bx::Vec3 pos = bx::mul(udir, bx::lerp(xy0[0], xy1[0], _weight)*_radius); + bx::Vec3 tmp0 = bx::mul(vdir, bx::lerp(xy0[1], xy1[1], _weight)*_radius); + bx::Vec3 tmp1 = bx::add(pos, tmp0); + bx::Vec3 tmp2 = bx::add(tmp1, _center); + moveTo(tmp2); for (uint32_t ii = 1; ii < num; ++ii) { @@ -1777,21 +1768,16 @@ struct DebugDrawEncoderImpl circle(xy0, angle); squircle(xy1, angle); - bx::vec3Mul(pos, udir, bx::lerp(xy0[0], xy1[0], _weight)*_radius); - bx::vec3Mul(tmp0, vdir, bx::lerp(xy0[1], xy1[1], _weight)*_radius); - bx::vec3Add(tmp1, pos, tmp0); - bx::vec3Add(pos, tmp1, _center); - lineTo(pos); + pos = bx::mul(udir, bx::lerp(xy0[0], xy1[0], _weight)*_radius); + tmp0 = bx::mul(vdir, bx::lerp(xy0[1], xy1[1], _weight)*_radius); + tmp1 = bx::add(pos, tmp0); + tmp2 = bx::add(tmp1, _center); + lineTo(tmp2); } close(); } - void drawCircle(const void* _normal, const void* _center, float _radius, float _weight) - { - drawCircle( (const float*)_normal, (const float*)_center, _radius, _weight); - } - void drawCircle(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _weight) { const Attrib& attrib = m_attrib[m_stack]; @@ -1804,69 +1790,51 @@ struct DebugDrawEncoderImpl circle(xy0, 0.0f); squircle(xy1, 0.0f); - float pos[3]; - getPoint(pos, _axis + bx::Vec3 pos = getPoint( + _axis , bx::lerp(xy0[0], xy1[0], _weight)*_radius , bx::lerp(xy0[1], xy1[1], _weight)*_radius ); - moveTo(pos[0] + _x, pos[1] + _y, pos[2] + _z); + moveTo({pos.x + _x, pos.y + _y, pos.z + _z}); + for (uint32_t ii = 1; ii < num; ++ii) { float angle = step * ii; circle(xy0, angle); squircle(xy1, angle); - getPoint(pos, _axis + pos = getPoint( + _axis , bx::lerp(xy0[0], xy1[0], _weight)*_radius , bx::lerp(xy0[1], xy1[1], _weight)*_radius ); - lineTo(pos[0] + _x, pos[1] + _y, pos[2] + _z); + lineTo({pos.x + _x, pos.y + _y, pos.z + _z}); } close(); } - void drawQuad(const float* _normal, const float* _center, float _size) + void drawQuad(const bx::Vec3& _normal, const bx::Vec3& _center, float _size) { const Attrib& attrib = m_attrib[m_stack]; if (attrib.m_wireframe) { - float udir[3]; - float vdir[3]; - - bx::vec3TangentFrame(_normal, udir, vdir, attrib.m_spin); + bx::Vec3 udir(bx::init::None); + bx::Vec3 vdir(bx::init::None); + bx::calcTangentFrame(udir, vdir, _normal, attrib.m_spin); const float halfExtent = _size*0.5f; - float umin[3]; - bx::vec3Mul(umin, udir, -halfExtent); - - float umax[3]; - bx::vec3Mul(umax, udir, halfExtent); - - float vmin[3]; - bx::vec3Mul(vmin, vdir, -halfExtent); - - float vmax[3]; - bx::vec3Mul(vmax, vdir, halfExtent); - - float pt[3]; - float tmp[3]; - bx::vec3Add(tmp, umin, vmin); - bx::vec3Add(pt, _center, tmp); - moveTo(pt); - - bx::vec3Add(tmp, umax, vmin); - bx::vec3Add(pt, _center, tmp); - lineTo(pt); - - bx::vec3Add(tmp, umax, vmax); - bx::vec3Add(pt, _center, tmp); - lineTo(pt); + const bx::Vec3 umin = bx::mul(udir, -halfExtent); + const bx::Vec3 umax = bx::mul(udir, halfExtent); + const bx::Vec3 vmin = bx::mul(vdir, -halfExtent); + const bx::Vec3 vmax = bx::mul(vdir, halfExtent); + const bx::Vec3 center = _center; - bx::vec3Add(tmp, umin, vmax); - bx::vec3Add(pt, _center, tmp); - lineTo(pt); + moveTo(bx::add(center, bx::add(umin, vmin) ) ); + lineTo(bx::add(center, bx::add(umax, vmin) ) ); + lineTo(bx::add(center, bx::add(umax, vmax) ) ); + lineTo(bx::add(center, bx::add(umin, vmax) ) ); close(); } @@ -1874,11 +1842,11 @@ struct DebugDrawEncoderImpl { float mtx[16]; bx::mtxFromNormal(mtx, _normal, _size*0.5f, _center, attrib.m_spin); - draw(Mesh::Quad, mtx, 1, false); + draw(DebugMesh::Quad, mtx, 1, false); } } - void drawQuad(SpriteHandle _handle, const float* _normal, const float* _center, float _size) + void drawQuad(SpriteHandle _handle, const bx::Vec3& _normal, const bx::Vec3& _center, float _size) { if (!isValid(_handle) ) { @@ -1893,10 +1861,9 @@ struct DebugDrawEncoderImpl const Attrib& attrib = m_attrib[m_stack]; - float udir[3]; - float vdir[3]; - - bx::vec3TangentFrame(_normal, udir, vdir, attrib.m_spin); + bx::Vec3 udir(bx::init::None); + bx::Vec3 vdir(bx::init::None); + bx::calcTangentFrame(udir, vdir, _normal, attrib.m_spin); const Pack2D& pack = s_dds.m_sprite.get(_handle); const float invTextureSize = 1.0f/SPRITE_TEXTURE_SIZE; @@ -1909,189 +1876,130 @@ struct DebugDrawEncoderImpl const float halfExtentU = aspectRatio*_size*0.5f; const float halfExtentV = 1.0f/aspectRatio*_size*0.5f; - float umin[3]; - bx::vec3Mul(umin, udir, -halfExtentU); - - float umax[3]; - bx::vec3Mul(umax, udir, halfExtentU); - - float vmin[3]; - bx::vec3Mul(vmin, vdir, -halfExtentV); - - float vmax[3]; - bx::vec3Mul(vmax, vdir, halfExtentV); + const bx::Vec3 umin = bx::mul(udir, -halfExtentU); + const bx::Vec3 umax = bx::mul(udir, halfExtentU); + const bx::Vec3 vmin = bx::mul(vdir, -halfExtentV); + const bx::Vec3 vmax = bx::mul(vdir, halfExtentV); + const bx::Vec3 center = _center; DebugUvVertex* vertex = &m_cacheQuad[m_posQuad]; m_posQuad += 4; - float pt[3]; - float tmp[3]; - bx::vec3Add(tmp, umin, vmin); - bx::vec3Add(pt, _center, tmp); - vertex->m_x = pt[0]; - vertex->m_y = pt[1]; - vertex->m_z = pt[2]; + bx::store(&vertex->m_x, bx::add(center, bx::add(umin, vmin) ) ); vertex->m_u = us; vertex->m_v = vs; vertex->m_abgr = attrib.m_abgr; ++vertex; - bx::vec3Add(tmp, umax, vmin); - bx::vec3Add(pt, _center, tmp); - vertex->m_x = pt[0]; - vertex->m_y = pt[1]; - vertex->m_z = pt[2]; + bx::store(&vertex->m_x, bx::add(center, bx::add(umax, vmin) ) ); vertex->m_u = ue; vertex->m_v = vs; vertex->m_abgr = attrib.m_abgr; ++vertex; - bx::vec3Add(tmp, umin, vmax); - bx::vec3Add(pt, _center, tmp); - vertex->m_x = pt[0]; - vertex->m_y = pt[1]; - vertex->m_z = pt[2]; + bx::store(&vertex->m_x, bx::add(center, bx::add(umin, vmax) ) ); vertex->m_u = us; vertex->m_v = ve; vertex->m_abgr = attrib.m_abgr; ++vertex; - bx::vec3Add(tmp, umax, vmax); - bx::vec3Add(pt, _center, tmp); - vertex->m_x = pt[0]; - vertex->m_y = pt[1]; - vertex->m_z = pt[2]; + bx::store(&vertex->m_x, bx::add(center, bx::add(umax, vmax) ) ); vertex->m_u = ue; vertex->m_v = ve; vertex->m_abgr = attrib.m_abgr; ++vertex; } - void drawQuad(bgfx::TextureHandle _handle, const float* _normal, const float* _center, float _size) + void drawQuad(bgfx::TextureHandle _handle, const bx::Vec3& _normal, const bx::Vec3& _center, float _size) { BX_UNUSED(_handle, _normal, _center, _size); } - void drawCone(const float* _from, const float* _to, float _radius) + void drawCone(const bx::Vec3& _from, const bx::Vec3& _to, float _radius) { const Attrib& attrib = m_attrib[m_stack]; - float tmp0[3]; - bx::vec3Sub(tmp0, _from, _to); - - float normal[3]; - bx::vec3Norm(normal, tmp0); + const bx::Vec3 normal = bx::normalize(bx::sub(_from, _to) ); float mtx[2][16]; bx::mtxFromNormal(mtx[0], normal, _radius, _from, attrib.m_spin); bx::memCopy(mtx[1], mtx[0], 64); - mtx[1][12] = _to[0]; - mtx[1][13] = _to[1]; - mtx[1][14] = _to[2]; + mtx[1][12] = _to.x; + mtx[1][13] = _to.y; + mtx[1][14] = _to.z; - uint8_t lod = attrib.m_lod > Mesh::ConeMaxLod - ? uint8_t(Mesh::ConeMaxLod) - : attrib.m_lod - ; - draw(Mesh::Enum(Mesh::Cone0 + lod), mtx[0], 2, attrib.m_wireframe); - } - - void drawCone(const void* _from, const void* _to, float _radius) - { - drawCone( (const float*)_from, (const float*)_to, _radius); + uint8_t lod = attrib.m_lod > DebugMesh::ConeMaxLod + ? uint8_t(DebugMesh::ConeMaxLod) + : attrib.m_lod + ; + draw(DebugMesh::Enum(DebugMesh::Cone0 + lod), mtx[0], 2, attrib.m_wireframe); } - void drawCylinder(const float* _from, const float* _to, float _radius, bool _capsule) + void drawCylinder(const bx::Vec3& _from, const bx::Vec3& _to, float _radius, bool _capsule) { - const Attrib& attrib = m_attrib[m_stack]; - - float tmp0[3]; - bx::vec3Sub(tmp0, _from, _to); - - float normal[3]; - bx::vec3Norm(normal, tmp0); + const Attrib& attrib = m_attrib[m_stack]; + const bx::Vec3 normal = bx::normalize(bx::sub(_from, _to) ); float mtx[2][16]; bx::mtxFromNormal(mtx[0], normal, _radius, _from, attrib.m_spin); bx::memCopy(mtx[1], mtx[0], 64); - mtx[1][12] = _to[0]; - mtx[1][13] = _to[1]; - mtx[1][14] = _to[2]; + mtx[1][12] = _to.x; + mtx[1][13] = _to.y; + mtx[1][14] = _to.z; if (_capsule) { - uint8_t lod = attrib.m_lod > Mesh::CapsuleMaxLod - ? uint8_t(Mesh::CapsuleMaxLod) + uint8_t lod = attrib.m_lod > DebugMesh::CapsuleMaxLod + ? uint8_t(DebugMesh::CapsuleMaxLod) : attrib.m_lod ; - draw(Mesh::Enum(Mesh::Capsule0 + lod), mtx[0], 2, attrib.m_wireframe); + draw(DebugMesh::Enum(DebugMesh::Capsule0 + lod), mtx[0], 2, attrib.m_wireframe); - Sphere sphere; - sphere.m_center.x = _from[0]; - sphere.m_center.y = _from[1]; - sphere.m_center.z = _from[2]; - sphere.m_radius = _radius; + bx::Sphere sphere; + sphere.center = _from; + sphere.radius = _radius; draw(sphere); - sphere.m_center.x = _to[0]; - sphere.m_center.y = _to[1]; - sphere.m_center.z = _to[2]; + sphere.center = _to; draw(sphere); } else { - uint8_t lod = attrib.m_lod > Mesh::CylinderMaxLod - ? uint8_t(Mesh::CylinderMaxLod) + uint8_t lod = attrib.m_lod > DebugMesh::CylinderMaxLod + ? uint8_t(DebugMesh::CylinderMaxLod) : attrib.m_lod ; - draw(Mesh::Enum(Mesh::Cylinder0 + lod), mtx[0], 2, attrib.m_wireframe); + draw(DebugMesh::Enum(DebugMesh::Cylinder0 + lod), mtx[0], 2, attrib.m_wireframe); } } - void drawCylinder(const void* _from, const void* _to, float _radius, bool _capsule) - { - drawCylinder( (const float*)_from, (const float*)_to, _radius, _capsule); - } - void drawAxis(float _x, float _y, float _z, float _len, Axis::Enum _highlight, float _thickness) { push(); if (_thickness > 0.0f) { - float from[3] = { _x, _y, _z }; - float mid[3]; - float to[3]; + const bx::Vec3 from = { _x, _y, _z }; + bx::Vec3 mid(bx::init::None); + bx::Vec3 to(bx::init::None); setColor(Axis::X == _highlight ? 0xff00ffff : 0xff0000ff); - mid[0] = _x + _len - _thickness; - mid[1] = _y; - mid[2] = _z; - to[0] = _x + _len; - to[1] = _y; - to[2] = _z; + mid = { _x + _len - _thickness, _y, _z }; + to = { _x + _len, _y, _z }; drawCylinder(from, mid, _thickness, false); drawCone(mid, to, _thickness); setColor(Axis::Y == _highlight ? 0xff00ffff : 0xff00ff00); - mid[0] = _x; - mid[1] = _y + _len - _thickness; - mid[2] = _z; - to[0] = _x; - to[1] = _y + _len; - to[2] = _z; + mid = { _x, _y + _len - _thickness, _z }; + to = { _x, _y + _len, _z }; drawCylinder(from, mid, _thickness, false); drawCone(mid, to, _thickness); setColor(Axis::Z == _highlight ? 0xff00ffff : 0xffff0000); - mid[0] = _x; - mid[1] = _y; - mid[2] = _z + _len - _thickness; - to[0] = _x; - to[1] = _y; - to[2] = _z + _len; + mid = { _x, _y, _z + _len - _thickness }; + to = { _x, _y, _z + _len }; drawCylinder(from, mid, _thickness, false); drawCone(mid, to, _thickness); } @@ -2113,72 +2021,45 @@ struct DebugDrawEncoderImpl pop(); } - void drawGrid(const float* _normal, const float* _center, uint32_t _size, float _step) + void drawGrid(const bx::Vec3& _normal, const bx::Vec3& _center, uint32_t _size, float _step) { const Attrib& attrib = m_attrib[m_stack]; - float udir[3]; - float vdir[3]; - bx::vec3TangentFrame(_normal, udir, vdir, attrib.m_spin); + bx::Vec3 udir(bx::init::None); + bx::Vec3 vdir(bx::init::None); + bx::calcTangentFrame(udir, vdir, _normal, attrib.m_spin); - bx::vec3Mul(udir, udir, _step); - bx::vec3Mul(vdir, vdir, _step); + udir = bx::mul(udir, _step); + vdir = bx::mul(vdir, _step); const uint32_t num = (_size/2)*2+1; const float halfExtent = float(_size/2); - float umin[3]; - bx::vec3Mul(umin, udir, -halfExtent); - - float umax[3]; - bx::vec3Mul(umax, udir, halfExtent); - - float vmin[3]; - bx::vec3Mul(vmin, vdir, -halfExtent); - - float vmax[3]; - bx::vec3Mul(vmax, vdir, halfExtent); - - float tmp[3]; + const bx::Vec3 umin = bx::mul(udir, -halfExtent); + const bx::Vec3 umax = bx::mul(udir, halfExtent); + const bx::Vec3 vmin = bx::mul(vdir, -halfExtent); + const bx::Vec3 vmax = bx::mul(vdir, halfExtent); - float xs[3]; - float xe[3]; - - bx::vec3Add(tmp, umin, vmin); - bx::vec3Add(xs, _center, tmp); - - bx::vec3Add(tmp, umax, vmin); - bx::vec3Add(xe, _center, tmp); - - float ys[3]; - float ye[3]; - - bx::vec3Add(tmp, umin, vmin); - bx::vec3Add(ys, _center, tmp); - - bx::vec3Add(tmp, umin, vmax); - bx::vec3Add(ye, _center, tmp); + bx::Vec3 xs = bx::add(_center, bx::add(umin, vmin) ); + bx::Vec3 xe = bx::add(_center, bx::add(umax, vmin) ); + bx::Vec3 ys = bx::add(_center, bx::add(umin, vmin) ); + bx::Vec3 ye = bx::add(_center, bx::add(umin, vmax) ); for (uint32_t ii = 0; ii < num; ++ii) { moveTo(xs); lineTo(xe); - bx::vec3Add(xs, xs, vdir); - bx::vec3Add(xe, xe, vdir); + xs = bx::add(xs, vdir); + xe = bx::add(xe, vdir); moveTo(ys); lineTo(ye); - bx::vec3Add(ys, ys, udir); - bx::vec3Add(ye, ye, udir); + ys = bx::add(ys, udir); + ye = bx::add(ye, udir); } } - void drawGrid(const void* _normal, const void* _center, uint32_t _size, float _step) - { - drawGrid( (const float*)_normal, (const float*)_center, _size, _step); - } - - void drawGrid(Axis::Enum _axis, const float* _center, uint32_t _size, float _step) + void drawGrid(Axis::Enum _axis, const bx::Vec3& _center, uint32_t _size, float _step) { push(); pushTranslate(_center); @@ -2216,11 +2097,6 @@ struct DebugDrawEncoderImpl pop(); } - void drawGrid(Axis::Enum _axis, const void* _center, uint32_t _size, float _step) - { - drawGrid(_axis, (const float*)_center, _size, _step); - } - void drawOrb(float _x, float _y, float _z, float _radius, Axis::Enum _hightlight) { push(); @@ -2237,11 +2113,11 @@ struct DebugDrawEncoderImpl pop(); } - void draw(Mesh::Enum _mesh, const float* _mtx, uint16_t _num, bool _wireframe) + void draw(DebugMesh::Enum _mesh, const float* _mtx, uint16_t _num, bool _wireframe) { pushTransform(_mtx, _num, false /* flush */); - const Mesh& mesh = s_dds.m_mesh[_mesh]; + const DebugMesh& mesh = s_dds.m_mesh[_mesh]; if (0 != mesh.m_numIndices[_wireframe]) { @@ -2275,11 +2151,11 @@ struct DebugDrawEncoderImpl { if (0 != m_pos) { - if (checkAvailTransientBuffers(m_pos, DebugVertex::ms_decl, m_indexPos) ) + if (checkAvailTransientBuffers(m_pos, DebugVertex::ms_layout, m_indexPos) ) { bgfx::TransientVertexBuffer tvb; - bgfx::allocTransientVertexBuffer(&tvb, m_pos, DebugVertex::ms_decl); - bx::memCopy(tvb.data, m_cache, m_pos * DebugVertex::ms_decl.m_stride); + bgfx::allocTransientVertexBuffer(&tvb, m_pos, DebugVertex::ms_layout); + bx::memCopy(tvb.data, m_cache, m_pos * DebugVertex::ms_layout.m_stride); bgfx::TransientIndexBuffer tib; bgfx::allocTransientIndexBuffer(&tib, m_indexPos); @@ -2313,11 +2189,11 @@ struct DebugDrawEncoderImpl if (0 != m_posQuad) { const uint32_t numIndices = m_posQuad/4*6; - if (checkAvailTransientBuffers(m_posQuad, DebugUvVertex::ms_decl, numIndices) ) + if (checkAvailTransientBuffers(m_posQuad, DebugUvVertex::ms_layout, numIndices) ) { bgfx::TransientVertexBuffer tvb; - bgfx::allocTransientVertexBuffer(&tvb, m_posQuad, DebugUvVertex::ms_decl); - bx::memCopy(tvb.data, m_cacheQuad, m_posQuad * DebugUvVertex::ms_decl.m_stride); + bgfx::allocTransientVertexBuffer(&tvb, m_posQuad, DebugUvVertex::ms_layout); + bx::memCopy(tvb.data, m_cacheQuad, m_posQuad * DebugUvVertex::ms_layout.m_stride); bgfx::TransientIndexBuffer tib; bgfx::allocTransientIndexBuffer(&tib, numIndices); @@ -2531,7 +2407,7 @@ void DebugDrawEncoder::moveTo(float _x, float _y, float _z) DEBUG_DRAW_ENCODER(moveTo(_x, _y, _z) ); } -void DebugDrawEncoder::moveTo(const void* _pos) +void DebugDrawEncoder::moveTo(const bx::Vec3& _pos) { DEBUG_DRAW_ENCODER(moveTo(_pos) ); } @@ -2541,7 +2417,7 @@ void DebugDrawEncoder::lineTo(float _x, float _y, float _z) DEBUG_DRAW_ENCODER(lineTo(_x, _y, _z) ); } -void DebugDrawEncoder::lineTo(const void* _pos) +void DebugDrawEncoder::lineTo(const bx::Vec3& _pos) { DEBUG_DRAW_ENCODER(lineTo(_pos) ); } @@ -2551,39 +2427,44 @@ void DebugDrawEncoder::close() DEBUG_DRAW_ENCODER(close() ); } -void DebugDrawEncoder::draw(const Aabb& _aabb) +void DebugDrawEncoder::draw(const bx::Aabb& _aabb) { DEBUG_DRAW_ENCODER(draw(_aabb) ); } -void DebugDrawEncoder::draw(const Cylinder& _cylinder) +void DebugDrawEncoder::draw(const bx::Cylinder& _cylinder) { DEBUG_DRAW_ENCODER(draw(_cylinder, false) ); } -void DebugDrawEncoder::draw(const Capsule& _capsule) +void DebugDrawEncoder::draw(const bx::Capsule& _capsule) { - DEBUG_DRAW_ENCODER(draw(*( (const Cylinder*)&_capsule), true) ); + DEBUG_DRAW_ENCODER(draw(*( (const bx::Cylinder*)&_capsule), true) ); } -void DebugDrawEncoder::draw(const Disk& _disk) +void DebugDrawEncoder::draw(const bx::Disk& _disk) { DEBUG_DRAW_ENCODER(draw(_disk) ); } -void DebugDrawEncoder::draw(const Obb& _obb) +void DebugDrawEncoder::draw(const bx::Obb& _obb) { DEBUG_DRAW_ENCODER(draw(_obb) ); } -void DebugDrawEncoder::draw(const Sphere& _sphere) +void DebugDrawEncoder::draw(const bx::Sphere& _sphere) { DEBUG_DRAW_ENCODER(draw(_sphere) ); } -void DebugDrawEncoder::draw(const Cone& _cone) +void DebugDrawEncoder::draw(const bx::Triangle& _triangle) { - DEBUG_DRAW_ENCODER(drawCone(&_cone.m_pos.x, &_cone.m_end.x, _cone.m_radius) ); + DEBUG_DRAW_ENCODER(draw(_triangle) ); +} + +void DebugDrawEncoder::draw(const bx::Cone& _cone) +{ + DEBUG_DRAW_ENCODER(drawCone(_cone.pos, _cone.end, _cone.radius) ); } void DebugDrawEncoder::draw(GeometryHandle _handle) @@ -2611,7 +2492,7 @@ void DebugDrawEncoder::drawArc(Axis::Enum _axis, float _x, float _y, float _z, f DEBUG_DRAW_ENCODER(drawArc(_axis, _x, _y, _z, _radius, _degrees) ); } -void DebugDrawEncoder::drawCircle(const void* _normal, const void* _center, float _radius, float _weight) +void DebugDrawEncoder::drawCircle(const bx::Vec3& _normal, const bx::Vec3& _center, float _radius, float _weight) { DEBUG_DRAW_ENCODER(drawCircle(_normal, _center, _radius, _weight) ); } @@ -2621,32 +2502,32 @@ void DebugDrawEncoder::drawCircle(Axis::Enum _axis, float _x, float _y, float _z DEBUG_DRAW_ENCODER(drawCircle(_axis, _x, _y, _z, _radius, _weight) ); } -void DebugDrawEncoder::drawQuad(const float* _normal, const float* _center, float _size) +void DebugDrawEncoder::drawQuad(const bx::Vec3& _normal, const bx::Vec3& _center, float _size) { DEBUG_DRAW_ENCODER(drawQuad(_normal, _center, _size) ); } -void DebugDrawEncoder::drawQuad(SpriteHandle _handle, const float* _normal, const float* _center, float _size) +void DebugDrawEncoder::drawQuad(SpriteHandle _handle, const bx::Vec3& _normal, const bx::Vec3& _center, float _size) { DEBUG_DRAW_ENCODER(drawQuad(_handle, _normal, _center, _size) ); } -void DebugDrawEncoder::drawQuad(bgfx::TextureHandle _handle, const float* _normal, const float* _center, float _size) +void DebugDrawEncoder::drawQuad(bgfx::TextureHandle _handle, const bx::Vec3& _normal, const bx::Vec3& _center, float _size) { DEBUG_DRAW_ENCODER(drawQuad(_handle, _normal, _center, _size) ); } -void DebugDrawEncoder::drawCone(const void* _from, const void* _to, float _radius) +void DebugDrawEncoder::drawCone(const bx::Vec3& _from, const bx::Vec3& _to, float _radius) { DEBUG_DRAW_ENCODER(drawCone(_from, _to, _radius) ); } -void DebugDrawEncoder::drawCylinder(const void* _from, const void* _to, float _radius) +void DebugDrawEncoder::drawCylinder(const bx::Vec3& _from, const bx::Vec3& _to, float _radius) { DEBUG_DRAW_ENCODER(drawCylinder(_from, _to, _radius, false) ); } -void DebugDrawEncoder::drawCapsule(const void* _from, const void* _to, float _radius) +void DebugDrawEncoder::drawCapsule(const bx::Vec3& _from, const bx::Vec3& _to, float _radius) { DEBUG_DRAW_ENCODER(drawCylinder(_from, _to, _radius, true) ); } @@ -2656,12 +2537,12 @@ void DebugDrawEncoder::drawAxis(float _x, float _y, float _z, float _len, Axis:: DEBUG_DRAW_ENCODER(drawAxis(_x, _y, _z, _len, _highlight, _thickness) ); } -void DebugDrawEncoder::drawGrid(const void* _normal, const void* _center, uint32_t _size, float _step) +void DebugDrawEncoder::drawGrid(const bx::Vec3& _normal, const bx::Vec3& _center, uint32_t _size, float _step) { DEBUG_DRAW_ENCODER(drawGrid(_normal, _center, _size, _step) ); } -void DebugDrawEncoder::drawGrid(Axis::Enum _axis, const void* _center, uint32_t _size, float _step) +void DebugDrawEncoder::drawGrid(Axis::Enum _axis, const bx::Vec3& _center, uint32_t _size, float _step) { DEBUG_DRAW_ENCODER(drawGrid(_axis, _center, _size, _step) ); } @@ -2670,3 +2551,14 @@ void DebugDrawEncoder::drawOrb(float _x, float _y, float _z, float _radius, Axis { DEBUG_DRAW_ENCODER(drawOrb(_x, _y, _z, _radius, _highlight) ); } + +DebugDrawEncoderScopePush::DebugDrawEncoderScopePush(DebugDrawEncoder& _dde) + : m_dde(_dde) +{ + m_dde.push(); +} + +DebugDrawEncoderScopePush::~DebugDrawEncoderScopePush() +{ + m_dde.pop(); +} diff --git a/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h b/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h index 9bc68ae19e3..7770ed15e51 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h +++ b/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h @@ -1,13 +1,14 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef DEBUGDRAW_H_HEADER_GUARD #define DEBUGDRAW_H_HEADER_GUARD #include <bx/allocator.h> -#include "../bounds.h" +#include <bx/bounds.h> +#include <bgfx/bgfx.h> struct Axis { @@ -50,7 +51,7 @@ GeometryHandle ddCreateGeometry(uint32_t _numVertices, const DdVertex* _vertices /// void ddDestroy(GeometryHandle _handle); - +/// struct DebugDrawEncoder { /// @@ -108,37 +109,40 @@ struct DebugDrawEncoder void moveTo(float _x, float _y, float _z = 0.0f); /// - void moveTo(const void* _pos); + void moveTo(const bx::Vec3& _pos); /// void lineTo(float _x, float _y, float _z = 0.0f); /// - void lineTo(const void* _pos); + void lineTo(const bx::Vec3& _pos); /// void close(); /// - void draw(const Aabb& _aabb); + void draw(const bx::Aabb& _aabb); + + /// + void draw(const bx::Cylinder& _cylinder); /// - void draw(const Cylinder& _cylinder); + void draw(const bx::Capsule& _capsule); /// - void draw(const Capsule& _capsule); + void draw(const bx::Disk& _disk); /// - void draw(const Disk& _disk); + void draw(const bx::Obb& _obb); /// - void draw(const Obb& _obb); + void draw(const bx::Sphere& _sphere); /// - void draw(const Sphere& _sphere); + void draw(const bx::Triangle& _triangle); /// - void draw(const Cone& _cone); + void draw(const bx::Cone& _cone); /// void draw(GeometryHandle _handle); @@ -156,37 +160,37 @@ struct DebugDrawEncoder void drawArc(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _degrees); /// - void drawCircle(const void* _normal, const void* _center, float _radius, float _weight = 0.0f); + void drawCircle(const bx::Vec3& _normal, const bx::Vec3& _center, float _radius, float _weight = 0.0f); /// void drawCircle(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _weight = 0.0f); /// - void drawQuad(const float* _normal, const float* _center, float _size); + void drawQuad(const bx::Vec3& _normal, const bx::Vec3& _center, float _size); /// - void drawQuad(SpriteHandle _handle, const float* _normal, const float* _center, float _size); + void drawQuad(SpriteHandle _handle, const bx::Vec3& _normal, const bx::Vec3& _center, float _size); /// - void drawQuad(bgfx::TextureHandle _handle, const float* _normal, const float* _center, float _size); + void drawQuad(bgfx::TextureHandle _handle, const bx::Vec3& _normal, const bx::Vec3& _center, float _size); /// - void drawCone(const void* _from, const void* _to, float _radius); + void drawCone(const bx::Vec3& _from, const bx::Vec3& _to, float _radius); /// - void drawCylinder(const void* _from, const void* _to, float _radius); + void drawCylinder(const bx::Vec3& _from, const bx::Vec3& _to, float _radius); /// - void drawCapsule(const void* _from, const void* _to, float _radius); + void drawCapsule(const bx::Vec3& _from, const bx::Vec3& _to, float _radius); /// void drawAxis(float _x, float _y, float _z, float _len = 1.0f, Axis::Enum _highlight = Axis::Count, float _thickness = 0.0f); /// - void drawGrid(const void* _normal, const void* _center, uint32_t _size = 20, float _step = 1.0f); + void drawGrid(const bx::Vec3& _normal, const bx::Vec3& _center, uint32_t _size = 20, float _step = 1.0f); /// - void drawGrid(Axis::Enum _axis, const void* _center, uint32_t _size = 20, float _step = 1.0f); + void drawGrid(Axis::Enum _axis, const bx::Vec3& _center, uint32_t _size = 20, float _step = 1.0f); /// void drawOrb(float _x, float _y, float _z, float _radius, Axis::Enum _highlight = Axis::Count); @@ -194,4 +198,18 @@ struct DebugDrawEncoder BX_ALIGN_DECL_CACHE_LINE(uint8_t) m_internal[50<<10]; }; +/// +class DebugDrawEncoderScopePush +{ +public: + /// + DebugDrawEncoderScopePush(DebugDrawEncoder& _dde); + + /// + ~DebugDrawEncoderScopePush(); + +private: + DebugDrawEncoder& m_dde; +}; + #endif // DEBUGDRAW_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.bin.h b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.bin.h index 3e0fac8f155..f6b71f580fc 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.bin.h @@ -1,120 +1,135 @@ -static const uint8_t fs_debugdraw_fill_glsl[104] = +static const uint8_t fs_debugdraw_fill_glsl[112] = { - 0x46, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH........u_par - 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x75, 0x6e, 0x69, // ams......J...uni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // form vec4 u_para - 0x6d, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // ms[4];.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // ().{. gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, // olor = u_params[ - 0x33, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 3];.}... + 0x46, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x4a, 0x00, 0x00, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, // .J...uniform vec + 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x76, // 4 u_params[4];.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x75, // gl_FragColor = u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _params[3];.}... }; -static const uint8_t fs_debugdraw_fill_spv[641] = +static const uint8_t fs_debugdraw_fill_essl[112] = { - 0x46, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH........u_par - 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x60, 0x02, 0x00, 0x00, 0x03, 0x02, 0x23, // ams......`.....# - 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........G...... - 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, // .GLSL.std.450... - 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... - 0x00, 0x2e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // .....main....... - 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // . ...$Global.... - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // . .......u_param - 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........"...... - 0x00, 0x05, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, // .........bgfx_Fr - 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, // agData0..G...... - 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, // .........H... .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, // .....#.......G.. - 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, // . .......G...".. - 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, // .".......G...... - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // .!.............. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // ..... .......... - 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, // ................ - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, // . .......+...... - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, // ................ - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, // ............. .. - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...!...... - 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, // . ...;...!...".. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // .........#... .. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, // .....+...#...$.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, // .....+...#...%.. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...&...... - 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ..... ...-...... - 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, // .....;...-...... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .....6.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, // ................ - 0x00, 0x41, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, // .A...&...E...".. - 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // .$...%...=...... - 0x00, 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, // .F...E...>...... - 0x00, 0x46, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, // .F.......8.....@ - 0x00, // . + 0x46, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x4a, 0x00, 0x00, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, // .J...uniform vec + 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x76, // 4 u_params[4];.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x75, // gl_FragColor = u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _params[3];.}... }; -static const uint8_t fs_debugdraw_fill_dx9[182] = +static const uint8_t fs_debugdraw_fill_spv[749] = { - 0x46, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH........u_par - 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, // ams............. - 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // ... .CTAB....S.. - 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, // ................ - 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .L...0.......... - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .<.......u_param - 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // s............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // .....ps_3_0.Micr - 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S - 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, // hader Compiler 1 - 0x30, 0x2e, 0x31, 0x00, 0xab, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x03, 0x00, 0xe4, // 0.1............. - 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // ...... + 0x46, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0xc4, 0x02, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, // .......#........ + 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, // .O.............. + 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, // .........GLSL.st + 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // d.450........... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, // .main....,...5.. + 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................ + 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ + 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x21, 0x00, 0x00, // .main........!.. + 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, // .UniformBlock... + 0x00, 0x06, 0x00, 0x06, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, // .....!.......u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x23, 0x00, 0x00, // arams........#.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, // .........,...gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, // FragCoord....... + 0x00, 0x35, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, // .5...bgfx_FragDa + 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // ta0..G... ...... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....H...!...... + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, // .#.......G...!.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, // .....G...#...".. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, // .....G...#...!.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, // .....G...,...... + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G...5...... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, // .............!.. + 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, // ................ + 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // . .............. + 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // ............. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, // .....+.......... + 0x00, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // ......... ...... + 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // .........!... .. + 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, // . ...".......!.. + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .;..."...#...... + 0x00, 0x15, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....$... ...... + 0x00, 0x2b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .+...$...%...... + 0x00, 0x2b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .+...$...&...... + 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // . ...'.......... + 0x00, 0x20, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // . ...+.......... + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .;...+...,...... + 0x00, 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // . ...4.......... + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .;...4...5...... + 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .6.............. + 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .............A.. + 0x00, 0x27, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, // .'...M...#...%.. + 0x00, 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, // .&...=.......N.. + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x35, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, // .M...>...5...N.. + 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, // .....8.....@. }; -static const uint8_t fs_debugdraw_fill_dx11[253] = +static const uint8_t fs_debugdraw_fill_dx9[190] = { - 0x46, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH........u_par - 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x44, 0x58, 0x42, // ams..........DXB - 0x43, 0xda, 0xfb, 0x8d, 0xd4, 0xad, 0x58, 0xef, 0x92, 0x13, 0x90, 0x07, 0xb7, 0x79, 0x4c, 0x38, // C.....X......yL8 - 0x95, 0x01, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, // .............,.. - 0x00, 0x60, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, // .`.......ISGN,.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......... ...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, // ................ - 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x4f, 0x53, 0x47, // .SV_POSITION.OSG - 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // N,........... .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, // .....SV_TARGET.. - 0xab, 0x53, 0x48, 0x44, 0x52, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, // .SHDR@...@...... - 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .Y...F. ........ - 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // .e.... ......6.. - 0x06, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, // .. ......F. .... - 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, // .....>.....@. + 0x46, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, // ........... .CTA + 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, // B....S.......... + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // .........L...0.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........<...... + 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, // .u_params....... + 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, // .............ps_ + 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, // 3_0.Microsoft (R + 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, // ) HLSL Shader Co + 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x01, 0x00, 0x00, // mpiler 10.1..... + 0x02, 0x00, 0x08, 0x0f, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // .............. }; -static const uint8_t fs_debugdraw_fill_mtl[425] = +static const uint8_t fs_debugdraw_fill_dx11[261] = { - 0x46, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH........u_par - 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x75, 0x73, 0x69, // ams..........usi - 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, // ng namespace met - 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // al;.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, // tlShaderInput {. - 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // };.struct xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, // lShaderOutput {. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // float4 gl_Frag - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // Color;.};.struct - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // iform {. float4 - 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, // u_params[4];.}; - 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // .fragment xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, // lShaderOutput xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, // atMtlMain (xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, // tlShaderInput _m - 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, // tl_i [[stage_in] - 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ], constant xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform - 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe - 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, // r(0)]]).{. xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // _mtl_o;. _mtl_o - 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // .gl_FragColor = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, // _mtl_u.u_params[ - 0x33, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, // 3];. return _mt - 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // l_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0xdc, 0x00, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xda, 0xfb, 0x8d, 0xd4, 0xad, 0x58, 0xef, // .....DXBC.....X. + 0x92, 0x13, 0x90, 0x07, 0xb7, 0x79, 0x4c, 0x38, 0x95, 0x01, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, // .....yL8........ + 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, // .....,...`...... + 0x00, 0x49, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // .ISGN,.......... + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // . .............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, // .........SV_POSI + 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // TION.OSGN,...... + 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..... .......... + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, // .............SV_ + 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x40, 0x00, 0x00, // TARGET...SHDR@.. + 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, // .@.......Y...F. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, // .........e.... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, // .....6.... ..... + 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, // .F. .........>.. + 0x01, 0x00, 0x00, 0x40, 0x00, // ...@. +}; +static const uint8_t fs_debugdraw_fill_mtl[400] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x67, 0x01, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, // .g...#include <m + 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, // etal_stdlib>.#in + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, // clude <simd/simd + 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, // .h>..using names + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, // pace metal;..str + 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // uct _Global.{. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // float4 u_param + 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // s[4];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, // .{. float4 bg + 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, // fx_FragData0 [[c + 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, // olor(0)]];.};..f + 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ragment xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ain_out xlatMtlM + 0x61, 0x69, 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, // ain(constant _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // obal& _mtl_u [[b + 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // uffer(0)]]).{. + 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, // xlatMtlMain_ou + 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t out = {};. + 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, // out.bgfx_FragDat + 0x61, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // a0 = _mtl_u.u_pa + 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, // rams[3];. ret + 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x40, 0x00, // urn out;.}....@. }; extern const uint8_t* fs_debugdraw_fill_pssl; extern const uint32_t fs_debugdraw_fill_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.sc b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.sc index f04d07e1c27..85f9bc7d09f 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill.sc @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.bin.h b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.bin.h index 4df9a09bcb9..e1e8b098539 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.bin.h @@ -1,269 +1,300 @@ -static const uint8_t fs_debugdraw_fill_lit_glsl[510] = +static const uint8_t fs_debugdraw_fill_lit_glsl[492] = { - 0x46, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH...V_...u_par - 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, // ams..........var - 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // ying highp vec3 - 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // v_world;.uniform - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x34, // vec4 u_params[4 - 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, // ];.void main (). - 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, // {. highp vec3 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1;. tmpva - 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x77, 0x6f, 0x72, // r_1 = dFdx(v_wor - 0x6c, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ld);. highp vec - 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 3 tmpvar_2;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, // pvar_2 = dFdy(v_ - 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, // world);. medium - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, // p vec4 tmpvar_3; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_3.xyz - 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // = (mix (u_params - 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // [2].xyz, u_param - 0x73, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // s[1].xyz, (. - 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, // (dot (normalize( - 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // (. (tmpvar_ - 0x31, 0x2e, 0x79, 0x7a, 0x78, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // 1.yzx * tmpvar_2 - 0x2e, 0x7a, 0x78, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x0a, 0x20, 0x20, // .zxy). - . - 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x78, // (tmpvar_1.zx - 0x79, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x7a, 0x78, // y * tmpvar_2.yzx - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ). )), u_para - 0x6d, 0x73, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, // ms[0].xyz) * 0.5 - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, // ). + 0.5)) * u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, // _params[3].xyz); - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_3.w = - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x2e, 0x77, 0x3b, 0x0a, 0x20, // u_params[3].w;. - 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // gl_FragColor = - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_3;.}... + 0x46, 0x53, 0x48, 0x0b, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH...V_.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0xc6, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // .....varying vec + 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // 3 v_world;.unifo + 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // rm vec4 u_params + 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, // [4];.void main ( + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ).{. vec3 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // r_1;. tmpvar_1 + 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x3b, // = dFdx(v_world); + 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // . vec3 tmpvar_2 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, // ;. tmpvar_2 = d + 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, // Fdy(v_world);. + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, // vec4 tmpvar_3;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_3.xyz = + 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x32, // (mix (u_params[2 + 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, // ].xyz, u_params[ + 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x64, // 1].xyz, (. (d + 0x6f, 0x74, 0x20, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x28, 0x0a, // ot (normalize((. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // (tmpvar_1. + 0x79, 0x7a, 0x78, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, // yzx * tmpvar_2.z + 0x78, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, // xy). - . + 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x78, 0x79, 0x20, // (tmpvar_1.zxy + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x7a, 0x78, 0x29, 0x0a, // * tmpvar_2.yzx). + 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // )), u_params + 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x0a, // [0].xyz) * 0.5). + 0x20, 0x20, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, // + 0.5)) * u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, // arams[3].xyz);. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x75, 0x5f, // tmpvar_3.w = u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, // params[3].w;. g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, // l_FragColor = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // pvar_3;.}... +}; +static const uint8_t fs_debugdraw_fill_lit_essl[518] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH...V_.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0xe0, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, // .....varying hig + 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, // hp vec3 v_world; + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, // .uniform vec4 u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // params[4];.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // main ().{. high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // p vec3 tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x46, // . tmpvar_1 = dF + 0x64, 0x78, 0x28, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, // dx(v_world);. h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec3 tmpvar + 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // _2;. tmpvar_2 = + 0x20, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x3b, 0x0a, // dFdy(v_world);. + 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, // mediump vec4 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_3;. tmpva + 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, // r_3.xyz = (mix ( + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, // u_params[2].xyz, + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, // u_params[1].xyz + 0x2c, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x6e, 0x6f, // , (. (dot (no + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // rmalize((. + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x7a, 0x78, 0x20, 0x2a, 0x20, // (tmpvar_1.yzx * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x78, 0x79, 0x29, 0x0a, 0x20, 0x20, // tmpvar_2.zxy). + 0x20, 0x20, 0x20, 0x2d, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, // - . (tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // var_1.zxy * tmpv + 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x7a, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, // ar_2.yzx). )) + 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, // , u_params[0].xy + 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x30, // z) * 0.5). + 0 + 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, // .5)) * u_params[ + 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 3].xyz);. tmpva + 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // r_3.w = u_params + 0x5b, 0x33, 0x5d, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // [3].w;. gl_Frag + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // Color = tmpvar_3 + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... }; -static const uint8_t fs_debugdraw_fill_lit_spv[1489] = +static const uint8_t fs_debugdraw_fill_lit_spv[1597] = { - 0x46, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH...V_...u_par - 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0xb0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, // ams............# - 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, // .GLSL.std.450... - 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... - 0x00, 0x79, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, // .y...|.......... - 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, // ................ - 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, // n........H...$Gl - 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // obal.....H...... - 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, // .u_params....... - 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // .J...........y.. - 0x00, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, // .v_view......|.. - 0x00, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x00, 0x05, 0x00, 0x06, 0x00, 0x87, 0x00, 0x00, // .v_world........ - 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, // .G...G.......... - 0x00, 0x48, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...H.......#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...H...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...J..."...... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...y.......... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G...|.......... - 0x00, 0x47, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.............. - 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!...... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // ............. .. - 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x15, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....E... ...... - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .+...E...F...... - 0x00, 0x1c, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, // .....G.......F.. - 0x00, 0x1e, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .....H...G... .. - 0x00, 0x49, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .I.......H...;.. - 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .I...J.......... - 0x00, 0x4b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .K... .......+.. - 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .K...L....... .. - 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .M...........+.. - 0x00, 0x4b, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .K...S.......+.. - 0x00, 0x4b, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .K...T.......+.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, // .....V......?+.. - 0x00, 0x4b, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .K...d.......+.. - 0x00, 0x45, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .E...o....... .. - 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .p........... .. - 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .x...........;.. - 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .x...y.......;.. - 0x00, 0x78, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .x...|....... .. - 0x00, 0x86, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;.. - 0x00, 0x86, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, // .............6.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .........=...... - 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .}...|.......... - 0x00, 0xa8, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .....}.......... - 0x00, 0xaa, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .....}.......... - 0x00, 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0xac, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, // .........D...... - 0x00, 0xab, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .....E.......A.. - 0x00, 0x4d, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, // .M.......J...L.. - 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, // .L...=.......... - 0x00, 0xb2, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, // .....O.......... - 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, // ................ - 0x00, 0xad, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // ................ - 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, // .........V...... - 0x00, 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, // .............V.. - 0x00, 0x50, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, // .P.............. - 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, // .........A...M.. - 0x00, 0xba, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // .....J...L...S.. + 0x46, 0x53, 0x48, 0x0b, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH...V_.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x14, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, // .......#........ + 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, // ................ + 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, // .........GLSL.st + 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // d.450........... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, // .main....z...~.. + 0x00, 0x81, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, // ................ + 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, // ................ + 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... + 0x00, 0x05, 0x00, 0x06, 0x00, 0x49, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // .....I...Uniform + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x49, 0x00, 0x00, // Block........I.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, // .....u_params... + 0x00, 0x05, 0x00, 0x03, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, // .....K.......... + 0x00, 0x7a, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, // .z...gl_FragCoor + 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x76, // d........~...v_v + 0x69, 0x65, 0x77, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x77, // iew..........v_w + 0x6f, 0x72, 0x6c, 0x64, 0x00, 0x05, 0x00, 0x06, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, // orld.........bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, // x_FragData0..G.. + 0x00, 0x48, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, // .H...........H.. + 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .I.......#...... + 0x00, 0x47, 0x00, 0x03, 0x00, 0x49, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .G...I.......G.. + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .K...".......G.. + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .K...!.......G.. + 0x00, 0x7a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .z...........G.. + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .~...........G.. + 0x00, 0x81, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .............G.. + 0x00, 0x8e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, // ................ + 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....!.......... + 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ......... ...... + 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ + 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // ................ + 0x00, 0x46, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .F... .......+.. + 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, // .F...G.......... + 0x00, 0x48, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, // .H.......G...... + 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, // .I...H... ...J.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, // .....I...;...J.. + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, // .K...........L.. + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, // . .......+...L.. + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, // .M....... ...N.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, // .........+...L.. + 0x00, 0x54, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, // .T.......+...L.. + 0x00, 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .U.......+...... + 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, // .W......?+...L.. + 0x00, 0x65, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, // .e.......+...F.. + 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, // .p....... ...q.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // ......... ...y.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, // .........;...y.. + 0x00, 0x7a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, // .z....... ...}.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, // .........;...}.. + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, // .~.......;...}.. + 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, // ......... ...... + 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, // .........;...... + 0x00, 0x8e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, // .........6...... + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, // ................ + 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, // .....=.......... + 0x00, 0x81, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, // ................ + 0x00, 0x82, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, // ................ + 0x00, 0x82, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, // ................ + 0x00, 0xb2, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, // ................ + 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, // .....D.......... + 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ + 0x00, 0x45, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, // .E.......A...N.. + 0x00, 0xba, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, // .....K...M...M.. 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, // .=.............. 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, // .O.............. 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x41, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, // .A...M.......J.. - 0x00, 0x4c, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, // .L...T...=...... - 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, // .........O...... - 0x00, 0xbf, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, // ................ - 0x00, 0xd9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, // ................ - 0x00, 0xbf, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, // .........A...M.. - 0x00, 0xc1, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, // .....J...L...d.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, // .=.............. - 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, // .O.............. - 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ - 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, // ................ - 0x00, 0xc3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, // .....A...p...... - 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, // .J...L...d...o.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, // .=.............. - 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, // .Q.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, // .....Q.......... - 0x00, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .........Q...... - 0x00, 0xcd, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, // .............P.. - 0x00, 0x14, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, // ................ - 0x00, 0xcd, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x87, 0x00, 0x00, // .........>...... - 0x00, 0xce, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, // .........8.....@ - 0x00, // . + 0x00, 0x94, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, // ................ + 0x00, 0xbc, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, // ................ + 0x00, 0xbd, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....W.......... + 0x00, 0xc0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, // .........W...P.. + 0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, // ................ + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, // .....A...N...... + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .K...M...T...=.. + 0x00, 0x14, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, // .............O.. + 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .............A.. + 0x00, 0x4e, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, // .N.......K...M.. + 0x00, 0x55, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, // .U...=.......... + 0x00, 0xc5, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, // .....O.......... + 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, // ................ + 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, // ................ + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, // .....A...N...... + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .K...M...e...=.. + 0x00, 0x14, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, // .............O.. + 0x00, 0x07, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, // ................ + 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, // ................ + 0x00, 0x41, 0x00, 0x07, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, // .A...q.......K.. + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .M...e...p...=.. + 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q.. + 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, // .Q.............. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, // .....Q.......... + 0x00, 0xcc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, // .........P...... + 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, // ................ + 0x00, 0xd2, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, // .....>.......... + 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, // .....8.....@. }; -static const uint8_t fs_debugdraw_fill_lit_dx9[402] = +static const uint8_t fs_debugdraw_fill_lit_dx9[410] = { - 0x46, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH...V_...u_par - 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x74, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, // ams......t...... - 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // ... .CTAB....S.. - 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, // ................ - 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .L...0.......... - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .<.......u_param - 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // s............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // .....ps_3_0.Micr - 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S - 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, // hader Compiler 1 - 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, // 0.1..Q.......... - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, // ?............... - 0x02, 0x05, 0x00, 0x01, 0x80, 0x00, 0x00, 0x07, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, // ................ - 0x80, 0x00, 0x00, 0xc9, 0x91, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, // ................ - 0x80, 0x5b, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xd2, 0x90, 0x05, 0x00, 0x00, // .[.............. - 0x03, 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd2, 0x80, 0x00, 0x00, 0xc9, 0x80, 0x02, 0x00, 0xe4, // ................ - 0x81, 0x24, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, // .$.............. - 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, // ................ - 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, // ................ - 0x03, 0x00, 0x00, 0x0e, 0x80, 0x01, 0x00, 0x90, 0x81, 0x01, 0x00, 0x90, 0xa0, 0x04, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x02, 0x00, 0xe4, // ................ - 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, // ................ - 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x80, 0x03, 0x00, 0xff, 0xa0, 0xff, 0xff, 0x00, // ................ - 0x00, 0x00, // .. + 0x46, 0x53, 0x48, 0x0b, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH...V_.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x74, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, // .t......... .CTA + 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, // B....S.......... + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // .........L...0.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........<...... + 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, // .u_params....... + 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, // .............ps_ + 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, // 3_0.Microsoft (R + 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, // ) HLSL Shader Co + 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, // mpiler 10.1..Q.. + 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........?....... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x00, 0x00, 0x07, // ................ + 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xc9, 0x91, 0x5c, 0x00, 0x00, // ................ + 0x02, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, // .........[...... + 0x80, 0x00, 0x00, 0xd2, 0x90, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, // ................ + 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd2, // ................ + 0x80, 0x00, 0x00, 0xc9, 0x80, 0x02, 0x00, 0xe4, 0x81, 0x24, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, // .........$...... + 0x80, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xe4, // ................ + 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, // ................ + 0x80, 0x04, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, // ................ + 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0e, 0x80, 0x01, 0x00, 0x90, // ................ + 0x81, 0x01, 0x00, 0x90, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, // ................ + 0x80, 0x00, 0x00, 0xf9, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x07, // ................ + 0x80, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, // ................ + 0x80, 0x03, 0x00, 0xff, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // .......... }; -static const uint8_t fs_debugdraw_fill_lit_dx11[721] = +static const uint8_t fs_debugdraw_fill_lit_dx11[729] = { - 0x46, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH...V_...u_par - 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, // ams..........DXB - 0x43, 0x59, 0x1c, 0xf9, 0xc6, 0x41, 0xb7, 0xae, 0xfd, 0xa5, 0xa5, 0x0c, 0x28, 0x25, 0x0d, 0x24, // CY...A......(%.$ - 0x29, 0x01, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, // )............,.. - 0x00, 0x9c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, // .........ISGNh.. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........P...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, // ................ - 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, // ................ - 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, // .SV_POSITION.TEX - 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, // COORD....OSGN,.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......... ...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, // ................ - 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, // .SV_TARGET...SHD - 0x52, 0xd8, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, // R....@...v...Y.. - 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, // .F. .........b.. - 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, // .r.......e.... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // .....h.......6.. - 0x06, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x14, 0x10, 0x80, 0x41, 0x00, 0x00, // .r...........A.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // .........r...... - 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, // .F...........r.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x26, 0x19, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, // .....&.......8.. - 0x07, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, // .r.......F...... - 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, // .F.......2...r.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x09, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x96, 0x04, 0x10, // .....&.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....F...A...... - 0x00, 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, // .............F.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, // .....F.......D.. - 0x05, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // .........:...... - 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, // .8...r.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, // .....F.......... - 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, // .........F...... - 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, // .F. .........2.. - 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // ..@.....?.@..... - 0x3f, 0x00, 0x00, 0x00, 0x0a, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x89, 0x20, // ?.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x89, 0x20, 0x80, 0x41, 0x00, 0x00, // ........... .A.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, // .........2...r.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....F. ........ - 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, // .8...r ......F.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .....F. ........ - 0x00, 0x36, 0x00, 0x00, 0x06, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, // .6.... ......:. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, // .........>.....@ - 0x00, // . + 0x46, 0x53, 0x48, 0x0b, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH...V_.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0xb0, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x59, 0x1c, 0xf9, 0xc6, 0x41, 0xb7, 0xae, // .....DXBCY...A.. + 0xfd, 0xa5, 0xa5, 0x0c, 0x28, 0x25, 0x0d, 0x24, 0x29, 0x01, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, // ....(%.$)....... + 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, // .....,.......... + 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // .ISGNh.......... + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .P.............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // ................ + 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, // .........SV_POSI + 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, // TION.TEXCOORD... + 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // .OSGN,.......... + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // . .............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, // .........SV_TARG + 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xd8, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, // ET...SHDR....@.. + 0x00, 0x76, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, // .v...Y...F. .... + 0x00, 0x04, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, // .....b...r...... + 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, // .e.... ......h.. + 0x02, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // .....6...r...... + 0x00, 0x96, 0x14, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, // .....A.......... + 0x05, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, // .r.......F...... + 0x00, 0x0b, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x26, 0x19, 0x10, // .....r.......&.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, // .....8...r...... + 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, // .F.......F...... + 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x09, 0x10, // .2...r.......&.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x96, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, // .............F.. + 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, // .A.............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, // .....F.......F.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // .....D.......... + 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, // .:.......8...r.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, // .............F.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, // .F.......F. .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // .....2.......... + 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........@..... + 0x3f, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x0a, 0xe2, 0x00, 0x10, // ?.@.....?....... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x89, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ....... ........ + 0x00, 0x06, 0x89, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ... .A.......... + 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, // .2...r.......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, // .............F. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x20, 0x10, // .........8...r . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, // .....F.......F. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x82, 0x20, 0x10, // .........6.... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .....:. ........ + 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, // .>.....@. }; -static const uint8_t fs_debugdraw_fill_lit_mtl[862] = +static const uint8_t fs_debugdraw_fill_lit_mtl[690] = { - 0x46, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x01, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH...V_...u_par - 0x61, 0x6d, 0x73, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x40, 0x03, 0x00, 0x00, 0x75, 0x73, 0x69, // ams......@...usi - 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, // ng namespace met - 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // al;.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, // tlShaderInput {. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, // float3 v_world - 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // {. float4 gl_Fr - 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, // agColor;.};.stru - 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // ct xlatMtlShader - 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // Uniform {. floa - 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, // t4 u_params[4];. - 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // };.fragment xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, // xlatMtlMain (xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, // tMtlShaderInput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, // _mtl_i [[stage_i - 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, // n]], constant xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, // atMtlShaderUnifo - 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, // rm& _mtl_u [[buf - 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, // fer(0)]]).{. xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // t _mtl_o;. floa - 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, // t3 tmpvar_1 = 0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x66, // . tmpvar_1 = df - 0x64, 0x78, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, // dx(_mtl_i.v_worl - 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, // d);. float3 tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // var_2 = 0;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x5f, 0x6d, // var_2 = dfdy(-_m - 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x3b, 0x0a, 0x20, // tl_i.v_world);. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // float4 tmpvar_3 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // = 0;. tmpvar_3 - 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x5f, 0x6d, 0x74, // .xyz = (mix (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x32, 0x5d, 0x2e, // l_u.u_params[2]. - 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // xyz, _mtl_u.u_pa - 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x0a, 0x20, // rams[1].xyz, (. - 0x20, 0x20, 0x20, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, // (dot (normali - 0x7a, 0x65, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // ze((. (tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x7a, 0x78, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ar_1.yzx * tmpva - 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x78, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, // r_2.zxy). - - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // . (tmpvar_1 - 0x2e, 0x7a, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // .zxy * tmpvar_2. - 0x79, 0x7a, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x6d, 0x74, // yzx). )), _mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x30, 0x5d, 0x2e, // l_u.u_params[0]. - 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2b, // xyz) * 0.5). + - 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // 0.5)) * _mtl_u. - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, // u_params[3].xyz) - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, // ;. tmpvar_3.w = - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // _mtl_u.u_params - 0x5b, 0x33, 0x5d, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // [3].w;. _mtl_o. - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, // gl_FragColor = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // mpvar_3;. retur - 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // n _mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH...V_.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3b, // _params........; + 0x01, 0x89, 0x02, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, // .....#include <m + 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, // etal_stdlib>.#in + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, // clude <simd/simd + 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, // .h>..using names + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, // pace metal;..str + 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // uct _Global.{. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // float4 u_param + 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // s[4];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, // .{. float4 bg + 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, // fx_FragData0 [[c + 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // olor(0)]];.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // truct xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n_in.{. float + 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // 3 v_world [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, // (locn1)]];.};..f + 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ragment xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ain_out xlatMtlM + 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // ain(xlatMtlMain_ + 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // in in [[stage_in + 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, // ]], constant _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // obal& _mtl_u [[b + 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // uffer(0)]]).{. + 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, // xlatMtlMain_ou + 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t out = {};. + 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, // out.bgfx_FragDat + 0x61, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x6d, 0x69, 0x78, 0x28, // a0 = float4(mix( + 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, // _mtl_u.u_params[ + 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // 2].xyz, _mtl_u.u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, // _params[1].xyz, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, // float3((dot(norm + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x28, 0x64, 0x66, 0x64, 0x78, // alize(cross(dfdx + 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x2c, 0x20, 0x64, 0x66, // (in.v_world), df + 0x64, 0x79, 0x28, 0x2d, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29, 0x29, // dy(-in.v_world)) + 0x29, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ), _mtl_u.u_para + 0x6d, 0x73, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, // ms[0].xyz) * 0.5 + 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ) + 0.5)) * _mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x2e, 0x78, // _u.u_params[3].x + 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, // yz, _mtl_u.u_par + 0x61, 0x6d, 0x73, 0x5b, 0x33, 0x5d, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // ams[3].w);. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, // eturn out;.}.... + 0x40, 0x00, // @. }; extern const uint8_t* fs_debugdraw_fill_lit_pssl; extern const uint32_t fs_debugdraw_fill_lit_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.sc b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.sc index a16bbe458e1..0ed3fa609e1 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_lit.sc @@ -1,8 +1,8 @@ $input v_view, v_world /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.bin.h b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.bin.h index 7d47b793184..75d60bda842 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.bin.h @@ -1,176 +1,192 @@ -static const uint8_t fs_debugdraw_fill_texture_glsl[253] = +static const uint8_t fs_debugdraw_fill_texture_glsl[204] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x76, // Color..........v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary - 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, // ing highp vec2 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, // orm sampler2D s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // texColor;.void m - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // ain ().{. lowp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // tmpvar_1 = text - 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // ure2D (s_texColo - 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x3b, // r, v_texcoord0); - 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // . gl_FragColor - 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, // = (tmpvar_1 * v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0);.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, // .......varying v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // rying vec2 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // coord0;.uniform + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // sampler2D s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // olor;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // ().{. gl_FragCo + 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, // lor = (texture2D + 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, // texcoord0) * v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // olor0);.}... }; -static const uint8_t fs_debugdraw_fill_texture_spv[1034] = +static const uint8_t fs_debugdraw_fill_texture_essl[261] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x03, 0x02, // FSH............. - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x10, 0x00, // ..K...O...Z..... - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, // in............Bg - 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, 0x00, 0x06, 0x00, // fxSampler2D..... - 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, // ..........m_samp - 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, // ler............. - 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..m_texture..... - 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // .. ...s_texColor - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......"...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... - 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..%...s_texColor - 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4b, 0x00, // Texture.......K. - 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... - 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ..O...v_texcoord - 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 0.....Z...bgfx_F - 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ragData0..G...%. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ..".......G...%. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4b, 0x00, // ..!.......G...K. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, // ..........G...O. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x00, // ..........G...Z. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. - 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ......... - 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, // ......;....... . - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ...!..... - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, // ......;...!...". - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...$..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......;...$...%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, // ..........1..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ...J......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...J...K..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // .. ...N......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...N...O..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ...Y......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...Y...Z..... - 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ..6............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......#..."...=. - 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, // ......&...%...P. - 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, // ......'...#...&. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..>... ...'...=. - 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......L...K...=. - 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......P...O...=. - 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, // ......t... ...Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........t..... - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x74, 0x00, // ..Q...........t. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x84, 0x00, // ......V...1..... - 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, // ..........W..... - 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x85, 0x00, // ..........P..... - 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x4c, 0x00, // ......x.......L. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>...Z...x..... - 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ..8....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // .......varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ighp vec4 v_colo + 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // r0;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec2 v_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, // d0;.uniform samp + 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ler2D s_texColor + 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // . lowp vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ + 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, // 1 = texture2D (s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // _texColor, v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // coord0);. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // agColor = (tmpva + 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, // r_1 * v_color0); + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; -static const uint8_t fs_debugdraw_fill_texture_dx9[240] = +static const uint8_t fs_debugdraw_fill_texture_spv[923] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, // Color0.......... - 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ...L...0........ - 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...<.......s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // 10.1........... - 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, // ...........B.... - 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ - 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ................ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // _texColor0...... + 0x02, 0x1a, 0x00, 0x70, 0x03, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, // ...p.....#...... + 0x00, 0x08, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, // ...........GLSL. + 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, // std.450......... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4f, // ...main....L...O + 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, // ...S...`........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, // ................ + 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x23, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // .......#...s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, // ColorSampler.... + 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // ...&...s_texColo + 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x4c, // rTexture.......L + 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // .......O...v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x53, 0x00, 0x00, 0x00, 0x76, // or0........S...v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x60, // _texcoord0.....` + 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...#...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...#...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...&...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G...&...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G...L........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...O........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G...S........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...`........ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ..."...........; + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ..."...#....... + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...%...........; + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...%...&........ + 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4b, // ...2....... ...K + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4b, // ...........;...K + 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4b, // ...L.......;...K + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x52, // ...O....... ...R + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x52, // ...........;...R + 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5f, // ...S....... ..._ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5f, // ...........;..._ + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, // ...`.......6.... + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x24, // .......=.......$ + 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x27, // ...#...=.......' + 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x50, // ...&...=.......P + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x54, // ...O...=.......T + 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x32, 0x00, 0x00, 0x00, 0x90, // ...S...V...2.... + 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, // ...'...$...W.... + 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x85, // ...........T.... + 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x50, // ...............P + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xfd, // ...>...`........ + 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ...8....... }; -static const uint8_t fs_debugdraw_fill_texture_dx11[403] = +static const uint8_t fs_debugdraw_fill_texture_dx9[248] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x70, 0x01, 0x00, 0x00, 0x44, // Color0.....p...D - 0x58, 0x42, 0x43, 0xbe, 0x78, 0xe7, 0xa5, 0x19, 0x0c, 0x70, 0xeb, 0x4c, 0xb1, 0xac, 0x1f, 0x16, // XBC.x....p.L.... - 0x84, 0xe9, 0x97, 0x01, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // .......p......., - 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, // ...........ISGNl - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, // ...........b.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C - 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, // OLOR.TEXCOORD..O - 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET - 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x94, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x25, // ...SHDR....@...% - 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, // ...Z....`......X - 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, // ....p......UU..b - 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, // ...........b...2 - 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...h.......E.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ~.......`......8 - 0x00, 0x00, 0x07, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, // .... ......F.... - 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, // ...F.......>.... - 0x00, 0x00, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, // ............. .C + 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, // TAB....S........ + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, // ...........L...0 + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, // ...........<.... + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, // ...............p + 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, // s_3_0.Microsoft + 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, // (R) HLSL Shader + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, // Compiler 10.1... + 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, // ................ + 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, // ................ + 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, // ...B............ + 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ........ }; -static const uint8_t fs_debugdraw_fill_texture_mtl[590] = +static const uint8_t fs_debugdraw_fill_texture_dx11[432] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x3f, 0x02, 0x00, 0x00, 0x75, 0x73, // FSH.......?...us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, // r0;. float2 v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // excoord0;.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // rOutput {. floa - 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // t4 gl_FragColor; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // {.};.fragment xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, // uffer(0)]]. , - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texture2d<float - 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, // > s_texColor [[t - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, // exture(0)]], sam - 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, // pler _mtlsmp_s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // exColor [[sample - 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, // r(0)]]).{. xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // _mtl_o;. _mtl_o - 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // .gl_FragColor = - 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, // (s_texColor.samp - 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, // le(_mtlsmp_s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, // Color, (float2)( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _mtl_i.v_texcoor - 0x64, 0x30, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, // d0)) * _mtl_i.v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // color0);. retur - 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // n _mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, // ....s_texColor0. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........p...DXBC + 0xbe, 0x78, 0xe7, 0xa5, 0x19, 0x0c, 0x70, 0xeb, 0x4c, 0xb1, 0xac, 0x1f, 0x16, 0x84, 0xe9, 0x97, // .x....p.L....... + 0x01, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....p.......,... + 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // ........ISGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, // R.TEXCOORD..OSGN + 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ,........... ... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, // ....SV_TARGET... + 0x53, 0x48, 0x44, 0x52, 0x94, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // SHDR....@...%... + 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, // Z....`......X... + 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, // .p......UU..b... + 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // ........b...2... + 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, // h.......E....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, // ....F.......F~.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // .....`......8... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // . ......F....... + 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // F.......>....... +}; +static const uint8_t fs_debugdraw_fill_texture_mtl[644] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x23, // r..........!...# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // etal;..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, // float4 bgfx_ + 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, // FragData0 [[colo + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // r(0)]];.};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // ct xlatMtlMain_i + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, // n.{. float4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, // _color0 [[user(l + 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ocn0)]];. flo + 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // at2 v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // .};..fragment xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, // atMtlMain_out xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // atMtlMain(xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, // lMain_in in [[st + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // age_in]], textur + 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // e2d<float> s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, // Color [[texture( + 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, // 0)]], sampler s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // texColorSampler + 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, // [[sampler(0)]]). + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // {. xlatMtlMai + 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, // n_out out = {};. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, // out.bgfx_Fra + 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // gData0 = s_texCo + 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, // lor.sample(s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, // ColorSampler, in + 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x20, 0x2a, 0x20, // .v_texcoord0) * + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // in.v_color0;. + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // return out;.}.. + 0x00, 0x00, 0x20, 0x00, // .. . }; extern const uint8_t* fs_debugdraw_fill_texture_pssl; extern const uint32_t fs_debugdraw_fill_texture_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.sc b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.sc index 7a1f5b5ecb8..67adb209f2d 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_fill_texture.sc @@ -1,8 +1,8 @@ $input v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.bin.h b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.bin.h index d7390a788fb..24c07f8d7e6 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.bin.h @@ -1,101 +1,113 @@ -static const uint8_t fs_debugdraw_lines_glsl[89] = +static const uint8_t fs_debugdraw_lines_glsl[87] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x76, 0x61, // FSH....I..J...va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 - 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // v_color0;.void - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, // main ().{. gl_F - 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ragColor = v_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0;.}... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, // FSH....I......D. + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // _color0;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // in ().{. gl_Fra + 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // gColor = v_color + 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0;.}... }; -static const uint8_t fs_debugdraw_lines_spv[402] = +static const uint8_t fs_debugdraw_lines_essl[93] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x02, // FSH....I........ - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, // #.........+..... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, // ..!...*......... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, // ................ - 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ......!...v_colo - 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x62, 0x67, // r0........*...bg + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, // FSH....I......J. + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ..varying highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, // gl_FragColor = v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... +}; +static const uint8_t fs_debugdraw_lines_spv[466] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x01, // FSH....I........ + 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x31, 0x00, // ....#.........1. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................ + 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4 + 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50.............. + 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x30, 0x00, // in...."...%...0. + 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x22, 0x00, // ..main........". + 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, // ..gl_FragCoord.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ......%...v_colo + 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x62, 0x67, // r0........0...bg 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, // fx_FragData0..G. - 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..!...........G. - 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, // ..*............. + 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, // .."...........G. + 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..%...........G. + 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, // ..0............. 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ......!......... 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, // .......... ..... 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // .. ...........;. - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .. ...!....... . - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..)...........;. - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ..)...*.......6. + 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..!...........;. + 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..!...".......;. + 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..!...%....... . + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ../...........;. + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ../...0.......6. 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..........=..... - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x2a, 0x00, // .."...!...>...*. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..".......8..... + 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x30, 0x00, // ..&...%...>...0. + 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..&.......8..... 0x00, 0x00, // .. }; -static const uint8_t fs_debugdraw_lines_dx9[131] = +static const uint8_t fs_debugdraw_lines_dx9[135] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x03, // FSH....I..t..... - 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, // ......CTAB....#. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......ps_3_0.Mic - 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler - 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, // 10.1............ - 0x0f, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, // ................ - 0x00, 0x00, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, // FSH....I......t. + 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ..........CTAB.. + 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..#............. + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 + 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H + 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi + 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ler 10.1........ + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, // ................ + 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... }; -static const uint8_t fs_debugdraw_lines_dx11[262] = +static const uint8_t fs_debugdraw_lines_dx11[266] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x44, 0x58, // FSH....I......DX - 0x42, 0x43, 0xa6, 0x7f, 0x08, 0xe2, 0x95, 0xbd, 0x5f, 0xa3, 0x3f, 0x5b, 0x58, 0x8e, 0x54, 0x0f, // BC......_.?[X.T. - 0x89, 0x67, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // .g............,. - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, // ..........ISGNL. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........8..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..D............. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, // ..........SV_POS - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x4f, 0x53, // ITION.COLOR...OS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, // ......SV_TARGET. - 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x38, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0e, 0x00, // ..SHDR8...@..... - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...........e. - 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, // ... ......6.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......F.......>. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, // FSH....I........ + 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xa6, 0x7f, 0x08, 0xe2, 0x95, 0xbd, 0x5f, 0xa3, 0x3f, 0x5b, // ..DXBC......_.?[ + 0x58, 0x8e, 0x54, 0x0f, 0x89, 0x67, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x03, 0x00, // X.T..g.......... + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS + 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, // GNL...........8. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......D......... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, // ..............SV + 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, // _POSITION.COLOR. + 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR + 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x38, 0x00, 0x00, 0x00, 0x40, 0x00, // GET...SHDR8...@. + 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, // ......b......... + 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, // ..e.... ......6. + 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, // ... ......F..... + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ..>....... }; -static const uint8_t fs_debugdraw_lines_mtl[404] = +static const uint8_t fs_debugdraw_lines_mtl[386] = { - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x75, 0x73, // FSH....I......us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // r0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // t {. float4 gl_ - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // FragColor;.};.st - 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad - 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, // erUniform {.};.f - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // ragment xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // haderOutput xlat - 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // MtlMain (xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ShaderInput _mtl - 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, // _i [[stage_in]], - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // constant xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, // lShaderUniform& - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, // _mtl_u [[buffer( - 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // 0)]]).{. xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, // lShaderOutput _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // tl_o;. _mtl_o.g - 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // l_FragColor = _m - 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, // tl_i.v_color0;. - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, // return _mtl_o;. - 0x7d, 0x0a, 0x0a, 0x00, // }... + 0x46, 0x53, 0x48, 0x0b, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x01, // FSH....I......l. + 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, // ..#include <meta + 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, // l_stdlib>.#inclu + 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, // de <simd/simd.h> + 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac + 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // e metal;..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, // .{. float4 bg + 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, // fx_FragData0 [[c + 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // olor(0)]];.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // truct xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n_in.{. float + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, // 4 v_color0 [[use + 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // r(locn0)]];.};.. + 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // fragment xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // Main_out xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // Main(xlatMtlMain + 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, // _in in [[stage_i + 0x6e, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // n]]).{. xlatM + 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, // tlMain_out out = + 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, // {};. out.bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, // x_FragData0 = in + 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // .v_color0;. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, // eturn out;.}.... + 0x00, 0x00, // .. }; extern const uint8_t* fs_debugdraw_lines_pssl; extern const uint32_t fs_debugdraw_lines_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.sc b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.sc index 0b13177a98c..1e1a402026f 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines.sc @@ -1,8 +1,8 @@ $input v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.bin.h b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.bin.h index ab91393a414..b09a4b6cf75 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.bin.h @@ -1,158 +1,178 @@ -static const uint8_t fs_debugdraw_lines_stipple_glsl[235] = +static const uint8_t fs_debugdraw_lines_stipple_glsl[221] = { - 0x46, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x76, 0x61, // FSH...Z.......va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 - 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi - 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, // ng highp float v - 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // _stipple;.void m - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // ain ().{. highp - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // float tmpvar_1; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x66, // . tmpvar_1 = (f - 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6d, 0x6f, 0x64, 0x20, 0x28, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, // loat(mod (v_stip - 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // ple, 0.25)));. - 0x69, 0x66, 0x20, 0x28, 0x28, 0x30, 0x2e, 0x31, 0x32, 0x35, 0x20, 0x3c, 0x20, 0x74, 0x6d, 0x70, // if ((0.125 < tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, // var_1)) {. di - 0x73, 0x63, 0x61, 0x72, 0x64, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // scard;. };. gl - 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, // _FragColor = v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // olor0;.}... + 0x46, 0x53, 0x48, 0x0b, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, // FSH...Z......... + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color0;.varying + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, // float v_stipple + 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . float tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // 1;. tmpvar_1 = + 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6d, 0x6f, 0x64, 0x20, 0x28, 0x76, 0x5f, 0x73, 0x74, // (float(mod (v_st + 0x69, 0x70, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x29, 0x29, 0x3b, 0x0a, // ipple, 0.25)));. + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x30, 0x2e, 0x31, 0x32, 0x35, 0x20, 0x3c, 0x20, 0x74, // if ((0.125 < t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // mpvar_1)) {. + 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // discard;. };. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, // gl_FragColor = v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... }; -static const uint8_t fs_debugdraw_lines_stipple_spv[698] = +static const uint8_t fs_debugdraw_lines_stipple_essl[239] = { - 0x46, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x03, 0x02, // FSH...Z......... - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, // #.........}..... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x10, 0x00, // ..<...@...K..... - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x76, 0x5f, // in........<...v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x40, 0x00, // color0........@. + 0x46, 0x53, 0x48, 0x0b, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, // FSH...Z......... + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ..varying highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, // arying highp flo + 0x61, 0x74, 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x76, 0x6f, // at v_stipple;.vo + 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, // id main ().{. h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ighp float tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // r_1;. tmpvar_1 + 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6d, 0x6f, 0x64, 0x20, 0x28, 0x76, 0x5f, // = (float(mod (v_ + 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x29, 0x29, // stipple, 0.25))) + 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x30, 0x2e, 0x31, 0x32, 0x35, 0x20, 0x3c, // ;. if ((0.125 < + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, // tmpvar_1)) {. + 0x20, 0x20, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // discard;. };. + 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, // gl_FragColor = + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // v_color0;.}... +}; +static const uint8_t fs_debugdraw_lines_stipple_spv[762] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x02, // FSH...Z......... + 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x89, 0x00, // ....#........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................ + 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4 + 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50.............. + 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x44, 0x00, // in....=...@...D. + 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, // ..Q............. + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... + 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, // ..=...gl_FragCoo + 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x76, 0x5f, // rd........@...v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x44, 0x00, // color0........D. 0x00, 0x00, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_stipple..... - 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ..K...bgfx_FragD - 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, // ata0..G...<..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...@..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...K..... + 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ..Q...bgfx_FragD + 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x0b, 0x00, // ata0..G...=..... + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...@..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...D..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...Q..... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, // ................ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x06, 0x00, // .. ............. - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2e, 0x00, // ......+......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, // .....>+......./. - 0x00, 0x00, 0x00, 0x00, 0x80, 0x3e, 0x14, 0x00, 0x02, 0x00, 0x34, 0x00, 0x00, 0x00, 0x20, 0x00, // .....>....4... . - 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..;...........;. - 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..;...<....... . - 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..?...........;. - 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..?...@....... . - 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..J...........;. - 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..J...K.......+. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x36, 0x00, // ......|......@6. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, // ......+......./. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, // .....>+.......0. + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3e, 0x14, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x00, 0x20, 0x00, // .....>....5... . + 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..<...........;. + 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..<...=.......;. + 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..<...@....... . + 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..C...........;. + 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..C...D....... . + 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..P...........;. + 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..P...Q.......+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x36, 0x00, // .............@6. 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... - 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..=...<...=..... - 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ..A...@......... - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x0c, 0x00, // ..w...A...|..... - 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ......x......... - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, // ..w...........y. - 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, // ../...x......... - 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0xb8, 0x00, // ..z...A...y..... - 0x05, 0x00, 0x34, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x7a, 0x00, // ..4...g.......z. - 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, // ......h......... - 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0xf8, 0x00, // ..g...i...h..... - 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x68, 0x00, // ..i...........h. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>...K...=..... + 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..A...@...=..... + 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, // ..E...D......... + 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0c, 0x00, // ......E......... + 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ................ + 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ + 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, // ..0............. + 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0xb8, 0x00, // ......E......... + 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x86, 0x00, // ..5...q.../..... + 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, // ......s......... + 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0xf8, 0x00, // ..q...r...s..... + 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x73, 0x00, // ..r...........s. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>...Q...A..... 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ..8....... }; -static const uint8_t fs_debugdraw_lines_stipple_dx9[299] = +static const uint8_t fs_debugdraw_lines_stipple_dx9[303] = { - 0x46, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x03, // FSH...Z......... - 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, // ......CTAB....#. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......ps_3_0.Mic - 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler - 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0x00, // 10.1..Q......... - 0x80, 0x40, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // .@...>...>....Q. - 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ - 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x01, 0x90, 0x05, 0x00, // ................ - 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x13, 0x00, // ................ - 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x01, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U........... - 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0xa1, 0x01, 0x00, 0x00, 0x90, 0x02, 0x00, // ........U....... - 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0xaa, 0xa0, 0x58, 0x00, // ..............X. - 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, // ................ - 0x55, 0xa0, 0x41, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, // U.A............. - 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ........... + 0x46, 0x53, 0x48, 0x0b, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, // FSH...Z......... + 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ..........CTAB.. + 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..#............. + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0 + 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H + 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi + 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, // ler 10.1..Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, // .....@...>...>.. + 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ..Q............. + 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ................ + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ + 0x01, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, // ................ + 0x00, 0x90, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, // ........U....... + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0xa1, 0x01, 0x00, // ............U... + 0x00, 0x90, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, // ................ + 0xaa, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, // ..X............. + 0x00, 0xa0, 0x01, 0x00, 0x55, 0xa0, 0x41, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, // ....U.A......... + 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............... }; -static const uint8_t fs_debugdraw_lines_stipple_dx11[442] = +static const uint8_t fs_debugdraw_lines_stipple_dx11[446] = { - 0x46, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x44, 0x58, // FSH...Z.......DX - 0x42, 0x43, 0x6f, 0x8f, 0x64, 0x39, 0xd9, 0xef, 0xc7, 0x09, 0x59, 0xdc, 0x77, 0x5a, 0xe8, 0x91, // BCo.d9....Y.wZ.. - 0x4c, 0x16, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // L.............,. - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, // ..........ISGNl. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........P..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........b..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, // ................ - 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, // ..SV_POSITION.CO - 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, // LOR.TEXCOORD..OS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, // ......SV_TARGET. - 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xcc, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x33, 0x00, // ..SHDR....@...3. - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, // ..b...........b. - 0x00, 0x03, 0x12, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..........e.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, // ......h.......8. - 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x10, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x41, 0x00, 0x00, 0x05, 0x12, 0x00, // ...@.....@A..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // ..............2. - 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, 0x41, 0x00, // ..............A. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3e, 0x0a, 0x10, // .......@.....>.. - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, // ......1......... - 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ...@.....>...... - 0x00, 0x00, 0x0d, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, // ..............6. - 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, // ... ......F..... - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ..>....... + 0x46, 0x53, 0x48, 0x0b, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, // FSH...Z......... + 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x6f, 0x8f, 0x64, 0x39, 0xd9, 0xef, 0xc7, 0x09, 0x59, 0xdc, // ..DXBCo.d9....Y. + 0x77, 0x5a, 0xe8, 0x91, 0x4c, 0x16, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x03, 0x00, // wZ..L........... + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS + 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, // ..............b. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO + 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD + 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR + 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xcc, 0x00, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. + 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, // ..3...b......... + 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x12, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...........e. + 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, // ... ......h..... + 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, // ..8............. + 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x41, 0x00, // .......@.....@A. + 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ..2............. + 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // ..A........@.... + 0x80, 0x3e, 0x0a, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x07, 0x12, 0x00, // .>........1..... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0a, 0x00, // .......@.....>.. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, // ..6.... ......F. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ......>....... }; -static const uint8_t fs_debugdraw_lines_stipple_mtl[555] = +static const uint8_t fs_debugdraw_lines_stipple_mtl[532] = { - 0x46, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x75, 0x73, // FSH...Z.......us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x5f, 0x73, 0x74, // r0;. float v_st - 0x69, 0x70, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // ipple;.};.struct - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // tput {. float4 - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, // gl_FragColor;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x7d, // haderUniform {.} - 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // ;.fragment xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_1 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, // tmpvar_1 = (flo - 0x61, 0x74, 0x28, 0x66, 0x6d, 0x6f, 0x64, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // at(fmod (_mtl_i. - 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, // v_stipple, 0.25) - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x30, 0x2e, 0x31, 0x32, 0x35, // ));. if ((0.125 - 0x20, 0x3c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x20, 0x7b, 0x0a, // < tmpvar_1)) {. - 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x72, 0x61, 0x67, // discard_frag - 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // ment();. };. _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // mtl_o.gl_FragCol - 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // or = _mtl_i.v_co - 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, // lor0;. return _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0xe7, 0x1a, 0x5a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, // FSH...Z......... + 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, // ..#include <meta + 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, // l_stdlib>.#inclu + 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, // de <simd/simd.h> + 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac + 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // e metal;..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, // .{. float4 bg + 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, // fx_FragData0 [[c + 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // olor(0)]];.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // truct xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n_in.{. float + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, // 4 v_color0 [[use + 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // r(locn0)]];. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, // float v_stipple + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // .};..fragment xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, // atMtlMain_out xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // atMtlMain(xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, // lMain_in in [[st + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // age_in]]).{. + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, // xlatMtlMain_out + 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // out = {};. if + 0x20, 0x28, 0x30, 0x2e, 0x31, 0x32, 0x35, 0x20, 0x3c, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, // (0.125 < (in.v_ + 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x2d, 0x20, 0x28, 0x30, 0x2e, 0x32, 0x35, 0x20, // stipple - (0.25 + 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x73, 0x74, 0x69, // * floor(in.v_sti + 0x70, 0x70, 0x6c, 0x65, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x0a, 0x20, // pple * 4.0)))). + 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73, // {. dis + 0x63, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x29, 0x3b, // card_fragment(); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, // . }. out.b + 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, // gfx_FragData0 = + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // in.v_color0;. + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // return out;.}.. + 0x00, 0x00, 0x00, 0x00, // .... }; extern const uint8_t* fs_debugdraw_lines_stipple_pssl; extern const uint32_t fs_debugdraw_lines_stipple_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.sc b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.sc index 96e4b22c856..e4881721409 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/fs_debugdraw_lines_stipple.sc @@ -1,8 +1,8 @@ $input v_color0, v_stipple /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/makefile b/3rdparty/bgfx/examples/common/debugdraw/makefile index 72fbea92955..554063e5829 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/makefile +++ b/3rdparty/bgfx/examples/common/debugdraw/makefile @@ -1,9 +1,9 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # -include ../../../../bgfx/scripts/shader-embeded.mk +include ../../../scripts/shader-embeded.mk rebuild: @make -s --no-print-directory clean all diff --git a/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc b/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc index 62da7148639..8f44b077df7 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc @@ -1,5 +1,5 @@ vec3 a_position : POSITION; -ivec4 a_indices : BLENDINDICES; +uvec4 a_indices : BLENDINDICES; vec4 a_color0 : COLOR0; vec2 a_texcoord0 : TEXCOORD0; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h index fe3404cec49..111fc9ffc5a 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h @@ -1,235 +1,258 @@ -static const uint8_t vs_debugdraw_fill_glsl[329] = +static const uint8_t vs_debugdraw_fill_glsl[304] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo - 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, // del. .. .....att - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec - 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, 0x61, 0x74, 0x74, // 4 a_indices;.att - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec - 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x75, 0x6e, // 3 a_position;.un - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, // iform highp mat4 - 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // u_viewProj;.uni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode - 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // l[32];.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz - 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, // = a_position;. - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, // gl_Position = (u - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _viewProj * (u_m - 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // odel[int(a_indic - 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // es.x)] * tmpvar_ - 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 1));.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, // ....u_model. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x20, 0x75, 0x76, 0x65, 0x63, // .........in uvec + 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, 0x69, 0x6e, 0x20, // 4 a_indices;.in + 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // vec3 a_position; + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // .uniform mat4 u_ + 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // viewProj;.unifor + 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, // m mat4 u_model[3 + 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, // 2];.void main () + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // .{. vec4 tmpvar + 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, // _1;. tmpvar_1.w + 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = 1.0;. tmpvar + 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // _1.xyz = a_posit + 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // ion;. gl_Positi + 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // on = (u_viewProj + 0x20, 0x2a, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, // * (u_model[int( + 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, // a_indices.x)] * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_1));.}... }; -static const uint8_t vs_debugdraw_fill_spv[1265] = +static const uint8_t vs_debugdraw_fill_essl[372] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x04, 0x20, 0x40, 0x00, 0x80, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // el. @....u_viewP - 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0xbc, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, // roj............# - 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........|...... - 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, // .GLSL.std.450... - 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // .>...B...E...... - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, // .main........... - 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, // .$Global........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // .....u_viewProj. - 0x00, 0x06, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, // .............u_m - 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // odel.....!...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // .....>...a_indic - 0x65, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x42, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, // es.......B...a_p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x00, // osition......E.. - 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // .@entryPointOutp - 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ut.gl_Position.. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, // .G...........@.. - 0x00, 0x48, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .H.............. - 0x00, 0x48, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...........#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....H.......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, // .........H...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, // .........H...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, // .....#...@...H.. - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, // ................ - 0x00, 0x47, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .G...........G.. - 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .!...".......G.. - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .>...........G.. - 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .B...........G.. - 0x00, 0x45, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, // .E.............. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....!.......... - 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ......... ...... - 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x16, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ......... ...... - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .............+.. - 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, 0x04, // ............?... - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // ................ - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // ..... .......+.. - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, // ......... ...... - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................ - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // . ...........;.. - 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // . ...!.......+.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ....."....... .. - 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .'...........+.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .....-....... .. - 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .=...........;.. - 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .=...>....... .. - 0x00, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .A...........;.. - 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .A...B....... .. - 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .D...........;.. - 0x00, 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, // .D...E.......6.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .........=...... - 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, // .?...>...=...... - 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, // .C...B...Q...... - 0x00, 0x5c, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .....C.......Q.. - 0x00, 0x09, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....]...C...... - 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, // .Q.......^...C.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, // .....P......._.. - 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, // .....]...^...... - 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, // .Q.......a...?.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, // .....A...'...b.. - 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .!..."...a...=.. - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, // .....c...b...... - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, // .....d..._...c.. - 0x00, 0x41, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, // .A...'...f...!.. - 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, // .-...=.......g.. - 0x00, 0x66, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, // .f...........h.. - 0x00, 0x64, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, // .d...g...Q...... - 0x00, 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, // .k...h.......... - 0x00, 0x09, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, // .....l...k...R.. - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, // .....{...l...h.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, // .....>...E...{.. - 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x40, // .....8.........@ - 0x08, // . + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, // ....u_model. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, // .....:...precisi + 0x6f, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x3b, 0x0a, 0x70, 0x72, // on highp int;.pr + 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, // ecision highp fl + 0x6f, 0x61, 0x74, 0x3b, 0x0a, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x75, 0x76, // oat;.in highp uv + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, 0x69, // ec4 a_indices;.i + 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, // n highp vec3 a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // osition;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, // highp mat4 u_vi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // ewProj;.uniform + 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, // mat4 u_model[32] + 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ + 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // . highp vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_1;. tmpvar + 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // _1.w = 1.0;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, // pvar_1.xyz = a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // osition;. gl_Po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // sition = (u_view + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // Proj * (u_model[ + 0x69, 0x6e, 0x74, 0x28, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x29, // int(a_indices.x) + 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x3b, 0x0a, // ] * tmpvar_1));. + 0x7d, 0x0a, 0x0a, 0x00, // }... +}; +static const uint8_t vs_debugdraw_fill_spv[1257] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model..@....... + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, // .u_viewProj..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, // ...........#.... + 0x00, 0x0a, 0x00, 0x08, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, // .....f.......... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, // .............GLS + 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, // L.std.450....... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, // .....main....9.. + 0x00, 0x3d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, // .=...@.......... + 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, // n............Uni + 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, // formBlock....... + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // .........u_viewP + 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // roj............. + 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, // .u_model..... .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x69, // .........9...a_i + 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, // ndices.......=.. + 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, // .a_position..... + 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // .@...@entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // Output.gl_Positi + 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // on...G.......... + 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .@...H.......... + 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....H.......... + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, // .#.......H...... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, // .............H.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, // .............H.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, // .........#...@.. + 0x00, 0x48, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // .H.............. + 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G.......... + 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G... ..."...... + 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G... ...!...... + 0x00, 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...9.......... + 0x00, 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G...=.......... + 0x00, 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...@.......... + 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!...... + 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // ............. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // ............. .. + 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x00, 0x17, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // .+.............. + 0x3f, 0x18, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ?............... + 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // .+........... .. + 0x00, 0x1c, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, // ................ + 0x00, 0x1e, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, // ................ + 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // . .............. + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .;....... ...... + 0x00, 0x15, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....!... ...... + 0x00, 0x2b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .+...!..."...... + 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, // . ...(.......... + 0x00, 0x2b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .+...!.......... + 0x00, 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // . ...8.......... + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .;...8...9...... + 0x00, 0x20, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, // . ...<.......... + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .;...<...=...... + 0x00, 0x20, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, // . ...?.......... + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .;...?...@...... + 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .6.............. + 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .............=.. + 0x00, 0x07, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .....:...9...=.. + 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .....>...=...Q.. + 0x00, 0x09, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....X...>...... + 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, // .Q.......Y...>.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, // .....Q.......Z.. + 0x00, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x00, // .>.......P...... + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, // .[...X...Y...Z.. + 0x00, 0x16, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, // .....Q.......].. + 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, // .:.......|...!.. + 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x28, 0x00, 0x00, // .^...]...A...(.. + 0x00, 0x5f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, // ._... ..."...^.. + 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, // .=.......`..._.. + 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, // .........a...[.. + 0x00, 0x60, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, // .`...A...(...c.. + 0x00, 0x20, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, // . .......=...... + 0x00, 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, // .d...c.......... + 0x00, 0x65, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .e...a...d...>.. + 0x00, 0x40, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, // .@...e.......8.. + 0x00, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x40, 0x08, // .......@. }; -static const uint8_t vs_debugdraw_fill_dx9[482] = +static const uint8_t vs_debugdraw_fill_dx9[494] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // el. .....u_viewP - 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x80, 0x00, 0x04, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, // roj............. - 0xff, 0xfe, 0xff, 0x2b, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, // ...+.CTAB....... - 0x00, 0x00, 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, // ................ - 0x00, 0x78, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // .x...D.......... - 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, // .L.............. - 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, // .....h.......u_m - 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, // odel......... .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // .....u_viewProj. - 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, // .vs_3_0.Microsof - 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, // t (R) HLSL Shade - 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, // r Compiler 10.1. - 0xab, 0x51, 0x00, 0x00, 0x05, 0x84, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, // .Q..........@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, // ................ - 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, // ................ - 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, // ................ - 0x03, 0x00, 0x00, 0x01, 0x80, 0x84, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x2e, 0x00, 0x00, // ................ - 0x02, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, // ................ - 0x80, 0x01, 0x00, 0x55, 0x90, 0x01, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, // ...U.. ......... - 0x05, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, // ...... ......... - 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x20, 0xe4, // .............. . - 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, // .......... ..... - 0xb0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x81, 0x00, 0xe4, // ...........U.... - 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x80, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, // ................ - 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x82, 0x00, 0xe4, // ................ - 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, // ................ - 0xe0, 0x83, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, // ................ - 0x00, 0x00, // .. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x80, 0x00, 0x04, // .u_viewProj..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x2b, // ...............+ + 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, // .CTAB........... + 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x78, 0x00, 0x00, // .............x.. + 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, // .D...........L.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, // ................ + 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // .h.......u_model + 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......... ...... + 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, // .u_viewProj..... + 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, // .............vs_ + 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, // 3_0.Microsoft (R + 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, // ) HLSL Shader Co + 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, // mpiler 10.1..Q.. + 0x05, 0x84, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, // ................ + 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, // ................ + 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, // ................ + 0x80, 0x84, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, // ................ + 0xb0, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0x55, // ...............U + 0x90, 0x01, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, // .. ............. + 0x80, 0x00, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, // .. ............. + 0x80, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, // .......... ..... + 0xb0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, // ................ + 0x80, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x05, 0x00, 0x00, // ...... ......... + 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x81, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, // .......U........ + 0x04, 0x01, 0x00, 0x0f, 0x80, 0x80, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, // ................ + 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x82, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, // ................ + 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0xe0, 0x83, 0x00, 0xe4, // ................ + 0xa0, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // .............. }; -static const uint8_t vs_debugdraw_fill_dx11[677] = +static const uint8_t vs_debugdraw_fill_dx11[689] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo - 0x64, 0x65, 0x6c, 0x04, 0x20, 0x40, 0x00, 0x80, 0x00, 0x70, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, // del. @...p...DXB - 0x43, 0x21, 0x99, 0xbc, 0x62, 0x67, 0xb7, 0x95, 0xd6, 0x90, 0x9d, 0x96, 0xc0, 0x0e, 0x98, 0x00, // C!..bg.......... - 0xf9, 0x01, 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, // .....p.......,.. - 0x00, 0x84, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, // .........ISGNP.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........8...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, // ................ - 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .E.............. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x42, 0x4c, 0x45, 0x4e, 0x44, 0x49, 0x4e, // .........BLENDIN - 0x44, 0x49, 0x43, 0x45, 0x53, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, // DICES.POSITION.. - 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // .OSGN,.......... - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // . .............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, // .........SV_POSI - 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x53, 0x48, 0x44, 0x52, 0xb0, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, // TION.SHDR....@.. - 0x00, 0x6c, 0x00, 0x00, 0x00, 0x59, 0x08, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, // .l...Y...F. .... - 0x00, 0x84, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x12, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // ....._.......... - 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, // ._...r.......g.. - 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, // .. ..........h.. - 0x02, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // .....).......... - 0x00, 0x0a, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, // ..........@..... - 0x00, 0x38, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, // .8...........V.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, // .....F. ........ - 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, // .........2...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .....F. ........ - 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, // .F.......2...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // .....F. ........ - 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, // .F.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .....F.......F. - 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, // .8...........V.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....F. ........ - 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .2...........F. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, // .F.......2...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....F. ........ - 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, // .........F...... - 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .2.... ......F. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x0e, // .F.......>...... - 0x00, 0x01, 0x00, 0x40, 0x08, // ...@. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x40, 0x00, 0x80, // ....u_model. @.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x5f, 0x41, 0xca, // .....p...DXBC_A. + 0x34, 0xb4, 0x57, 0xbe, 0x95, 0xea, 0x82, 0x43, 0x48, 0x9b, 0xc3, 0xbc, 0xdb, 0x01, 0x00, 0x00, // 4.W....CH....... + 0x00, 0x70, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, // .p.......,...... + 0x00, 0xb8, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....ISGNP...... + 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....8.......... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x45, 0x00, 0x00, // .............E.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................ + 0x00, 0x07, 0x07, 0x00, 0x00, 0x42, 0x4c, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x45, // .....BLENDINDICE + 0x53, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0x4f, 0x53, 0x47, // S.POSITION...OSG + 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // N,........... .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, // .....SV_POSITION + 0x00, 0x53, 0x48, 0x44, 0x52, 0xb0, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x6c, 0x00, 0x00, // .SHDR....@...l.. + 0x00, 0x59, 0x08, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, // .Y...F. ........ + 0x00, 0x5f, 0x00, 0x00, 0x03, 0x12, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, // ._..........._.. + 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, // .r.......g.... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, // .........h...... + 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x10, // .).............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, // ......@......8.. + 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, // .........V...... + 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, // .F. ............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, // .....2.......... + 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, // .F. ............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, // .............F.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, // .....2.......... + 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, // .F. ............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, // .............F.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, // .F.......F. .... + 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, // .............8.. + 0x08, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, // .........V...... + 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, // .F. .........2.. + 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, // .........F. .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, // .............F.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, // .....2.......... + 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, // .F. ............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, // .....F.......2.. + 0x0a, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, // .. ......F. .... + 0x00, 0x03, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, // .............F.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x40, // .....>.........@ + 0x08, // . }; -static const uint8_t vs_debugdraw_fill_mtl[685] = +static const uint8_t vs_debugdraw_fill_mtl[649] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo - 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7f, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, // del. .. .....usi - 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, // ng namespace met - 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // al;.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, // tlShaderInput {. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // float4 a_indic - 0x65, 0x73, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, // es [[attribute(0 - 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, // )]];. float3 a_ - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // position [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // bute(1)]];.};.st - 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // erOutput {. flo - 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // at4 gl_Position - 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, // [[position]];.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, // haderUniform {. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // float4x4 u_view - 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, // Proj;. float4x4 - 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, // u_model[32];.}; - 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .vertex xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // haderOutput xlat - 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // MtlMain (xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ShaderInput _mtl - 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, // _i [[stage_in]], - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // constant xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, // lShaderUniform& - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, // _mtl_u [[buffer( - 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // 0)]]).{. xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, // lShaderOutput _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, // tl_o;. float4 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // mpvar_1 = 0;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz - 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // = _mtl_i.a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, // ion;. _mtl_o.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, // _Position = (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, // l_u.u_viewProj * - 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // (_mtl_u.u_model - 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x69, 0x6e, // [int(_mtl_i.a_in - 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // dices.x)] * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // ar_1));. return - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _mtl_o;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. @....... + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, // .u_viewProj..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, // .....H...#includ + 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, // e <metal_stdlib> + 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, // .#include <simd/ + 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, // simd.h>..using n + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, // amespace metal;. + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, // .struct _Global. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, // {. float4x4 u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // _viewProj;. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // loat4x4 u_model[ + 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // 32];.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // {. float4 gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, // Position [[posit + 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ion]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x69, // .{. uint4 a_i + 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // ndices [[attribu + 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // te(0)]];. flo + 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at3 a_position [ + 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, // .};..vertex xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // MtlMain_out xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // MtlMain(xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, // ain_in in [[stag + 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, // e_in]], constant + 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // _Global& _mtl_u + 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, // [[buffer(0)]]). + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // {. xlatMtlMai + 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, // n_out out = {};. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // out.gl_Posit + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, // ion = _mtl_u.u_v + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // iewProj * (_mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x69, 0x6e, // u.u_model[int(in + 0x2e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, // .a_indices.x)] * + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, // float4(in.a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // ition, 1.0));. + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, // return out;.}. + 0x0a, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x40, 0x08, // .......@. }; extern const uint8_t* vs_debugdraw_fill_pssl; extern const uint32_t vs_debugdraw_fill_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc index afb034cc028..db5c3498f68 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc @@ -1,8 +1,8 @@ $input a_position, a_indices /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h index 241cc7450fd..2f985f65064 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h @@ -1,154 +1,190 @@ -static const uint8_t vs_debugdraw_fill_lit_glsl[532] = +static const uint8_t vs_debugdraw_fill_lit_glsl[479] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie - 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr - 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj.......u_model - 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // . .. .....attrib - 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // ute highp vec4 a - 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // _indices;.attrib - 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, // ute highp vec3 a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // _position;.varyi - 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ - 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // view;.varying hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, // ghp vec3 v_world - 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.uniform highp - 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // mat4 u_view;.uni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // form highp mat4 - 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // u_viewProj;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // orm mat4 u_model - 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // [32];.void main - 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ().{. highp vec - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_1;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, // pvar_1.w = 1.0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_1.xyz = - 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x68, // a_position;. h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec4 tmpvar - 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // _2;. tmpvar_2 = - 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x61, 0x5f, // (u_model[int(a_ - 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, // indices.x)] * tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // pvar_1);. gl_Po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // sition = (u_view - 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // Proj * tmpvar_2) - 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // ;. v_view = (u_ - 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // view * tmpvar_2) - 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, // .xyz;. v_world - 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, // = tmpvar_2.xyz;. - 0x7d, 0x0a, 0x0a, 0x00, // }... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, // VSH.......V_...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // _view........... + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // u_viewProj...... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, // .....u_model. .. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x69, 0x6e, 0x20, 0x75, 0x76, 0x65, // .........in uve + 0x63, 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, 0x69, 0x6e, // c4 a_indices;.in + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // vec3 a_position + 0x3b, 0x0a, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, // ;.out vec3 v_vie + 0x77, 0x3b, 0x0a, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, // w;.out vec3 v_wo + 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, // rld;.uniform mat + 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // 4 u_view;.unifor + 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // m mat4 u_viewPro + 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // j;.uniform mat4 + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // u_model[32];.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, // d main ().{. ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz + 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, // = a_position;. + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, // vec4 tmpvar_2;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // tmpvar_2 = (u_m + 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // odel[int(a_indic + 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // es.x)] * tmpvar_ + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1);. gl_Positio + 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, // n = (u_viewProj + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, // * tmpvar_2);. v + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, // _view = (u_view + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // * tmpvar_2).xyz; + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // . v_world = tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // var_2.xyz;.}... }; -static const uint8_t vs_debugdraw_fill_lit_spv[1678] = +static const uint8_t vs_debugdraw_fill_lit_essl[571] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...V_...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x80, 0x00, 0x80, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // el. .....u_viewP - 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x40, 0x00, 0x04, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // roj..@....u_view - 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x4c, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ......L.....#... - 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ................ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, // VSH.......V_...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // _view........... + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // u_viewProj...... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, // .....u_model. .. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, // .........precis + 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x3b, 0x0a, 0x70, // ion highp int;.p + 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, // recision highp f + 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x0a, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x75, // loat;.in highp u + 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, // vec4 a_indices;. + 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, // in highp vec3 a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, // position;.out hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, // ghp vec3 v_view; + 0x0a, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // .out highp vec3 + 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // v_world;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, // highp mat4 u_vi + 0x65, 0x77, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, // ew;.uniform high + 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // p mat4 u_viewPro + 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // j;.uniform mat4 + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // u_model[32];.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, // d main ().{. hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // 1;. tmpvar_1.w + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // 1.xyz = a_positi + 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // on;. highp vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // var_2 = (u_model + 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, // [int(a_indices.x + 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, // )] * tmpvar_1);. + 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position = + 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (u_viewProj * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, // pvar_2);. v_vie + 0x77, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, // w = (u_view * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x76, // pvar_2).xyz;. v + 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // _world = tmpvar_ + 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 2.xyz;.}... +}; +static const uint8_t vs_debugdraw_fill_lit_spv[1674] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, // VSH.......V_...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model.......... + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x00, 0x04, // .u_viewProj..@.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x00, 0x00, 0x00, // ......u_view.... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ......8.....#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ................ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, // ......main....L. - 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x60, 0x00, // ..P...Y...]...`. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ......main....G. + 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5b, 0x00, // ..K...T...X...[. 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... - 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..'...$Global... - 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // ..'.......u_view - 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......'.......u_ - 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x27, 0x00, // viewProj......'. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x05, 0x00, // ......u_model... - 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, // ..)...........L. - 0x00, 0x00, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, // ..a_indices..... - 0x05, 0x00, 0x50, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ..P...a_position - 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x59, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, // ......Y...@entry - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, // PointOutput.gl_P - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x5d, 0x00, // osition.......]. + 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, // ..'...UniformBlo + 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, // ck........'..... + 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x27, 0x00, // ..u_view......'. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // ......u_viewProj + 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......'.......u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, // model.....)..... + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, // ......G...a_indi + 0x63, 0x65, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x61, 0x5f, // ces.......K...a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x54, 0x00, // position......T. 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // ..@entryPointOut - 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // put.v_view...... - 0x09, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, // ..`...@entryPoin - 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x00, // tOutput.v_world. - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, // ..G...&.......@. - 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...'......... - 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...'.......#. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...'..... + 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, // put.gl_Position. + 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x58, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, // ......X...@entry + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x76, 0x69, // PointOutput.v_vi + 0x65, 0x77, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x40, 0x65, // ew........[...@e + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, // ntryPointOutput. + 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, // v_world...G...&. + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, // ......@...H...'. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, // ..........H...'. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, // ......#.......H. + 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, // ..'............. + 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...'......... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...'.......#. + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, // ..@...H...'..... 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, // ..........H...'. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, // ..........H...'. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, // ......#...@...H. - 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, // ..'............. - 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...'......... - 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...'.......#. - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, // ......H...'..... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x27, 0x00, // ..........G...'. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, // ......G...)...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...L..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...P..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x0b, 0x00, // ......G...Y..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...]..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...`..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, // .. ............. - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x09, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, // ......+......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, // ......+......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......+......... - 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0c, 0x00, // .....?....#..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, // ..........$... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......+...$...%. - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x23, 0x00, // .. .......&...#. - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, // ..%.......'...#. - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, // ..#...&... ...(. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x28, 0x00, // ......'...;...(. - 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2e, 0x00, // ..)....... ..... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, // ......#...+..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4b, 0x00, // ..2....... ...K. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, // ..........;...K. - 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4f, 0x00, // ..L....... ...O. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4f, 0x00, // ..........;...O. - 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, // ..P....... ...X. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, // ..........;...X. - 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5c, 0x00, // ..Y....... ..... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5c, 0x00, // ..........;..... - 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5c, 0x00, // ..].......;..... - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ..`.......6..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, // ................ - 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4d, 0x00, // ......=.......M. - 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x51, 0x00, // ..L...=.......Q. - 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x74, 0x00, // ..P...Q.......t. - 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, // ..Q.......Q..... - 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..u...Q.......Q. - 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, // ......v...Q..... - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, // ..P.......w...t. - 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x51, 0x00, // ..u...v.......Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, // ......y...M..... - 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x29, 0x00, // ..A.......z...). - 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, // ......y...=...#. - 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, // ..{...z......... - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x41, 0x00, // ..|...w...{...A. - 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x15, 0x00, // ......~...)..... - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, // ..=...#.......~. - 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7c, 0x00, // ..............|. - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x83, 0x00, // ......A......... - 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, // ..)...2...=...#. - 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, // ................ - 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x4f, 0x00, // ......|.......O. - 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..............O. - 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0x00, // ..........|...|. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8c, 0x00, // ................ - 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x8d, 0x00, // ..R............. - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x59, 0x00, // ..........>...Y. - 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x86, 0x00, // ......>...]..... - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>...`......... - 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x80, 0x08, // ..8........... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, // ..........H...'. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x48, 0x00, // ......#.......H. + 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, // ..'............. + 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, // ..G...'.......G. + 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..)...".......G. + 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..)...!.......G. + 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..G...........G. + 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, // ..K...........G. + 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..T...........G. + 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..X...........G. + 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, // ..[............. + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ......!......... + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... + 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, // .......... ..... + 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, // ................ + 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ...... .......+. + 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..............+. + 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..............+. + 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, // .............?.. + 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..$...........+. + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, // ......%... ..... + 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1e, 0x00, // ..&...$...%..... + 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x26, 0x00, // ..'...$...$...&. + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, // .. ...(.......'. + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, // ..;...(...)..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, // .. .../.......$. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......3..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, // .. ...F......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...F...G..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, // .. ...J......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...J...K..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, // .. ...S......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...S...T..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, // .. ...W......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...W...X..... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...W...[..... + 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ..6............. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......H...G...=. + 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, // ......L...K...Q. + 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, // ......p...L..... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x4c, 0x00, // ..Q.......q...L. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x72, 0x00, // ......Q.......r. + 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0c, 0x00, // ..L.......P..... + 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, // ..s...p...q...r. + 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, // ......Q.......u. + 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x15, 0x00, // ..H.......|..... + 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2f, 0x00, // ..v...u...A.../. + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x76, 0x00, // ..w...).......v. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, // ..=...$...x...w. + 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x73, 0x00, // ..........y...s. + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x7b, 0x00, // ..x...A.../...{. + 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x24, 0x00, // ..).......=...$. + 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, // ..|...{......... + 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x41, 0x00, // ..}...y...|...A. + 0x05, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x33, 0x00, // ../.......)...3. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, // ..=...$......... + 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x79, 0x00, // ..............y. + 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x83, 0x00, // ......O......... + 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x86, 0x00, // ......O......... + 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..y...y......... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, 0x7d, 0x00, // ......>...T...}. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..>...X.......>. + 0x03, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..[...........8. + 0x01, 0x00, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x80, 0x08, // .......... }; -static const uint8_t vs_debugdraw_fill_lit_dx9[635] = +static const uint8_t vs_debugdraw_fill_lit_dx9[651] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...V_...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, // el. .....u_view. - 0x01, 0x80, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // ......u_viewProj - 0x04, 0x01, 0x84, 0x00, 0x04, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, // ......@......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, // VSH.......V_...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // .u_view......... + 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x84, 0x00, // ..u_viewProj.... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, // ......@......... 0x32, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x03, // 2.CTAB.......... 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x93, 0x00, // ................ 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, // ..X...........`. @@ -186,17 +222,18 @@ static const uint8_t vs_debugdraw_fill_lit_dx9[635] = 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, // ................ 0x07, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ........... }; -static const uint8_t vs_debugdraw_fill_lit_dx11[946] = +static const uint8_t vs_debugdraw_fill_lit_dx11[962] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie - 0x77, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr - 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj..@....u_model - 0x04, 0x20, 0x80, 0x00, 0x80, 0x00, 0x70, 0x03, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x4a, 0x63, // . ....p...DXBCJc - 0x00, 0x1f, 0x8c, 0xf0, 0x42, 0x23, 0xf7, 0x2c, 0xd7, 0x55, 0x64, 0x23, 0x64, 0x92, 0x01, 0x00, // ....B#.,.Ud#d... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, // VSH.......V_...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // _view........... + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, // u_viewProj..@... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x80, 0x00, // .....u_model. .. + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x7c, 0x27, // ......p...DXBC|' + 0x35, 0x24, 0x2d, 0xe2, 0xb8, 0x12, 0x5c, 0xed, 0xf0, 0xe1, 0x5d, 0x10, 0xd9, 0xf9, 0x01, 0x00, // 5$-.......]..... 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, // ..p.......,..... 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, // ......ISGNP..... 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......8......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x45, 0x00, // ..............E. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x45, 0x00, // ..............E. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x42, 0x4c, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x44, 0x49, 0x43, // ......BLENDINDIC 0x45, 0x53, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0x4f, 0x53, // ES.POSITION...OS @@ -249,64 +286,66 @@ static const uint8_t vs_debugdraw_fill_lit_dx11[946] = 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, // ......>......... 0x80, 0x08, // .. }; -static const uint8_t vs_debugdraw_fill_lit_mtl[881] = +static const uint8_t vs_debugdraw_fill_lit_mtl[925] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie - 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr - 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj.......u_model - 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x36, 0x03, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, // . .. .6...using + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, // VSH.......V_...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x40, 0x00, 0x04, // .u_viewProj..@.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, // ......u_view.... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, // ......K...#inclu + 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, // de <metal_stdlib + 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, // >.#include <simd + 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, // /simd.h>..using 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, // namespace metal; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, // haderInput {. f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, // loat4 a_indices - 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, // [[attribute(0)]] - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // ;. float3 a_pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ition [[attribut - 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // e(1)]];.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // utput {. float4 - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, // gl_Position [[p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // osition]];. flo - 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // at3 v_view;. fl - 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x7d, 0x3b, // oat3 v_world;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, // haderUniform {. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // float4x4 u_view - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, // ;. float4x4 u_v - 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // iewProj;. float - 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, // 4x4 u_model[32]; - 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.vertex xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, // tmpvar_1.w = 1 - 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // .0;. tmpvar_1.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, // yz = _mtl_i.a_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // sition;. float4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_2 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, // tmpvar_2 = (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, // l_u.u_model[int( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, // _mtl_i.a_indices - 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // .x)] * tmpvar_1) - 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // ;. _mtl_o.gl_Po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // sition = (_mtl_u - 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // .u_viewProj * tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // pvar_2);. _mtl_ - 0x6f, 0x2e, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // o.v_view = (_mtl - 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // _u.u_view * tmpv - 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, // ar_2).xyz;. _mt - 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x6d, // l_o.v_world = tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, // pvar_2.xyz;. re - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // turn _mtl_o;.}.. - 0x00, // . + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // ..struct _Global + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // .{. float4x4 + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // u_view;. floa + 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // t4x4 u_viewProj; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // . float4x4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // model[32];.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // truct xlatMtlMai + 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // n_out.{. floa + 0x74, 0x33, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // t3 _entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x5b, 0x5b, 0x75, 0x73, // tput_v_view [[us + 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // er(locn0)]];. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // float3 _entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, // intOutput_v_worl + 0x64, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, // d [[user(locn1)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, // ];. float4 gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, // _Position [[posi + 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // tion]];.};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // ct xlatMtlMain_i + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x61, 0x5f, // n.{. uint4 a_ + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // indices [[attrib + 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // ute(0)]];. fl + 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // oat3 a_position + 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, // [[attribute(1)]] + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, // ;.};..vertex xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // tMtlMain_out xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // tMtlMain(xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, // Main_in in [[sta + 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // ge_in]], constan + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // t _Global& _mtl_ + 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, // u [[buffer(0)]]) + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // .{. xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, // in_out out = {}; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x32, 0x31, // . float4 _121 + 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // = _mtl_u.u_mode + 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // l[int(in.a_indic + 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, // es.x)] * float4( + 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, // in.a_position, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, // .0);. out.gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // Position = _mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x5f, // u.u_viewProj * _ + 0x31, 0x32, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, // 121;. out._en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // _view = (_mtl_u. + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x32, 0x31, 0x29, 0x2e, 0x78, // u_view * _121).x + 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, // yz;. out._ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, // ryPointOutput_v_ + 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x31, 0x2e, 0x78, 0x79, 0x7a, // world = _121.xyz + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, // ;. return out + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x80, 0x08, // ;.}.......... }; extern const uint8_t* vs_debugdraw_fill_lit_pssl; extern const uint32_t vs_debugdraw_fill_lit_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc index 5cad2f127e4..0964f5929e8 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc @@ -2,8 +2,8 @@ $input a_position, a_indices $output v_view, v_world /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.bin.h index b5d0395fbd2..712eb851824 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.bin.h @@ -1,9 +1,42 @@ -static const uint8_t vs_debugdraw_fill_lit_mesh_glsl[485] = +static const uint8_t vs_debugdraw_fill_lit_mesh_glsl[459] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie - 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr - 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj.......u_model - 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0xaa, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // . .. .....attrib + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, // VSH.......V_...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // _view........... + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // u_viewProj...... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, // .....u_model. .. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // .........attrib + 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // ute vec3 a_posit + 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // ion;.varying vec + 0x33, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // 3 v_view;.varyin + 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, // g vec3 v_world;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, // uniform mat4 u_v + 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, // iew;.uniform mat + 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, // 4 u_viewProj;.un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // iform mat4 u_mod + 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // el[32];.void mai + 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // n ().{. vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_1;. tmpvar + 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // _1.w = 1.0;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, // pvar_1.xyz = a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // osition;. vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_2;. tmpv + 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // ar_2 = (u_model[ + 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, // 0] * tmpvar_1);. + 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position = + 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (u_viewProj * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, // pvar_2);. v_vie + 0x77, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, // w = (u_view * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x76, // pvar_2).xyz;. v + 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // _world = tmpvar_ + 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 2.xyz;.}... +}; +static const uint8_t vs_debugdraw_fill_lit_mesh_essl[501] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, // VSH.......V_...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // _view........... + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // u_viewProj...... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, // .....u_model. .. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // .........attrib 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, // ute highp vec3 a 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // _position;.varyi 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ @@ -32,118 +65,112 @@ static const uint8_t vs_debugdraw_fill_lit_mesh_glsl[485] = 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // = tmpvar_2.xyz; 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; -static const uint8_t vs_debugdraw_fill_lit_mesh_spv[1642] = +static const uint8_t vs_debugdraw_fill_lit_mesh_spv[1532] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...V_...u_mod - 0x65, 0x6c, 0x04, 0x01, 0x80, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // el.......u_viewP - 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x40, 0x00, 0x04, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // roj..@....u_view - 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x28, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ......(.....#... - 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ................ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, // VSH.......V_...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // _model.......... + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x00, 0x04, // .u_viewProj..@.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x00, 0x00, 0x00, // ......u_view.... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ............#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ......v......... 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, // ......main....H. - 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5c, 0x00, // ..L...U...Y..... - 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ - 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... - 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..'...$Global... - 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // ..'.......u_view - 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......'.......u_ - 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x27, 0x00, // viewProj......'. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x05, 0x00, // ......u_model... - 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, // ..)...........H. - 0x00, 0x00, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, // ..a_indices..... - 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ..L...a_position - 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x55, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, // ......U...@entry + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, // ......main....?. + 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, // ..F...J...M..... + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x24, 0x00, // ..main........$. + 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, // ..UniformBlock.. + 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......$.......u_ + 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, // view......$..... + 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x06, 0x00, // ..u_viewProj.... + 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ..$.......u_mode + 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // l.....&......... + 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ..?...a_position + 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, // ......F...@entry 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, // PointOutput.gl_P - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x59, 0x00, // osition.......Y. + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x4a, 0x00, // osition.......J. 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // ..@entryPointOut 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // put.v_view...... - 0x09, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, // ......@entryPoin + 0x09, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, // ..M...@entryPoin 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x00, // tOutput.v_world. - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, // ..G...&.......@. - 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...'......... - 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...'.......#. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...'..... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, // ..........H...'. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, // ..........H...'. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, // ..G...#.......@. + 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...$......... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...$.......#. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...$..... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x24, 0x00, // ..........H...$. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, // ..........H...$. 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, // ......#...@...H. - 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, // ..'............. - 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...'......... - 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...'.......#. - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, // ......H...'..... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x27, 0x00, // ..........G...'. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, // ......G...)...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...H..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...L..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x0b, 0x00, // ......G...U..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...Y..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G......... + 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, // ..$............. + 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ..H...$......... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...$.......#. + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, // ......H...$..... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x24, 0x00, // ..........G...$. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, // ......G...&...". + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, // ......G...&...!. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...?..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x0b, 0x00, // ......G...F..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...J..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...M..... 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, // .. ............. - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x09, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, // ......+......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, // ......+......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......+......... - 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0c, 0x00, // .....?....#..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, // ..........$... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......+...$...%. - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x23, 0x00, // .. .......&...#. - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, // ..%.......'...#. - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, // ..#...&... ...(. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x28, 0x00, // ......'...;...(. - 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, // ..).......+..... - 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2b, 0x00, // ..*....... ...+. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, // ......#... ...G. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, // ..........;...G. - 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4b, 0x00, // ..H....... ...K. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, // ..........;...K. - 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x54, 0x00, // ..L....... ...T. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x54, 0x00, // ..........;...T. - 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, // ..U....... ...X. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, // ..........;...X. - 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, // ..Y.......;...X. - 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ..........6..... + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, // ................ + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, // .. ............. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, // ......+......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x16, 0x00, // ......+......... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, // ......+......... + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x09, 0x00, // .....?.... ..... + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, // ..........!... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, // ......+...!...". + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, // .. .......#... . + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, // ..".......$... . + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, // .. ...#... ...%. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, // ......$...;...%. + 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x11, 0x00, // ..&.......+..... + 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, // ..'....... ...(. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, // ...... ... ...>. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3e, 0x00, // ..........;...>. + 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, // ..?....... ...E. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, // ..........;...E. + 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x49, 0x00, // ..F....... ...I. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x49, 0x00, // ..........;...I. + 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x49, 0x00, // ..J.......;...I. + 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ..M.......6..... 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, // ................ - 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x4d, 0x00, // ......=.......M. - 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x70, 0x00, // ..L...Q.......p. - 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, // ..M.......Q..... - 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..q...M.......Q. - 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, // ......r...M..... - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x70, 0x00, // ..P.......s...p. - 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, // ..q...r.......A. - 0x06, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x19, 0x00, // ..+...t...)..... - 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x75, 0x00, // ..*...=...#...u. - 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x76, 0x00, // ..t...........v. - 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2b, 0x00, // ..s...u...A...+. - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..x...).......=. - 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x90, 0x00, // ..#...y...x..... - 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x79, 0x00, // ......z...v...y. - 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x29, 0x00, // ..A...+...}...). - 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x7e, 0x00, // ..*...=...#...~. - 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x7f, 0x00, // ..}............. - 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0a, 0x00, // ..v...~...O..... - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0a, 0x00, // ..........O..... - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, // ......v...v..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, // ..........Q..... - 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, // ......z......... - 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x52, 0x00, // ..............R. - 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x7a, 0x00, // ..............z. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, 0xa5, 0x00, // ......>...U..... - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..>...Y.......>. - 0x03, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..............8. - 0x01, 0x00, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0xc0, 0x00, // .......... + 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x40, 0x00, // ......=.......@. + 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x00, // ..?...Q.......b. + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ..@.......Q..... + 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..c...@.......Q. + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, // ......d...@..... + 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x62, 0x00, // ..P.......e...b. + 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, // ..c...d.......A. + 0x06, 0x00, 0x28, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x16, 0x00, // ..(...f...&..... + 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x67, 0x00, // ..'...=... ...g. + 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x68, 0x00, // ..f...........h. + 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x28, 0x00, // ..e...g...A...(. + 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..j...&.......=. + 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x90, 0x00, // .. ...k...j..... + 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6b, 0x00, // ......l...h...k. + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x26, 0x00, // ..A...(...o...&. + 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, // ..'...=... ...p. + 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x71, 0x00, // ..o...........q. + 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, // ..h...p...O..... + 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, // ..r...q...q..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, // ..........O..... + 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, // ..u...h...h..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x46, 0x00, // ..........>...F. + 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x72, 0x00, // ..l...>...J...r. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>...M...u..... + 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0xc0, 0x00, // ..8......... }; -static const uint8_t vs_debugdraw_fill_lit_mesh_dx9[555] = +static const uint8_t vs_debugdraw_fill_lit_mesh_dx9[571] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...V_...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x08, 0x00, 0x04, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, // el. .....u_view. - 0x01, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // ......u_viewProj - 0x04, 0x01, 0x04, 0x00, 0x04, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, // ................ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, // VSH.......V_...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // .u_view......... + 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x04, 0x00, // ..u_viewProj.... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, // ................ 0x32, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x03, // 2.CTAB.......... 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x93, 0x00, // ................ 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x00, // ..X...........`. @@ -176,118 +203,120 @@ static const uint8_t vs_debugdraw_fill_lit_mesh_dx9[555] = 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, // ................ 0x07, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ........... }; -static const uint8_t vs_debugdraw_fill_lit_mesh_dx11[874] = +static const uint8_t vs_debugdraw_fill_lit_mesh_dx11[852] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie - 0x77, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr - 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj..@....u_model - 0x04, 0x20, 0x80, 0x00, 0x80, 0x00, 0x28, 0x03, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xc4, 0x14, // . ....(...DXBC.. - 0x8c, 0x7a, 0xb5, 0xb5, 0x88, 0x8c, 0xc7, 0xf4, 0x92, 0xe3, 0x3e, 0xf8, 0xb7, 0x7a, 0x01, 0x00, // .z........>..z.. - 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, // ..(.......,..... - 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, // ......ISGNP..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......8......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x45, 0x00, // ..............E. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x42, 0x4c, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x44, 0x49, 0x43, // ......BLENDINDIC - 0x45, 0x53, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0x4f, 0x53, // ES.POSITION...OS - 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNh...........P. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x5c, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO - 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, 0x48, // N.TEXCOORD....SH - 0x44, 0x52, 0x2c, 0x02, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x59, 0x00, // DR,...@.......Y. - 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x5f, 0x00, // ..F. ........._. - 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, // ..r.......g.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, // ..........e...r - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, // ......e...r .... - 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, // ..h.......8..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......V.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, // .........2..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // ......F. ....... - 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ..2...........F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, // ............... - 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x00, // ..F............. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......F.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, // .........8..... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......V.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, // .........2..... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // ......F. ....... - 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, // ..........F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, // ..2...........F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, // ............... - 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x20, // ..F.......2.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, // ......F. ....... - 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, // ..........F..... - 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, // ..8...r.......V. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ......F. ....... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, // ..2...r.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, // ............... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, // ..F.......2...r. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, // ......F. ....... - 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, // ..........F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, // ..2...r ......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, // ............... - 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, // ..F.......6...r - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......F.......>. - 0x00, 0x01, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x80, 0x08, // .......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, // VSH.......V_...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // _view........... + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, // u_viewProj..@... + 0x00, 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x80, 0x00, // .....u_model. .. + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x7f, 0x42, // ..........DXBC.B + 0xf4, 0xce, 0x08, 0xe2, 0x05, 0xc2, 0x2c, 0xa2, 0x28, 0x50, 0x19, 0x35, 0xb8, 0x0d, 0x01, 0x00, // ......,.(P.5.... + 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x60, 0x00, // ..........,...`. + 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, // ......ISGN,..... + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ......... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x50, 0x4f, // ..............PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x68, 0x00, // SITION....OSGNh. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........P..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ + 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, // ................ + 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, // ..SV_POSITION.TE + 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x2c, 0x02, // XCOORD....SHDR,. + 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, // ..@.......Y...F. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, // ........._...r. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ......g.... .... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, // ......e...r .... + 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, // ..e...r ......h. + 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8......... + 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..V.......F. ... + 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2......... + 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x10, // ..F. ........... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. + 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..........F. ... + 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..............F. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..F.......F. ... + 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, // ......8......... + 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..V.......F. ... + 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, // ......2......... + 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, // ..F. ........... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. + 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..........F. ... + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..............F. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ......2.... .... + 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf6, 0x0f, // ..F. ........... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, // ......F.......8. + 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, // ..r.......V..... + 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ..F. .........2. + 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..r.......F. ... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..............F. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, // ......2...r..... + 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x0a, // ..F. ........... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. + 0x00, 0x0a, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..r ......F. ... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..............F. + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, // ......6...r .... + 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x01, // ..F.......>..... + 0x01, 0x00, 0x80, 0x08, // .... }; -static const uint8_t vs_debugdraw_fill_lit_mesh_mtl[822] = +static const uint8_t vs_debugdraw_fill_lit_mesh_mtl[867] = { - 0x56, 0x53, 0x48, 0x05, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie - 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr - 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj.......u_model - 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0xfb, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, // . .. .....using + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, // VSH.......V_...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x01, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // _model.......... + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x40, 0x00, 0x04, // .u_viewProj..@.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, // ......u_view.... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, // ..........#inclu + 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, // de <metal_stdlib + 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, // >.#include <simd + 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, // /simd.h>..using 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, // namespace metal; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, // haderInput {. f - 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // loat3 a_position - 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, // [[attribute(0)] - 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // ];.};.struct xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // {. float4 gl_P - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi - 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, // on]];. float3 v - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // _view;. float3 - 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, // v_world;.};.stru - 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // ct xlatMtlShader - 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // Uniform {. floa - 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, // t4x4 u_view;. f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // loat4x4 u_viewPr - 0x6f, 0x6a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, // oj;. float4x4 u - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, // _model[32];.};.v - 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // ertex xlatMtlSha - 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // derOutput xlatMt - 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // lMain (xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // aderInput _mtl_i - 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, // [[stage_in]], c - 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // onstant xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, // haderUniform& _m - 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, // tl_u [[buffer(0) - 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // ]]).{. xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // haderOutput _mtl - 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, // _o;. float4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // var_1 = 0;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // _mtl_i.a_positio - 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // n;. float4 tmpv - 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // ar_2 = 0;. tmpv - 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // ar_2 = (_mtl_u.u - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // _model[0] * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // ar_1);. _mtl_o. - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, // gl_Position = (_ - 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // mtl_u.u_viewProj - 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_2);. - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, // _mtl_o.v_view = + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // ..struct _Global + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // .{. float4x4 + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // u_view;. floa + 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // t4x4 u_viewProj; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // . float4x4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // model[32];.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // truct xlatMtlMai + 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // n_out.{. floa + 0x74, 0x33, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // t3 _entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x5b, 0x5b, 0x75, 0x73, // tput_v_view [[us + 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // er(locn0)]];. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // float3 _entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, // intOutput_v_worl + 0x64, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, // d [[user(locn1)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, // ];. float4 gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, // _Position [[posi + 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // tion]];.};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // ct xlatMtlMain_i + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, // n.{. float3 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // _position [[attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // ibute(0)]];.};.. + 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // vertex xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // in_out xlatMtlMa + 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // in(xlatMtlMain_i + 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, // n in [[stage_in] + 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, // ], constant _Glo + 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, // bal& _mtl_u [[bu + 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // ffer(0)]]).{. + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // out = {};. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, // loat4 _104 = _mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, // l_u.u_model[0] * + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, // float4(in.a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ition, 1.0);. + 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // out.gl_Position + 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // = _mtl_u.u_view + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, // Proj * _104;. + 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // out._entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, // Output_v_view = 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, // (_mtl_u.u_view * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, // tmpvar_2).xyz;. - 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, // _mtl_o.v_world - 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // = tmpvar_2.xyz; - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... + 0x20, 0x5f, 0x31, 0x30, 0x34, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _104).xyz;. + 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // out._entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, // utput_v_world = + 0x5f, 0x31, 0x30, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // _104.xyz;. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x01, 0x01, // turn out;.}..... + 0x00, 0xc0, 0x00, // ... }; extern const uint8_t* vs_debugdraw_fill_lit_mesh_pssl; extern const uint32_t vs_debugdraw_fill_lit_mesh_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.sc index 7616da2055f..7083351a3ef 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit_mesh.sc @@ -1,9 +1,9 @@ -$input a_position, a_indices +$input a_position $output v_view, v_world /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.bin.h index 607a997e639..98ec98746b4 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.bin.h @@ -1,216 +1,227 @@ -static const uint8_t vs_debugdraw_fill_mesh_glsl[282] = +static const uint8_t vs_debugdraw_fill_mesh_glsl[276] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo - 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0xec, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, // del. .. .....att - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec - 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x75, 0x6e, // 3 a_position;.un - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, // iform highp mat4 + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, // ....u_model. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // .........attribu + 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // te vec3 a_positi + 0x6f, 0x6e, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, // on;.uniform mat4 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // u_viewProj;.uni 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // l[32];.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz - 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, // = a_position;. - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, // gl_Position = (u - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _viewProj * (u_m - 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // odel[0] * tmpvar - 0x5f, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _1));.}... + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ + 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 1.w = 1.0;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, // var_1.xyz = a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // sition;. gl_Pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // ition = (u_viewP + 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, // roj * (u_model[0 + 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x3b, 0x0a, // ] * tmpvar_1));. + 0x7d, 0x0a, 0x0a, 0x00, // }... }; -static const uint8_t vs_debugdraw_fill_mesh_spv[1229] = +static const uint8_t vs_debugdraw_fill_mesh_essl[294] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x04, 0x01, 0x40, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // el..@....u_viewP - 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x98, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, // roj............# - 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........u...... - 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, // .GLSL.std.450... - 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // .:...>...A...... - 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, // .main........... - 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, // .$Global........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // .....u_viewProj. - 0x00, 0x06, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, // .............u_m - 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // odel.....!...... - 0x00, 0x05, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // .....:...a_indic - 0x65, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, // es.......>...a_p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x41, 0x00, 0x00, // osition......A.. - 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // .@entryPointOutp - 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ut.gl_Position.. - 0x00, 0x47, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, // .G...........@.. - 0x00, 0x48, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .H.............. - 0x00, 0x48, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...........#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....H.......... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, // .........H...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, // .........H...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, // .....#...@...H.. - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, // ................ - 0x00, 0x47, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .G...........G.. - 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .!...".......G.. - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .:...........G.. - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // .>...........G.. - 0x00, 0x41, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, // .A.............. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....!.......... - 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ......... ...... - 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x00, 0x16, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ......... ...... - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................ - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .............+.. - 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, 0x04, // ............?... - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // ................ - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // ..... .......+.. - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, // ......... ...... - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................ - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. .. - 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // . ...........;.. - 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // . ...!.......+.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .....".......+.. - 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .....#....... .. - 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .$........... .. - 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .9...........;.. - 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .9...:....... .. - 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .=...........;.. - 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .=...>....... .. - 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .@...........;.. - 0x00, 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, // .@...A.......6.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, // .........=...... - 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, // .?...>...Q...... - 0x00, 0x58, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .X...?.......Q.. - 0x00, 0x09, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....Y...?...... - 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, // .Q.......Z...?.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, // .....P.......[.. - 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, // .X...Y...Z...... - 0x00, 0x41, 0x00, 0x06, 0x00, 0x24, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, // .A...$.......!.. - 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, // ."...#...=...... - 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, // .].............. - 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, // .^...[...]...A.. - 0x00, 0x24, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .$...`...!...#.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, // .=.......a...`.. - 0x00, 0x90, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, // .........b...^.. - 0x00, 0x61, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, // .a...Q.......e.. - 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // .b.............. - 0x00, 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, // .f...e...R...... - 0x00, 0x74, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .t...f...b...... - 0x00, 0x3e, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, // .>...A...t...... - 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x80, 0x00, // .8........... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, // ....u_model. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // .........attribu + 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, // te highp vec3 a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // position;.unifor + 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, // m highp mat4 u_v + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // iewProj;.uniform + 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, // mat4 u_model[32 + 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, // ];.void main (). + 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, // {. highp vec4 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1;. tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // r_1.w = 1.0;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, // mpvar_1.xyz = a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, // position;. gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, // osition = (u_vie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // wProj * (u_model + 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, // [0] * tmpvar_1)) + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... }; -static const uint8_t vs_debugdraw_fill_mesh_dx9[402] = +static const uint8_t vs_debugdraw_fill_mesh_spv[1115] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x04, 0x20, 0x04, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // el. .....u_viewP - 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x64, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, // roj......d...... - 0xff, 0xfe, 0xff, 0x2b, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, // ...+.CTAB....... - 0x00, 0x00, 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, // ................ - 0x00, 0x78, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // .x...D.......... - 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .L.............. - 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, // .....h.......u_m - 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, // odel......... .. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // _model..@....... + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, // .u_viewProj..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, // ...........#.... + 0x00, 0x0a, 0x00, 0x08, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, // .....U.......... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, // .............GLS + 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, // L.std.450....... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, // .....main....1.. + 0x00, 0x34, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, // .4.............. + 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... + 0x00, 0x05, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // .........Uniform + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x00, // Block........... 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // .....u_viewProj. - 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, // .vs_3_0.Microsof - 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, // t (R) HLSL Shade - 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, // r Compiler 10.1. - 0xab, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, // ................ - 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, // ................ - 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, // .......U........ - 0x80, 0x04, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x0f, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, // ................ - 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x07, 0x00, 0xe4, // ................ - 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, // ...........U.... - 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, // ................ - 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, // ................ - 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, // ................ - 0xe0, 0x03, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, // ................ - 0x00, 0x00, // .. + 0x00, 0x06, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, // .............u_m + 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // odel............ + 0x00, 0x05, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // .....1...a_posit + 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x34, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, // ion......4...@en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, // tryPointOutput.g + 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, // l_Position...G.. + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, // .........@...H.. + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, // .............H.. + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........#...... + 0x00, 0x48, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // .H.............. + 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....H.......... + 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....H.......... + 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, // .#...@...H...... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, // .............G.. + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, // .........G...... + 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, // .".......G...... + 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, // .!.......G...1.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, // .........G...4.. + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, // ................ + 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // .!.............. + 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // ..... .......... + 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // ................ + 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .........+...... + 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, // ........?....... + 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, // ................ + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, // . .......+...... + 0x00, 0x19, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, // ..... .......... + 0x00, 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, // ................ + 0x00, 0x17, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, // ......... ...... + 0x00, 0x02, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, // .........;...... + 0x00, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, // ................ + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, // . .......+...... + 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, // .........+...... + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, // . ....... ...!.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, // ......... ...0.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, // .........;...0.. + 0x00, 0x31, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, // .1....... ...3.. + 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, // .........;...3.. + 0x00, 0x34, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, // .4.......6...... + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, // ................ + 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, // .....=.......2.. + 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, // .1...Q.......J.. + 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .2.......Q...... + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .K...2.......Q.. + 0x00, 0x06, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....L...2...... + 0x00, 0x50, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, // .P.......M...J.. + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .K...L.......A.. + 0x00, 0x21, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, // .!...N.......... + 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, // . ...=.......O.. + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, // .N...........P.. + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, // .M...O...A...!.. + 0x00, 0x52, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .R....... ...=.. + 0x00, 0x17, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, // .....S...R...... + 0x00, 0x09, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // .....T...P...S.. + 0x00, 0x3e, 0x00, 0x03, 0x00, 0x34, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, // .>...4...T...... + 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x80, 0x00, // .8......... +}; +static const uint8_t vs_debugdraw_fill_mesh_dx9[414] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // _model. ........ + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, // .u_viewProj..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x2b, // .....d.........+ + 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, // .CTAB........... + 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x78, 0x00, 0x00, // .............x.. + 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, // .D...........L.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // .h.......u_model + 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......... ...... + 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, // .u_viewProj..... + 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, // .............vs_ + 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, // 3_0.Microsoft (R + 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, // ) HLSL Shader Co + 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, // mpiler 10.1..... + 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x05, 0x00, 0xe4, // ................ + 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x04, 0x00, 0xe4, // ...U............ + 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, // ................ + 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x07, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, // ................ + 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, // .......U........ + 0x04, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, // ................ + 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, // ................ + 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0xe0, 0x03, 0x00, 0xe4, // ................ + 0xa0, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // .............. }; -static const uint8_t vs_debugdraw_fill_mesh_dx11[605] = +static const uint8_t vs_debugdraw_fill_mesh_dx11[579] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo - 0x64, 0x65, 0x6c, 0x04, 0x20, 0x40, 0x00, 0x80, 0x00, 0x28, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, // del. @...(...DXB - 0x43, 0x27, 0x23, 0xd8, 0x33, 0xce, 0xb9, 0x21, 0xaa, 0x08, 0x79, 0xa6, 0x15, 0x6b, 0x1a, 0x45, // C'#.3..!..y..k.E - 0x8d, 0x01, 0x00, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, // .....(.......,.. - 0x00, 0x84, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, // .........ISGNP.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........8...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, // ................ - 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .E.............. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x42, 0x4c, 0x45, 0x4e, 0x44, 0x49, 0x4e, // .........BLENDIN - 0x44, 0x49, 0x43, 0x45, 0x53, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, // DICES.POSITION.. - 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // .OSGN,.......... - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // . .............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, // .........SV_POSI - 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x53, 0x48, 0x44, 0x52, 0x68, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, // TION.SHDRh...@.. - 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, // .Z...Y...F. .... - 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, // ....._...r...... - 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .g.... ......... - 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, // .h.......8...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .....V.......F. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, // .........2...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .....F. ........ - 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, // .........F...... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x20, 0x40, 0x00, 0x80, // ....u_model. @.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xb0, 0x1d, 0x55, // .........DXBC..U + 0xd7, 0x6c, 0x8e, 0xc2, 0xec, 0x7e, 0xf8, 0x30, 0x3a, 0xf1, 0x83, 0x0f, 0x9a, 0x01, 0x00, 0x00, // .l...~.0:....... + 0x00, 0x04, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, // .........,...`.. + 0x00, 0x94, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....ISGN,...... + 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..... .......... + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x50, 0x4f, 0x53, // .............POS + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, // ITION....OSGN,.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......... ...... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, // ................ + 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x53, 0x48, 0x44, // .SV_POSITION.SHD + 0x52, 0x68, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, // Rh...@...Z...Y.. + 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, // .F. ........._.. + 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, // .r.......g.... . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, // .........h...... + 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, // .8...........V.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, // .....F. ........ 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .2...........F. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, // ................ - 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, // .F.............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .....F.......F. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, // .........8...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .....V.......F. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, // .........2...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....F. ........ - 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, // .........F...... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, // .F.......2...... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // .....F. ........ + 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, // .........F...... + 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, // .............F.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, // .....F. ........ + 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, // .8...........V.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....F. ........ 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .2...........F. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x20, 0x10, // .F.......2.... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .....F. ........ - 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, // .........F...... - 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x40, 0x08, // .>.........@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, // .F.......2...... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....F. ........ + 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, // .........F...... + 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, // .2.... ......F. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, // .F.......>...... + 0x00, 0x40, 0x08, // .@. }; -static const uint8_t vs_debugdraw_fill_mesh_mtl[626] = +static const uint8_t vs_debugdraw_fill_mesh_mtl[591] = { - 0x56, 0x53, 0x48, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo - 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x44, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, // del. .. .D...usi - 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, // ng namespace met - 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // al;.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, // tlShaderInput {. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // float3 a_posit - 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // ion [[attribute( - 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // 0)]];.};.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, // put {. float4 g - 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, // l_Position [[pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, // ition]];.};.stru - 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // ct xlatMtlShader - 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // Uniform {. floa - 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // t4x4 u_viewProj; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, // . float4x4 u_mo - 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, // del[32];.};.vert - 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // ex xlatMtlShader - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // Output xlatMtlMa - 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // in (xlatMtlShade - 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, // rInput _mtl_i [[ - 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, // stage_in]], cons - 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // tant xlatMtlShad - 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // erUniform& _mtl_ - 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, // u [[buffer(0)]]) - 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // .{. xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, // erOutput _mtl_o; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // . float4 tmpvar - 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // _1 = 0;. tmpvar - 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // _1.w = 1.0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, // pvar_1.xyz = _mt - 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // l_i.a_position;. - 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, // _mtl_o.gl_Posi - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // tion = (_mtl_u.u - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x6d, 0x74, // _viewProj * (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, // l_u.u_model[0] * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, // tmpvar_1));. r - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, // eturn _mtl_o;.}. - 0x0a, 0x00, // .. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x04, 0x01, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // _model..@....... + 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, // .u_viewProj..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, // .........#includ + 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, // e <metal_stdlib> + 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, // .#include <simd/ + 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, // simd.h>..using n + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, // amespace metal;. + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, // .struct _Global. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, // {. float4x4 u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // _viewProj;. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // loat4x4 u_model[ + 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // 32];.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // {. float4 gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, // Position [[posit + 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ion]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, // .{. float3 a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // position [[attri + 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, // bute(0)]];.};..v + 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // ertex xlatMtlMai + 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // n_out xlatMtlMai + 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // n(xlatMtlMain_in + 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, // in [[stage_in]] + 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // , constant _Glob + 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, // al& _mtl_u [[buf + 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // fer(0)]]).{. + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, // xlatMtlMain_out + 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, // out = {};. ou + 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // t.gl_Position = + 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // _mtl_u.u_viewPro + 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, // j * (_mtl_u.u_mo + 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, // del[0] * float4( + 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, // in.a_position, 1 + 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // .0));. return + 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x01, 0x01, 0x00, 0x80, 0x00, // out;.}........ }; extern const uint8_t* vs_debugdraw_fill_mesh_pssl; extern const uint32_t vs_debugdraw_fill_mesh_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.sc index 3d3e5156350..44901d090f9 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_mesh.sc @@ -1,8 +1,8 @@ -$input a_position, a_indices +$input a_position /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.bin.h index a0b567e6447..4e4e85d286c 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.bin.h @@ -1,71 +1,101 @@ -static const uint8_t vs_debugdraw_fill_texture_glsl[420] = +static const uint8_t vs_debugdraw_fill_texture_glsl[386] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x7f, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ....attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec3 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // on;.attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ghp vec2 a_texco - 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // ord0;.varying hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 v_color - 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.varying highp - 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec2 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz - 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, // = a_position;. - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, // gl_Position = (u - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, // _modelViewProj * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // tmpvar_1);. v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, // texcoord0 = a_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // xcoord0;. v_col - 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, // or0 = a_color0;. - 0x7d, 0x0a, 0x0a, 0x00, // }... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........U...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // attribute vec2 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // 0;.varying vec2 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m + 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, // mpvar_1);. v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // xcoord0 = a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // oord0;. v_color + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, // 0 = a_color0;.}. + 0x0a, 0x00, // .. }; -static const uint8_t vs_debugdraw_fill_texture_spv[1298] = +static const uint8_t vs_debugdraw_fill_texture_essl[428] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xe4, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // main....>...B... - 0x46, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, // F...Q...T...X... - 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ....main........ - 0x26, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, // &...$Global..... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // bute highp vec3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, // ibute highp vec2 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, // ng highp vec2 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 1.0;. tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // r_1.xyz = a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // tion;. gl_Posit + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // ion = (u_modelVi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // 1);. v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // 0 = a_texcoord0; + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // . v_color0 = a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0;.}... +}; +static const uint8_t vs_debugdraw_fill_texture_spv[1270] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........r....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x37, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, // 7...;...?...J... + 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // M...Q........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........&...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // &.......u_modelV 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, // iewProj.....(... - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........>...a_co - 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x42, 0x00, 0x00, 0x00, // lor0........B... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x37, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........7...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, // lor0........;... 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... - 0x46, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // F...a_texcoord0. - 0x05, 0x00, 0x0a, 0x00, 0x51, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....Q...@entryPo + 0x3f, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // ?...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....J...@entryPo 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x54, 0x00, 0x00, 0x00, // ition.......T... + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x4d, 0x00, 0x00, 0x00, // ition.......M... 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // t.v_color0...... - 0x58, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // X...@entryPointO + 0x51, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // Q...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...&....... 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...&....... 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, // #.......H...&... 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, // &.......G...(... - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, // ".......G...>... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, // ........G...B... - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, // ........G...F... - 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, // ........G...Q... - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, // ........G...T... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, // ........G...X... + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, // ".......G...(... + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, // !.......G...7... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ........G...;... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, // ........G...?... + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, // ........G...J... + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // ........G...M... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, // ........G...Q... 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... @@ -79,158 +109,160 @@ static const uint8_t vs_debugdraw_fill_texture_spv[1298] = 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // %... ...'....... 0x26, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, // &...;...'...(... 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...)....... - 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // %... ...=....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, // ....;...=...>... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...A....... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // ....;...A...B... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...E....... - 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // ....;...E...F... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...P....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, // ....;...P...Q... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, // ....;...P...T... - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...W....... - 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, // ....;...W...X... + 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // %... ...6....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, // ....;...6...7... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...:....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....;...:...;... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...>....... + 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // ....;...>...?... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...I....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, // ....;...I...J... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // ....;...I...M... + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...P....... + 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, // ....;...P...Q... 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, // =.......?...>... - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // =.......C...B... - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // =.......G...F... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, // Q.......p...C... - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, // ....Q.......q... - 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // C.......Q....... - 0x72, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // r...C.......P... - 0x07, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, // ....s...p...q... - 0x72, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, // r.......A...)... - 0x74, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // t...(.......=... - 0x25, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // %...u...t....... - 0x07, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, // ....v...s...u... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, // Q.......}...v... - 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, // ............~... - 0x7d, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, // }...R........... - 0x7e, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // ~...v.......>... - 0x51, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, // Q.......>...T... - 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, // ?...>...X...G... - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....8........... - 0x40, 0x00, // @. + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, // =.......8...7... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // =.......<...;... + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // =.......@...?... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // Q.......k...<... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // ....Q.......l... + 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // <.......Q....... + 0x6d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // m...<.......P... + 0x07, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // ....n...k...l... + 0x6d, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, // m.......A...)... + 0x6f, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // o...(.......=... + 0x25, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // %...p...o....... + 0x07, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, // ....q...n...p... + 0x3e, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...J...q...>... + 0x4d, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, // M...8...>...Q... + 0x40, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, // @.......8....... + 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_debugdraw_fill_texture_dx9[349] = +static const uint8_t vs_debugdraw_fill_texture_dx9[357] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // 8.........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x03, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ - 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, // ................ - 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, // ................ - 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ - 0x02, 0x00, 0x03, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........8....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x03, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ + 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0xe0, 0x02, 0x00, 0xe4, 0x90, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, // ..... }; -static const uint8_t vs_debugdraw_fill_texture_dx11[622] = +static const uint8_t vs_debugdraw_fill_texture_dx11[630] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x25, 0x0b, 0xbc, 0xf2, 0xf1, 0x2f, 0x13, 0x1a, // @...DXBC%..../.. - 0x84, 0x83, 0x08, 0xf9, 0x08, 0xa1, 0x2c, 0x84, 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, // ......,.....@... - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, // ....,........... - 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNh........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........V....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ - 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // _............... - 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. - 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNl........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... - 0x02, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO - 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x28, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // RD..SHDR(...@... - 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // J...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _...r......._... - 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // 2.......g.... .. - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e...2 ...... - 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... - 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... - 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........@...DXBC + 0x25, 0x0b, 0xbc, 0xf2, 0xf1, 0x2f, 0x13, 0x1a, 0x84, 0x83, 0x08, 0xf9, 0x08, 0xa1, 0x2c, 0x84, // %..../........,. + 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....@.......,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x28, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // (...@...J...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........_...r... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...2....... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // 2 ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. - 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. - 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... - 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // 2 ......F....... - 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // >...........@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... + 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6...2 ...... + 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // F.......>....... + 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_debugdraw_fill_texture_mtl[777] = +static const uint8_t vs_debugdraw_fill_texture_mtl[842] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0xe4, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at3 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // . float2 a_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // oord0 [[attribut - 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // e(2)]];.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // utput {. float4 - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, // gl_Position [[p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // osition]];. flo - 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // at4 v_color0;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // float2 v_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // d0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, // atMtlShaderUnifo - 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // rm {. float4x4 - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; - 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.vertex xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, // tmpvar_1.w = 1 - 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // .0;. tmpvar_1.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, // yz = _mtl_i.a_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // sition;. _mtl_o - 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, // .gl_Position = ( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // _mtl_u.u_modelVi - 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ - 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, // 1);. _mtl_o.v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // excoord0 = _mtl_ - 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, // i.a_texcoord0;. - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // _mtl_o.v_color0 - 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // = _mtl_i.a_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, // r0;. return _mt - 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // l_o;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x32, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 2 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // . float4 gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi + 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // on]];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, // xlatMtlMain_in. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, // {. float4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // olor0 [[attribut + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e(0)]];. floa + 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // t3 a_position [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float2 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord0 [[attribu + 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(2)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, // .a_position, 1.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, // );. out._entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // olor0 = in.a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, // or0;. out._en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // _texcoord0 = in. + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // a_texcoord0;. + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // return out;.}.. + 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ........@. }; extern const uint8_t* vs_debugdraw_fill_texture_pssl; extern const uint32_t vs_debugdraw_fill_texture_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.sc index e5d82b89de7..073c7de47ef 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_texture.sc @@ -2,8 +2,8 @@ $input a_position, a_texcoord0, a_color0 $output v_texcoord0, v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.bin.h index bde77ae03e2..8fce9a518c4 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.bin.h @@ -1,59 +1,83 @@ -static const uint8_t vs_debugdraw_lines_glsl[325] = +static const uint8_t vs_debugdraw_lines_glsl[303] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x20, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ...attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec3 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // on;.varying high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // p vec4 v_color0; - 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, // .uniform highp m + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // varying vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, // olor0;.uniform m 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // at4 u_modelViewP 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, // roj;.void main ( - 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ).{. highp vec4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m - 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, // mpvar_1);. v_co - 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // lor0 = a_color0; - 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ).{. vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 1.0;. tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // r_1.xyz = a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // tion;. gl_Posit + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // ion = (u_modelVi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // 1);. v_color0 = + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}... }; -static const uint8_t vs_debugdraw_lines_spv[1088] = +static const uint8_t vs_debugdraw_lines_essl[333] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x14, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, // main....6...:... - 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // C...F........... - 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, // ........ ...$Glo - 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // bal..... ....... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........ ...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // bute highp vec3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // a_position;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // _color0;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, // highp mat4 u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // delViewProj;.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, // d main ().{. hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // 1;. tmpvar_1.w + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // 1.xyz = a_positi + 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // on;. gl_Positio + 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // n = (u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1) + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, // ;. v_color0 = a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... +}; +static const uint8_t vs_debugdraw_lines_spv[1060] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x2f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // /...3...<...?... + 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, // ....main........ + 0x20, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, // ...UniformBlock + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. 0x05, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ...."........... - 0x36, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // 6...a_color0.... - 0x05, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ....:...a_positi - 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x43, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // on......C...@ent + 0x2f, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // /...a_color0.... + 0x05, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ....3...a_positi + 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // on......<...@ent 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... - 0x46, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // F...@entryPointO + 0x3f, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // ?...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // utput.v_color0.. 0x48, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // H... ........... 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H... .......#... 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H... ....... 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, // ........G... ... 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, // ....G..."..."... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...6....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...:....... - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ....G...C....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...F....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, // ....G..."...!... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G.../....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...3....... + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ....G...<....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...?....... 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, // ............!... 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, // ................ 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ............... @@ -66,136 +90,135 @@ static const uint8_t vs_debugdraw_lines_spv[1088] = 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ...!....... ... 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ;...!..."....... 0x20, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, // ...#........... - 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...5........... - 0x3b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...5...6....... - 0x20, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...9........... - 0x3b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...9...:....... - 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...B........... - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...B...C....... - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...B...F....... + 0x20, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ............... + 0x3b, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;......./....... + 0x20, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...2........... + 0x3b, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...2...3....... + 0x20, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...;........... + 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...;...<....... + 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...;...?....... 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6............... 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... - 0x07, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....7...6...=... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....;...:...Q... - 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....]...;....... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // Q.......^...;... - 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, // ....Q......._... - 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // ;.......P....... - 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, // `...]...^..._... - 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, // ....A...#...a... + 0x07, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....0.../...=... + 0x09, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....4...3...Q... + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....X...4....... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // Q.......Y...4... + 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, // ....Q.......Z... + 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // 4.......P....... + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, // [...X...Y...Z... + 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, // ....A...#....... 0x22, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, // ".......=....... - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // b...a........... - 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // c...`...b...Q... - 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....h...c....... - 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, // ........i...h... - 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, // R...........i... - 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, // c.......>...C... - 0x80, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, // ....>...F...7... - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ....8.........@. + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ]............... + 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // ^...[...]...>... + 0x3c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, // <...^...>...?... + 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x05, 0x00, // 0.......8....... + 0x01, 0x00, 0x40, 0x00, // ..@. }; -static const uint8_t vs_debugdraw_lines_dx9[313] = +static const uint8_t vs_debugdraw_lines_dx9[321] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x14, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // ..........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, // ................ - 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. - 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ - 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, // ................ - 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ................ + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ + 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... + 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, // ................ + 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................ + 0x00, // . }; -static const uint8_t vs_debugdraw_lines_dx11[512] = +static const uint8_t vs_debugdraw_lines_dx11[520] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xd4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x32, 0x9b, 0xdd, 0xb5, 0xa9, 0xb7, 0x22, 0xf0, // ....DXBC2.....". - 0xcf, 0x5e, 0x34, 0x2c, 0x72, 0xf0, 0x87, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, // .^4,r........... - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, // ....,...|....... - 0x49, 0x53, 0x47, 0x4e, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNH........... - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 8............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........>....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ - 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, // COLOR.POSITION.. - 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNL........... - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 8............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........D....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO - 0x52, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xfc, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // R...SHDR....@... - 0x3f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ?...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, // _...r.......g... - 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // . ..........e... - 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... - 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... - 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0x32, 0x9b, 0xdd, 0xb5, 0xa9, 0xb7, 0x22, 0xf0, 0xcf, 0x5e, 0x34, 0x2c, 0x72, 0xf0, 0x87, 0x00, // 2....."..^4,r... + 0x01, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0x7c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x48, 0x00, 0x00, 0x00, // |.......ISGNH... + 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........8....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // >............... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, // SITION..OSGNL... + 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........8....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // D............... + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT + 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, // ION.COLOR...SHDR + 0xfc, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...?...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........_...r... + 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... + 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... + 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... - 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... - 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... - 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ....>.........@. + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ....F.......>... + 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ......@. }; -static const uint8_t vs_debugdraw_lines_mtl[673] = +static const uint8_t vs_debugdraw_lines_mtl[685] = { - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....I...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x7c, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // |...using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at3 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, // tlShaderOutput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // . float4 gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ition [[position - 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, // ]];. float4 v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // olor0;.};.struct - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // iform {. float4 - 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // x4 u_modelViewPr - 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, // oj;.};.vertex xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // uffer(0)]]).{. - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // put _mtl_o;. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // oat4 tmpvar_1 = - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // 0;. tmpvar_1.w - 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // 1.xyz = _mtl_i.a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, // _position;. _mt - 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // l_o.gl_Position - 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // = (_mtl_u.u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // lViewProj * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // ar_1);. _mtl_o. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // v_color0 = _mtl_ - 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, // i.a_color0;. re - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // turn _mtl_o;.}.. - 0x00, // . + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0f, 0x75, // VSH........I...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x02, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ........y...#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // 4 gl_Position [[ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // position]];.};.. + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // struct xlatMtlMa + 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // in_in.{. floa + 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, // t4 a_color0 [[at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // tribute(0)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // float3 a_posit + 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // ion [[attribute( + 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, // 1)]];.};..vertex + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, // xlatMtlMain(xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, // tMtlMain_in in [ + 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, // stant _Global& _ + 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, // mtl_u [[buffer(0 + 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // )]]).{. xlatM + 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, // tlMain_out out = + 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, // {};. out.gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // Position = _mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // u.u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, // j * float4(in.a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // position, 1.0);. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // out._entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput_v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r0 = in.a_color0 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, // ;. return out + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x02, 0x05, 0x00, 0x01, 0x00, 0x40, 0x00, // ;.}........@. }; extern const uint8_t* vs_debugdraw_lines_pssl; extern const uint32_t vs_debugdraw_lines_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.sc index bfb5c73e59d..50143cf9106 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines.sc @@ -2,8 +2,8 @@ $input a_position, a_color0 $output v_color0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.bin.h index 97179df413f..c35e375c923 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.bin.h @@ -1,71 +1,101 @@ -static const uint8_t vs_debugdraw_lines_stipple_glsl[419] = +static const uint8_t vs_debugdraw_lines_stipple_glsl[385] = { - 0x56, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...Z....u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x7e, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ~...attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec3 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // on;.attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ghp vec2 a_texco - 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // ord0;.varying hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 v_color - 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.varying highp - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, // float v_stipple - 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.uniform highp - 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // mat4 u_modelView - 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // Proj;.void main - 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ().{. highp vec - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_1;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, // pvar_1.w = 1.0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_1.xyz = - 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, // a_position;. g - 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // l_Position = (u_ - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, // modelViewProj * - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, // tmpvar_1);. v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // olor0 = a_color0 - 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, // ;. v_stipple = - 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x3b, 0x0a, 0x7d, // a_texcoord0.x;.} - 0x0a, 0x0a, 0x00, // ... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, // VSH.......Z....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........T...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // attribute vec2 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // 0;.varying float + 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // v_stipple;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // orm mat4 u_model + 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // ViewProj;.void m + 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // ain ().{. vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_1;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, // ar_1.w = 1.0;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, // tmpvar_1.xyz = a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // _position;. gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, // Position = (u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // delViewProj * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // pvar_1);. v_col + 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, // or0 = a_color0;. + 0x20, 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x5f, // v_stipple = a_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // texcoord0.x;.}.. + 0x00, // . }; -static const uint8_t vs_debugdraw_lines_stipple_spv[1314] = +static const uint8_t vs_debugdraw_lines_stipple_essl[427] = { - 0x56, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...Z....u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xf4, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, // main....?...C... - 0x47, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, // G...R...U...Y... - 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ....main........ - 0x26, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, // &...$Global..... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, // VSH.......Z....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........~...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // bute highp vec3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, // ibute highp vec2 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, // ng highp float v + 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // _stipple;.unifor + 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, // m highp mat4 u_m + 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, // odelViewProj;.vo + 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, // id main ().{. h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec4 tmpvar + 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, // _1;. tmpvar_1.w + 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = 1.0;. tmpvar + 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // _1.xyz = a_posit + 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // ion;. gl_Positi + 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // on = (u_modelVie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // wProj * tmpvar_1 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // );. v_color0 = + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x73, 0x74, // a_color0;. v_st + 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ipple = a_texcoo + 0x72, 0x64, 0x30, 0x2e, 0x78, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // rd0.x;.}... +}; +static const uint8_t vs_debugdraw_lines_stipple_spv[1286] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, // VSH.......Z....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........y....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // :...>...B...M... + 0x50, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // P...T........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........&...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // &.......u_modelV 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, // iewProj.....(... - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........?...a_co - 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, // lor0........C... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........:...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, // lor0........>... 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... - 0x47, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // G...a_texcoord0. - 0x05, 0x00, 0x0a, 0x00, 0x52, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....R...@entryPo + 0x42, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // B...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....M...@entryPo 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x55, 0x00, 0x00, 0x00, // ition.......U... + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x50, 0x00, 0x00, 0x00, // ition.......P... 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // t.v_color0...... - 0x59, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // Y...@entryPointO + 0x54, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // T...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x00, // utput.v_stipple. 0x48, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // H...&........... 0x48, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H...&.......#... 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...&....... 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, // ........G...&... 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, // ....G...(..."... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...?....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...C....... - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...G....... - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ....G...R....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...U....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...Y....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, // ....G...(...!... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...:....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...>....... + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...B....... + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ....G...M....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...P....... + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...T....... 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, // ............!... 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, // ................ 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ............... @@ -79,159 +109,161 @@ static const uint8_t vs_debugdraw_lines_stipple_spv[1314] = 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, // ...'.......&... 0x3b, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ;...'...(....... 0x20, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // ...).......%... - 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...>........... - 0x3b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...>...?....... - 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...B........... - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...B...C....... - 0x20, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ...F........... - 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...F...G....... - 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...Q........... - 0x3b, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...Q...R....... - 0x3b, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...Q...U....... - 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ...X........... - 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...X...Y....... + 0x20, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...9........... + 0x3b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...9...:....... + 0x20, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...=........... + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...=...>....... + 0x20, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ...A........... + 0x3b, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...A...B....... + 0x20, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...L........... + 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...L...M....... + 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...L...P....... + 0x20, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ...S........... + 0x3b, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...S...T....... 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6............... 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... - 0x07, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....@...?...=... - 0x09, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....D...C...=... - 0x0b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....H...G...Q... - 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....q...D....... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, // Q.......r...D... - 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, // ....Q.......s... - 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // D.......P....... - 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, // t...q...r...s... - 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, // ....A...)...u... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....;...:...=... + 0x09, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....?...>...=... + 0x0b, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....C...B...Q... + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....m...?....... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // Q.......n...?... + 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, // ....Q.......o... + 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // ?.......P....... + 0x70, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, // p...m...n...o... + 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, // ....A...)...q... 0x28, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // (.......=...%... - 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // v...u........... - 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // w...t...v...Q... - 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....|...H....... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // Q...........w... - 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // ................ - 0x7f, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, // ....R........... - 0x80, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // ....w.......>... - 0x52, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, // R.......>...U... - 0x40, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, // @...>...Y...|... - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....8........... - 0x40, 0x00, // @. + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // r...q........... + 0x73, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // s...p...r...Q... + 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....x...C....... + 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...M...s...>... + 0x50, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, // P...;...>...T... + 0x78, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, // x.......8....... + 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_debugdraw_lines_stipple_dx9[349] = +static const uint8_t vs_debugdraw_lines_stipple_dx9[357] = { - 0x56, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...Z....u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // 8.........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x01, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ - 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, // ................ - 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, // ................ - 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ - 0x02, 0x00, 0x01, 0xe0, 0x02, 0x00, 0x00, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, // VSH.......Z....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........8....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x01, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ + 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0xe0, 0x02, 0x00, 0x00, 0x90, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, // ..... }; -static const uint8_t vs_debugdraw_lines_stipple_dx11[622] = +static const uint8_t vs_debugdraw_lines_stipple_dx11[630] = { - 0x56, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...Z....u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xdc, 0x27, 0x18, 0xb1, 0x2d, 0xea, 0xb1, 0x79, // @...DXBC.'..-..y - 0x0a, 0x20, 0xf3, 0x0f, 0x0b, 0xfd, 0x09, 0x50, 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, // . .....P....@... - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, // ....,........... - 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNh........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........V....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ - 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // _............... - 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. - 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNl........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... - 0x02, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO - 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x28, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // RD..SHDR(...@... - 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // J...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _...r......._... - 0x12, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // ........g.... .. - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e.... ...... - 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... - 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... - 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, // VSH.......Z....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........@...DXBC + 0xdc, 0x27, 0x18, 0xb1, 0x2d, 0xea, 0xb1, 0x79, 0x0a, 0x20, 0xf3, 0x0f, 0x0b, 0xfd, 0x09, 0x50, // .'..-..y. .....P + 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....@.......,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x28, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // (...@...J...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........_...r... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x12, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._........... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. - 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. - 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... - 0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // . .............. - 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // >...........@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... + 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... + 0x0a, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // ........>....... + 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_debugdraw_lines_stipple_mtl[774] = +static const uint8_t vs_debugdraw_lines_stipple_mtl[839] = { - 0x56, 0x53, 0x48, 0x05, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...Z....u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0xe1, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at3 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // . float2 a_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // oord0 [[attribut - 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // e(2)]];.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // utput {. float4 - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, // gl_Position [[p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // osition]];. flo - 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // at4 v_color0;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x3b, // float v_stipple; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, // {. float4x4 u_m - 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, // odelViewProj;.}; - 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .vertex xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // haderOutput xlat - 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // MtlMain (xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ShaderInput _mtl - 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, // _i [[stage_in]], - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // constant xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, // lShaderUniform& - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, // _mtl_u [[buffer( - 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // 0)]]).{. xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, // lShaderOutput _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, // tl_o;. float4 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // mpvar_1 = 0;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz - 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // = _mtl_i.a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, // ion;. _mtl_o.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, // _Position = (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // l_u.u_modelViewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . _mtl_o.v_colo - 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, // r0 = _mtl_i.a_co - 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, // lor0;. _mtl_o.v - 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // _stipple = _mtl_ - 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x3b, // i.a_texcoord0.x; - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1a, 0x5a, 0xef, 0x01, 0x00, 0x0f, 0x75, // VSH.......Z....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // _entryPointOutp + 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x73, 0x74, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x5b, 0x5b, 0x75, // ut_v_stipple [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn1)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, // float4 gl_Posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, // tion [[position] + 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // ];.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, // atMtlMain_in.{. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // float4 a_colo + 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, // r0 [[attribute(0 + 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // )]];. float3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, // a_position [[att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ribute(1)]];. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // float2 a_texcoo + 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // rd0 [[attribute( + 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, // 2)]];.};..vertex + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, // xlatMtlMain(xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, // tMtlMain_in in [ + 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, // stant _Global& _ + 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, // mtl_u [[buffer(0 + 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // )]]).{. xlatM + 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, // tlMain_out out = + 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, // {};. out.gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // Position = _mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // u.u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, // j * float4(in.a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // position, 1.0);. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // out._entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput_v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r0 = in.a_color0 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, // ;. out._entry + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x73, 0x74, // PointOutput_v_st + 0x69, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, // ipple = in.a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // coord0.x;. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x03, 0x05, // turn out;.}..... + 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // .....@. }; extern const uint8_t* vs_debugdraw_lines_stipple_pssl; extern const uint32_t vs_debugdraw_lines_stipple_pssl_size; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.sc index 91b2d8b2b96..121d7120a9a 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_lines_stipple.sc @@ -2,8 +2,8 @@ $input a_position, a_color0, a_texcoord0 $output v_color0, v_stipple /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/entry/cmd.cpp b/3rdparty/bgfx/examples/common/entry/cmd.cpp index 4c68be9b51c..51742b8eb89 100644 --- a/3rdparty/bgfx/examples/common/entry/cmd.cpp +++ b/3rdparty/bgfx/examples/common/entry/cmd.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2010-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2010-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bx/allocator.h> @@ -29,12 +29,24 @@ struct CmdContext void add(const char* _name, ConsoleFn _fn, void* _userData) { - uint32_t cmd = bx::hash<bx::HashMurmur2A>(_name, (uint32_t)bx::strLen(_name) ); - BX_CHECK(m_lookup.end() == m_lookup.find(cmd), "Command \"%s\" already exist.", _name); + const uint32_t cmd = bx::hash<bx::HashMurmur2A>(_name, (uint32_t)bx::strLen(_name) ); + BX_ASSERT(m_lookup.end() == m_lookup.find(cmd), "Command \"%s\" already exist.", _name); + Func fn = { _fn, _userData }; m_lookup.insert(stl::make_pair(cmd, fn) ); } + void remove(const char* _name) + { + const uint32_t cmd = bx::hash<bx::HashMurmur2A>(_name, (uint32_t)bx::strLen(_name) ); + + CmdLookup::iterator it = m_lookup.find(cmd); + if (it != m_lookup.end() ) + { + m_lookup.erase(it); + } + } + void exec(const char* _cmd) { for (bx::StringView next(_cmd); !next.isEmpty(); _cmd = next.getPtr() ) @@ -105,6 +117,11 @@ void cmdAdd(const char* _name, ConsoleFn _fn, void* _userData) s_cmdContext->add(_name, _fn, _userData); } +void cmdRemove(const char* _name) +{ + s_cmdContext->remove(_name); +} + void cmdExec(const char* _format, ...) { char tmp[2048]; diff --git a/3rdparty/bgfx/examples/common/entry/cmd.h b/3rdparty/bgfx/examples/common/entry/cmd.h index 27523d153c0..fe219424edd 100644 --- a/3rdparty/bgfx/examples/common/entry/cmd.h +++ b/3rdparty/bgfx/examples/common/entry/cmd.h @@ -1,6 +1,6 @@ /* - * Copyright 2010-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2010-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef CMD_H_HEADER_GUARD @@ -19,6 +19,9 @@ void cmdShutdown(); void cmdAdd(const char* _name, ConsoleFn _fn, void* _userData = NULL); /// +void cmdRemove(const char* _name); + +/// void cmdExec(const char* _format, ...); #endif // CMD_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/entry/dbg.h b/3rdparty/bgfx/examples/common/entry/dbg.h index 2a50e7a5813..bafe4a51447 100644 --- a/3rdparty/bgfx/examples/common/entry/dbg.h +++ b/3rdparty/bgfx/examples/common/entry/dbg.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef DBG_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/entry/dialog.cpp b/3rdparty/bgfx/examples/common/entry/dialog.cpp new file mode 100644 index 00000000000..8c1bf9731e7 --- /dev/null +++ b/3rdparty/bgfx/examples/common/entry/dialog.cpp @@ -0,0 +1,243 @@ +/* + * Copyright 2010-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include <bx/allocator.h> +#include <bx/filepath.h> +#include <bx/string.h> +#include <bx/readerwriter.h> +#include <bx/process.h> + +#include "dialog.h" + +#if BX_PLATFORM_WINDOWS +typedef uintptr_t (__stdcall *LPOFNHOOKPROC)(void*, uint32_t, uintptr_t, uint64_t); + +struct OPENFILENAMEA +{ + uint32_t structSize; + void* hwndOwner; + void* hinstance; + const char* filter; + const char* customFilter; + uint32_t maxCustomFilter; + uint32_t filterIndex; + const char* file; + uint32_t maxFile; + const char* fileTitle; + uint32_t maxFileTitle; + const char* initialDir; + const char* title; + uint32_t flags; + uint16_t fileOffset; + uint16_t fileExtension; + const char* defExt; + uintptr_t customData; + LPOFNHOOKPROC hook; + const char* templateName; + void* reserved0; + uint32_t reserved1; + uint32_t flagsEx; +}; + +extern "C" bool __stdcall GetOpenFileNameA(OPENFILENAMEA* _ofn); +extern "C" bool __stdcall GetSaveFileNameA(OPENFILENAMEA * _ofn); +extern "C" void* __stdcall GetModuleHandleA(const char* _moduleName); +extern "C" uint32_t __stdcall GetModuleFileNameA(void* _module, char* _outFilePath, uint32_t _size); +extern "C" void* __stdcall ShellExecuteA(void* _hwnd, void* _operation, void* _file, void* _parameters, void* _directory, int32_t _showCmd); + +#endif // BX_PLATFORM_WINDOWS + +void openUrl(const bx::StringView& _url) +{ + char tmp[4096]; + +#if BX_PLATFORM_WINDOWS +# define OPEN "" +#elif BX_PLATFORM_OSX +# define OPEN "open " +#else +# define OPEN "xdg-open " +#endif // BX_PLATFORM_OSX + + bx::snprintf(tmp, BX_COUNTOF(tmp), OPEN "%.*s", _url.getLength(), _url.getPtr() ); + +#undef OPEN + +#if BX_PLATFORM_WINDOWS + void* result = ShellExecuteA(NULL, NULL, tmp, NULL, NULL, false); + BX_UNUSED(result); +#elif !BX_PLATFORM_IOS + int32_t result = system(tmp); + BX_UNUSED(result); +#endif // BX_PLATFORM_* +} + +class Split +{ +public: + Split(const bx::StringView& _str, char _ch) + : m_str(_str) + , m_token(_str.getPtr(), bx::strFind(_str, _ch).getPtr() ) + , m_ch(_ch) + { + } + + bx::StringView next() + { + bx::StringView result = m_token; + m_token = bx::strTrim( + bx::StringView(m_token.getTerm()+1, bx::strFind(bx::StringView(m_token.getTerm()+1, m_str.getTerm() ), m_ch).getPtr() ) + , " \t\n" + ); + return result; + } + + bool isDone() const + { + return m_token.isEmpty(); + } + +private: + const bx::StringView& m_str; + bx::StringView m_token; + char m_ch; +}; + +#if BX_PLATFORM_WINDOWS +extern "C" typedef bool(__stdcall* OPENFILENAMEFUNCTION)(OPENFILENAMEA* _ofn); +static const struct { OPENFILENAMEFUNCTION m_function; uint32_t m_flags; } +s_getFileNameA[] = +{ + { GetOpenFileNameA, /* OFN_EXPLORER */ 0x00080000 | /* OFN_DONTADDTORECENT */ 0x02000000 | /* OFN_FILEMUSTEXIST */ 0x00001000 }, + { GetSaveFileNameA, /* OFN_EXPLORER */ 0x00080000 | /* OFN_DONTADDTORECENT */ 0x02000000 }, +}; +BX_STATIC_ASSERT(BX_COUNTOF(s_getFileNameA) == FileSelectionDialogType::Count); +#endif + +#if !BX_PLATFORM_OSX +bool openFileSelectionDialog( + bx::FilePath& _inOutFilePath + , FileSelectionDialogType::Enum _type + , const bx::StringView& _title + , const bx::StringView& _filter + ) +{ +#if BX_PLATFORM_LINUX + char tmp[4096]; + bx::StaticMemoryBlockWriter writer(tmp, sizeof(tmp) ); + + bx::Error err; + bx::write(&writer, &err + , "--file-selection%s --title \"%.*s\" --filename \"%s\"" + , FileSelectionDialogType::Save == _type ? " --save" : "" + , _title.getLength() + , _title.getPtr() + , _inOutFilePath.getCPtr() + ); + + for (bx::LineReader lr(_filter); !lr.isDone();) + { + const bx::StringView line = lr.next(); + + bx::write(&writer, &err + , " --file-filter \"%.*s\"" + , line.getLength() + , line.getPtr() + ); + } + + bx::write(&writer, '\0', &err); + + if (err.isOk() ) + { + bx::ProcessReader pr; + + if (bx::open(&pr, "zenity", tmp, &err) ) + { + char buffer[1024]; + int32_t total = bx::read(&pr, buffer, sizeof(buffer), &err); + bx::close(&pr); + + if (0 == pr.getExitCode() ) + { + _inOutFilePath.set(bx::strRTrim(bx::StringView(buffer, total), "\n\r") ); + return true; + } + } + } +#elif BX_PLATFORM_WINDOWS + if (_type < 0 || _type >= BX_COUNTOF(s_getFileNameA)) + return false; + + char out[bx::kMaxFilePath] = { '\0' }; + + OPENFILENAMEA ofn; + bx::memSet(&ofn, 0, sizeof(ofn) ); + ofn.structSize = sizeof(OPENFILENAMEA); + ofn.initialDir = _inOutFilePath.getCPtr(); + ofn.file = out; + ofn.maxFile = sizeof(out); + ofn.flags = s_getFileNameA[_type].m_flags; + + char tmp[4096]; + bx::StaticMemoryBlockWriter writer(tmp, sizeof(tmp) ); + + bx::Error err; + + ofn.title = tmp; + bx::write(&writer, &err, "%.*s", _title.getLength(), _title.getPtr() ); + bx::write(&writer, '\0', &err); + + ofn.filter = tmp + uint32_t(bx::seek(&writer) ); + + for (bx::LineReader lr(_filter); !lr.isDone() && err.isOk();) + { + const bx::StringView line = lr.next(); + const bx::StringView sep = bx::strFind(line, '|'); + + if (!sep.isEmpty() ) + { + bx::write(&writer, bx::strTrim(bx::StringView(line.getPtr(), sep.getPtr() ), " "), &err); + bx::write(&writer, '\0', &err); + + bool first = true; + + for (Split split(bx::strTrim(bx::StringView(sep.getPtr()+1, line.getTerm() ), " "), ' '); !split.isDone() && err.isOk();) + { + const bx::StringView token = split.next(); + if (!first) + { + bx::write(&writer, ';', &err); + } + + first = false; + bx::write(&writer, token, &err); + } + + bx::write(&writer, '\0', &err); + } + else + { + bx::write(&writer, line, &err); + bx::write(&writer, '\0', &err); + bx::write(&writer, '\0', &err); + } + } + + bx::write(&writer, '\0', &err); + + if (err.isOk() + && s_getFileNameA[_type].m_function(&ofn)) + { + _inOutFilePath.set(ofn.file); + return true; + } +#else + BX_UNUSED(_inOutFilePath, _type, _title, _filter); +#endif // BX_PLATFORM_LINUX + + return false; +} +#endif // !BX_PLATFORM_OSX diff --git a/3rdparty/bgfx/examples/common/entry/dialog.h b/3rdparty/bgfx/examples/common/entry/dialog.h new file mode 100644 index 00000000000..8c13d2be636 --- /dev/null +++ b/3rdparty/bgfx/examples/common/entry/dialog.h @@ -0,0 +1,33 @@ +/* + * Copyright 2010-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#ifndef DIALOG_H_HEADER_GUARD +#define DIALOG_H_HEADER_GUARD + +namespace bx { class FilePath; class StringView; } + +struct FileSelectionDialogType +{ + enum Enum + { + Open, + Save, + + Count + }; +}; + +/// +bool openFileSelectionDialog( + bx::FilePath& _inOutFilePath + , FileSelectionDialogType::Enum _type + , const bx::StringView& _title + , const bx::StringView& _filter = "All Files | *" + ); + +/// +void openUrl(const bx::StringView& _url); + +#endif // DIALOG_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/entry/dialog_darwin.mm b/3rdparty/bgfx/examples/common/entry/dialog_darwin.mm new file mode 100644 index 00000000000..c80a7a91d11 --- /dev/null +++ b/3rdparty/bgfx/examples/common/entry/dialog_darwin.mm @@ -0,0 +1,152 @@ +/* + * Copyright 2019-2019 Attila Kocsis. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#include "entry_p.h" +#if BX_PLATFORM_OSX + +#include <bx/allocator.h> +#include <bx/filepath.h> +#include <bx/string.h> +#include <bx/readerwriter.h> +#include <bx/process.h> +#include <bx/semaphore.h> + +#import <AppKit/AppKit.h> + +#include "dialog.h" + +class Split +{ +public: + Split(const bx::StringView& _str, char _ch) + : m_str(_str) + , m_token(_str.getPtr(), bx::strFind(_str, _ch).getPtr() ) + , m_ch(_ch) + { + } + + bx::StringView next() + { + bx::StringView result = m_token; + m_token = bx::strTrim( + bx::StringView(m_token.getTerm()+1, bx::strFind(bx::StringView(m_token.getTerm()+1, m_str.getTerm() ), m_ch).getPtr()) + , " \t\n" + ); + return result; + } + + bool isDone() const + { + return m_token.isEmpty(); + } + +private: + const bx::StringView& m_str; + bx::StringView m_token; + char m_ch; +}; + +bool openFileSelectionDialog( + bx::FilePath& _inOutFilePath + , FileSelectionDialogType::Enum _type + , const bx::StringView& _title + , const bx::StringView& _filter + ) +{ + NSMutableArray* fileTypes = [NSMutableArray arrayWithCapacity:10]; + + for (bx::LineReader lr(_filter); !lr.isDone();) + { + const bx::StringView line = lr.next(); + const bx::StringView sep = bx::strFind(line, '|'); + + if (!sep.isEmpty() ) + { + for (Split split(bx::strTrim(bx::StringView(sep.getPtr()+1, line.getTerm() ), " "), ' ') + ; !split.isDone() + ; + ) + { + const bx::StringView token = split.next(); + + if (token.getLength() >= 3 + && token.getPtr()[0] == '*' + && token.getPtr()[1] == '.' + && bx::isAlphaNum(token.getPtr()[2]) ) + { + NSString* extension = [[NSString alloc] initWithBytes:token.getPtr()+2 length:token.getLength()-2 encoding:NSASCIIStringEncoding]; + [fileTypes addObject: extension]; + } + } + } + } + + __block NSString* fileName = nil; + + void (^invokeDialog)(void) = + ^{ + NSSavePanel* panel = nil; + + if (FileSelectionDialogType::Open == _type) + { + NSOpenPanel* openPanel = [NSOpenPanel openPanel]; + openPanel.canChooseFiles = TRUE; + openPanel.allowsMultipleSelection = FALSE; + openPanel.canChooseDirectories = FALSE; + panel = openPanel; + } + else + { + panel = [NSSavePanel savePanel]; + } + + panel.message = [[NSString alloc] initWithBytes:_title.getPtr() length:_title.getLength() encoding:NSASCIIStringEncoding]; + panel.directoryURL = [NSURL URLWithString:@(_inOutFilePath.getCPtr())]; + panel.allowedFileTypes = fileTypes; + + if ([panel runModal] == NSModalResponseOK) + { + NSURL* url = [panel URL]; + + if (nil != url) + { + fileName = [url path]; + [fileName retain]; + } + } + + [panel close]; + }; + + if ([NSThread isMainThread]) + { + invokeDialog(); + } + else + { + bx::Semaphore semaphore; + bx::Semaphore* psemaphore = &semaphore; + + CFRunLoopPerformBlock( + [[NSRunLoop mainRunLoop] getCFRunLoop] + , kCFRunLoopCommonModes + , ^{ + invokeDialog(); + psemaphore->post(); + }); + semaphore.wait(); + } + + if (fileName != nil) + { + _inOutFilePath.set([fileName UTF8String]); + [fileName release]; + return true; + } + + return false; +} + +#endif // BX_PLATFORM_OSX diff --git a/3rdparty/bgfx/examples/common/entry/entry.cpp b/3rdparty/bgfx/examples/common/entry/entry.cpp index 44c9dfd604b..dc3e97488ea 100644 --- a/3rdparty/bgfx/examples/common/entry/entry.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bx/bx.h> @@ -46,7 +46,7 @@ namespace entry virtual bool open(const bx::FilePath& _filePath, bx::Error* _err) override { String filePath(s_currentDir); - filePath.append(_filePath.get() ); + filePath.append(_filePath); return super::open(filePath.getPtr(), _err); } }; @@ -59,7 +59,7 @@ namespace entry virtual bool open(const bx::FilePath& _filePath, bool _append, bx::Error* _err) override { String filePath(s_currentDir); - filePath.append(_filePath.get() ); + filePath.append(_filePath); return super::open(filePath.getPtr(), _append, _err); } }; @@ -189,7 +189,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); const char* getName(Key::Enum _key) { - BX_CHECK(_key < Key::Count, "Invalid key %d.", _key); + BX_ASSERT(_key < Key::Count, "Invalid key %d.", _key); return s_keyName[_key]; } @@ -352,9 +352,6 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { entry::Key::GamepadStart, entry::Modifier::None, 1, NULL, "graphics stats" }, { entry::Key::F1, entry::Modifier::LeftShift, 1, NULL, "graphics stats 0\ngraphics text 0" }, { entry::Key::F3, entry::Modifier::None, 1, NULL, "graphics wireframe" }, - { entry::Key::F4, entry::Modifier::None, 1, NULL, "graphics hmd" }, - { entry::Key::F4, entry::Modifier::LeftShift, 1, NULL, "graphics hmdrecenter" }, - { entry::Key::F4, entry::Modifier::LeftCtrl, 1, NULL, "graphics hmddbg" }, { entry::Key::F6, entry::Modifier::None, 1, NULL, "graphics profiler" }, { entry::Key::F7, entry::Modifier::None, 1, NULL, "graphics vsync" }, { entry::Key::F8, entry::Modifier::None, 1, NULL, "graphics msaa" }, @@ -446,11 +443,27 @@ BX_PRAGMA_DIAGNOSTIC_POP(); return bx::kExitFailure; } - AppI::AppI(const char* _name, const char* _description) + struct AppInternal { - m_name = _name; - m_description = _description; - m_next = s_apps; + AppI* m_next; + const char* m_name; + const char* m_description; + const char* m_url; + }; + + static ptrdiff_t s_offset = 0; + + AppI::AppI(const char* _name, const char* _description, const char* _url) + { + BX_STATIC_ASSERT(sizeof(AppInternal) <= sizeof(m_internal) ); + s_offset = BX_OFFSETOF(AppI, m_internal); + + AppInternal* ai = (AppInternal*)m_internal; + + ai->m_name = _name; + ai->m_description = _description; + ai->m_url = _url; + ai->m_next = s_apps; s_apps = this; s_numApps++; @@ -466,7 +479,8 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { if (NULL != prev) { - prev->m_next = next; + AppInternal* ai = bx::addressOf<AppInternal>(prev, s_offset); + ai->m_next = next; } else { @@ -482,17 +496,26 @@ BX_PRAGMA_DIAGNOSTIC_POP(); const char* AppI::getName() const { - return m_name; + AppInternal* ai = (AppInternal*)m_internal; + return ai->m_name; } const char* AppI::getDescription() const { - return m_description; + AppInternal* ai = (AppInternal*)m_internal; + return ai->m_description; + } + + const char* AppI::getUrl() const + { + AppInternal* ai = (AppInternal*)m_internal; + return ai->m_url; } AppI* AppI::getNext() { - return m_next; + AppInternal* ai = (AppInternal*)m_internal; + return ai->m_next; } AppI* getFirstApp() @@ -510,8 +533,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); _app->init(_argc, _argv, s_width, s_height); bgfx::frame(); - WindowHandle defaultWindow = { 0 }; - setWindowSize(defaultWindow, s_width, s_height); + setWindowSize(kDefaultWindowHandle, s_width, s_height); #if BX_PLATFORM_EMSCRIPTEN s_app = _app; @@ -557,9 +579,15 @@ BX_PRAGMA_DIAGNOSTIC_POP(); for (ii = 1; ii < s_numApps; ++ii) { AppI* app = apps[ii-1]; - app->m_next = apps[ii]; + + AppInternal* ai = bx::addressOf<AppInternal>(app, s_offset); + ai->m_next = apps[ii]; + } + + { + AppInternal* ai = bx::addressOf<AppInternal>(apps[s_numApps-1], s_offset); + ai->m_next = NULL; } - apps[s_numApps-1]->m_next = NULL; BX_FREE(g_allocator, apps); } @@ -580,14 +608,12 @@ BX_PRAGMA_DIAGNOSTIC_POP(); inputInit(); inputAddBindings("bindings", s_bindings); - entry::WindowHandle defaultWindow = { 0 }; - bx::FilePath fp(_argv[0]); char title[bx::kMaxFilePath]; bx::strCopy(title, BX_COUNTOF(title), fp.getBaseName() ); - entry::setWindowTitle(defaultWindow, title); - setWindowSize(defaultWindow, ENTRY_DEFAULT_WIDTH, ENTRY_DEFAULT_HEIGHT); + entry::setWindowTitle(kDefaultWindowHandle, title); + setWindowSize(kDefaultWindowHandle, ENTRY_DEFAULT_WIDTH, ENTRY_DEFAULT_HEIGHT); sortApps(); @@ -653,6 +679,8 @@ restart: bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset, MouseState* _mouse) { + bool needReset = s_reset != _reset; + s_debug = _debug; s_reset = _reset; @@ -739,7 +767,9 @@ restart: handle = size->m_handle; _width = size->m_width; _height = size->m_height; - _reset = !s_reset; // force reset + BX_TRACE("Window resize event: %d: %dx%d", handle, _width, _height); + + needReset = true; } break; @@ -752,7 +782,7 @@ restart: case Event::DropFile: { const DropFileEvent* drop = static_cast<const DropFileEvent*>(ev); - DBG("%s", drop->m_filePath.get() ); + DBG("%s", drop->m_filePath.getCPtr() ); } break; @@ -765,10 +795,13 @@ restart: } while (NULL != ev); + needReset |= _reset != s_reset; + if (handle.idx == 0 - && _reset != s_reset) + && needReset) { _reset = s_reset; + BX_TRACE("bgfx::reset(%d, %d, 0x%x)", _width, _height, _reset) bgfx::reset(_width, _height, _reset); inputSetMouseResolution(uint16_t(_width), uint16_t(_height) ); } @@ -783,6 +816,8 @@ restart: bool processWindowEvents(WindowState& _state, uint32_t& _debug, uint32_t& _reset) { + bool needReset = s_reset != _reset; + s_debug = _debug; s_reset = _reset; @@ -891,10 +926,8 @@ restart: win.m_handle = size->m_handle; win.m_width = size->m_width; win.m_height = size->m_height; - _reset = win.m_handle.idx == 0 - ? !s_reset - : _reset - ; // force reset + + needReset = win.m_handle.idx == 0 ? true : needReset; } break; @@ -943,9 +976,12 @@ restart: } } - if (_reset != s_reset) + needReset |= _reset != s_reset; + + if (needReset) { _reset = s_reset; + BX_TRACE("bgfx::reset(%d, %d, 0x%x)", s_window[0].m_width, s_window[0].m_height, _reset) bgfx::reset(s_window[0].m_width, s_window[0].m_height, _reset); inputSetMouseResolution(uint16_t(s_window[0].m_width), uint16_t(s_window[0].m_height) ); } @@ -994,3 +1030,18 @@ extern "C" bool entry_process_events(uint32_t* _width, uint32_t* _height, uint32 { return entry::processEvents(*_width, *_height, *_debug, *_reset, NULL); } + +extern "C" void* entry_get_default_native_window_handle() +{ + return entry::getNativeWindowHandle(entry::kDefaultWindowHandle); +} + +extern "C" void* entry_get_native_display_handle() +{ + return entry::getNativeDisplayHandle(); +} + +extern "C" bgfx::NativeWindowHandleType::Enum entry_get_native_window_handle_type() +{ + return entry::getNativeWindowHandleType(entry::kDefaultWindowHandle); +} diff --git a/3rdparty/bgfx/examples/common/entry/entry.h b/3rdparty/bgfx/examples/common/entry/entry.h index 75cbeb26ca3..443066e304f 100644 --- a/3rdparty/bgfx/examples/common/entry/entry.h +++ b/3rdparty/bgfx/examples/common/entry/entry.h @@ -1,12 +1,13 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef ENTRY_H_HEADER_GUARD #define ENTRY_H_HEADER_GUARD #include "dbg.h" +#include <bgfx/bgfx.h> #include <bx/bx.h> #include <bx/filepath.h> #include <bx/string.h> @@ -24,25 +25,31 @@ extern "C" int _main_(int _argc, char** _argv); #endif // ENTRY_CONFIG_IMPLEMENT_MAIN #if ENTRY_CONFIG_IMPLEMENT_MAIN -#define ENTRY_IMPLEMENT_MAIN(_app, _name, _description) \ +#define ENTRY_IMPLEMENT_MAIN(_app, ...) \ int _main_(int _argc, char** _argv) \ { \ - _app app(_name, _description); \ + _app app(__VA_ARGS__); \ return entry::runApp(&app, _argc, _argv); \ } #else -#define ENTRY_IMPLEMENT_MAIN(_app, _name, _description) \ - _app s_ ## _app ## App(_name, _description) +#define ENTRY_IMPLEMENT_MAIN(_app, ...) \ + _app s_ ## _app ## App(__VA_ARGS__) #endif // ENTRY_CONFIG_IMPLEMENT_MAIN +/// +#define ENTRY_HANDLE(_name) \ + struct _name { uint16_t idx; }; \ + inline bool isValid(_name _handle) { return UINT16_MAX != _handle.idx; } + namespace entry { - struct WindowHandle { uint16_t idx; }; - inline bool isValid(WindowHandle _handle) { return UINT16_MAX != _handle.idx; } + ENTRY_HANDLE(WindowHandle); + ENTRY_HANDLE(GamepadHandle); - struct GamepadHandle { uint16_t idx; }; - inline bool isValid(GamepadHandle _handle) { return UINT16_MAX != _handle.idx; } + /// + constexpr WindowHandle kDefaultWindowHandle = { 0 }; + /// struct MouseButton { enum Enum @@ -56,6 +63,7 @@ namespace entry }; }; + /// struct GamepadAxis { enum Enum @@ -71,6 +79,7 @@ namespace entry }; }; + /// struct Modifier { enum Enum @@ -87,6 +96,7 @@ namespace entry }; }; + /// struct Key { enum Enum @@ -198,6 +208,7 @@ namespace entry }; }; + /// struct Suspend { enum Enum @@ -211,8 +222,10 @@ namespace entry }; }; + /// const char* getName(Key::Enum _key); + /// struct MouseState { MouseState() @@ -232,6 +245,7 @@ namespace entry uint8_t m_buttons[entry::MouseButton::Count]; }; + /// struct GamepadState { GamepadState() @@ -242,22 +256,55 @@ namespace entry int32_t m_axis[entry::GamepadAxis::Count]; }; + /// bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset, MouseState* _mouse = NULL); + /// bx::FileReaderI* getFileReader(); + + /// bx::FileWriterI* getFileWriter(); + + /// bx::AllocatorI* getAllocator(); + /// WindowHandle createWindow(int32_t _x, int32_t _y, uint32_t _width, uint32_t _height, uint32_t _flags = ENTRY_WINDOW_FLAG_NONE, const char* _title = ""); + + /// void destroyWindow(WindowHandle _handle); + + /// void setWindowPos(WindowHandle _handle, int32_t _x, int32_t _y); + + /// void setWindowSize(WindowHandle _handle, uint32_t _width, uint32_t _height); + + /// void setWindowTitle(WindowHandle _handle, const char* _title); + + /// void setWindowFlags(WindowHandle _handle, uint32_t _flags, bool _enabled); + + /// void toggleFullscreen(WindowHandle _handle); + + /// void setMouseLock(WindowHandle _handle, bool _lock); + + /// + void* getNativeWindowHandle(WindowHandle _handle); + + /// + void* getNativeDisplayHandle(); + + /// + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle); + + /// void setCurrentDir(const char* _dir); + /// struct WindowState { WindowState() @@ -276,13 +323,15 @@ namespace entry bx::FilePath m_dropFile; }; + /// bool processWindowEvents(WindowState& _state, uint32_t& _debug, uint32_t& _reset); + /// class BX_NO_VTABLE AppI { public: /// - AppI(const char* _name, const char* _description); + AppI(const char* _name, const char* _description, const char* _url = "https://bkaradzic.github.io/bgfx/index.html"); /// virtual ~AppI() = 0; @@ -303,13 +352,13 @@ namespace entry const char* getDescription() const; /// - AppI* getNext(); + const char* getUrl() const; - AppI* m_next; + /// + AppI* getNext(); private: - const char* m_name; - const char* m_description; + BX_ALIGN_DECL(16, uintptr_t) m_internal[4]; }; /// diff --git a/3rdparty/bgfx/examples/common/entry/entry_android.cpp b/3rdparty/bgfx/examples/common/entry/entry_android.cpp index 644ed4aca4c..a99735b6df5 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_android.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_android.cpp @@ -1,14 +1,12 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" #if ENTRY_CONFIG_USE_NATIVE && BX_PLATFORM_ANDROID -#include <bgfx/platform.h> - #include <bx/thread.h> #include <bx/file.h> @@ -29,18 +27,6 @@ extern "C" namespace entry { - /// - inline void androidSetWindow(::ANativeWindow* _window) - { - bgfx::PlatformData pd; - pd.ndt = NULL; - pd.nwh = _window; - pd.context = NULL; - pd.backBuffer = NULL; - pd.backBufferDS = NULL; - bgfx::setPlatformData(pd); - } - struct GamepadRemap { uint16_t m_keyCode; @@ -108,18 +94,18 @@ namespace entry virtual bool open(const bx::FilePath& _filePath, bx::Error* _err) override { - BX_CHECK(NULL != _err, "Reader/Writer interface calling functions must handle errors."); + BX_ASSERT(NULL != _err, "Reader/Writer interface calling functions must handle errors."); if (NULL != m_file) { - BX_ERROR_SET(_err, BX_ERROR_READERWRITER_ALREADY_OPEN, "FileReader: File is already open."); + BX_ERROR_SET(_err, bx::kErrorReaderWriterAlreadyOpen, "FileReader: File is already open."); return false; } - m_file = AAssetManager_open(m_assetManager, _filePath.get(), AASSET_MODE_RANDOM); + m_file = AAssetManager_open(m_assetManager, _filePath.getCPtr(), AASSET_MODE_RANDOM); if (NULL == m_file) { - BX_ERROR_SET(_err, BX_ERROR_READERWRITER_OPEN, "FileReader: Failed to open file."); + BX_ERROR_SET(_err, bx::kErrorReaderWriterOpen, "FileReader: Failed to open file."); return false; } @@ -139,22 +125,22 @@ namespace entry virtual int64_t seek(int64_t _offset, bx::Whence::Enum _whence) override { - BX_CHECK(NULL != m_file, "Reader/Writer file is not open."); + BX_ASSERT(NULL != m_file, "Reader/Writer file is not open."); return AAsset_seek64(m_file, _offset, _whence); } virtual int32_t read(void* _data, int32_t _size, bx::Error* _err) override { - BX_CHECK(NULL != m_file, "Reader/Writer file is not open."); - BX_CHECK(NULL != _err, "Reader/Writer interface calling functions must handle errors."); + BX_ASSERT(NULL != m_file, "Reader/Writer file is not open."); + BX_ASSERT(NULL != _err, "Reader/Writer interface calling functions must handle errors."); int32_t size = (int32_t)AAsset_read(m_file, _data, _size); if (size != _size) { if (0 == AAsset_getRemainingLength(m_file) ) { - BX_ERROR_SET(_err, BX_ERROR_READERWRITER_EOF, "FileReader: EOF."); + BX_ERROR_SET(_err, bx::kErrorReaderWriterEof, "FileReader: EOF."); } return size >= 0 ? size : 0; @@ -197,8 +183,8 @@ namespace entry , 0 ); - const char* const argv[1] = { "android.so" }; - m_mte.m_argc = 1; + static const char* const argv[] = { "android.so" }; + m_mte.m_argc = BX_COUNTOF(argv); m_mte.m_argv = argv; while (0 == m_app->destroyRequested) @@ -233,7 +219,6 @@ namespace entry if (m_window != m_app->window) { m_window = m_app->window; - androidSetWindow(m_window); int32_t width = ANativeWindow_getWidth(m_window); int32_t height = ANativeWindow_getHeight(m_window); @@ -550,12 +535,33 @@ namespace entry BX_UNUSED(_handle, _lock); } + void* getNativeWindowHandle(WindowHandle _handle) + { + if (kDefaultWindowHandle.idx == _handle.idx) + { + return s_ctx.m_window; + } + + return NULL; + } + + void* getNativeDisplayHandle() + { + return NULL; + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { + BX_UNUSED(_handle); + return bgfx::NativeWindowHandleType::Default; + } + int32_t MainThreadEntry::threadFunc(bx::Thread* _thread, void* _userData) { BX_UNUSED(_thread); int32_t result = chdir("/sdcard/bgfx/examples/runtime"); - BX_CHECK(0 == result, "Failed to chdir to dir. android.permission.WRITE_EXTERNAL_STORAGE?", errno); + BX_ASSERT(0 == result, "Failed to chdir to dir. android.permission.WRITE_EXTERNAL_STORAGE?", errno); MainThreadEntry* self = (MainThreadEntry*)_userData; result = main(self->m_argc, self->m_argv); diff --git a/3rdparty/bgfx/examples/common/entry/entry_glfw.cpp b/3rdparty/bgfx/examples/common/entry/entry_glfw.cpp index 5e81dd9aece..4c699f23a5e 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_glfw.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_glfw.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" @@ -15,6 +15,7 @@ #endif // GLFW_VERSION_MINOR < 2 #if BX_PLATFORM_LINUX || BX_PLATFORM_BSD +# define GLFW_EXPOSE_NATIVE_WAYLAND # define GLFW_EXPOSE_NATIVE_X11 # define GLFW_EXPOSE_NATIVE_GLX #elif BX_PLATFORM_OSX @@ -40,7 +41,14 @@ namespace entry static void* glfwNativeWindowHandle(GLFWwindow* _window) { # if BX_PLATFORM_LINUX || BX_PLATFORM_BSD - return (void*)(uintptr_t)glfwGetX11Window(_window); + if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) + { + return glfwGetWaylandWindow(_window); + } + else + { + return (void*)(uintptr_t)glfwGetX11Window(_window); + } # elif BX_PLATFORM_OSX return glfwGetCocoaWindow(_window); # elif BX_PLATFORM_WINDOWS @@ -48,23 +56,6 @@ namespace entry # endif // BX_PLATFORM_ } - static void glfwSetWindow(GLFWwindow* _window) - { - bgfx::PlatformData pd; -# if BX_PLATFORM_LINUX || BX_PLATFORM_BSD - pd.ndt = glfwGetX11Display(); -# elif BX_PLATFORM_OSX - pd.ndt = NULL; -# elif BX_PLATFORM_WINDOWS - pd.ndt = NULL; -# endif // BX_PLATFORM_WINDOWS - pd.nwh = glfwNativeWindowHandle(_window); - pd.context = NULL; - pd.backBuffer = NULL; - pd.backBufferDS = NULL; - bgfx::setPlatformData(pd); - } - static uint8_t translateKeyModifiers(int _glfw) { uint8_t modifiers = 0; @@ -412,29 +403,28 @@ namespace entry glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); WindowHandle handle = { m_windowAlloc.alloc() }; - m_windows[0] = glfwCreateWindow(ENTRY_DEFAULT_WIDTH + m_window[0] = glfwCreateWindow(ENTRY_DEFAULT_WIDTH , ENTRY_DEFAULT_HEIGHT , "bgfx" , NULL , NULL ); - if (!m_windows[0]) + if (!m_window[0]) { DBG("glfwCreateWindow failed!"); glfwTerminate(); return bx::kExitFailure; } - glfwSetKeyCallback(m_windows[0], keyCb); - glfwSetCharCallback(m_windows[0], charCb); - glfwSetScrollCallback(m_windows[0], scrollCb); - glfwSetCursorPosCallback(m_windows[0], cursorPosCb); - glfwSetMouseButtonCallback(m_windows[0], mouseButtonCb); - glfwSetWindowSizeCallback(m_windows[0], windowSizeCb); - glfwSetDropCallback(m_windows[0], dropFileCb); + glfwSetKeyCallback(m_window[0], keyCb); + glfwSetCharCallback(m_window[0], charCb); + glfwSetScrollCallback(m_window[0], scrollCb); + glfwSetCursorPosCallback(m_window[0], cursorPosCb); + glfwSetMouseButtonCallback(m_window[0], mouseButtonCb); + glfwSetWindowSizeCallback(m_window[0], windowSizeCb); + glfwSetDropCallback(m_window[0], dropFileCb); - glfwSetWindow(m_windows[0]); m_eventQueue.postSizeEvent(handle, ENTRY_DEFAULT_WIDTH, ENTRY_DEFAULT_HEIGHT); for (uint32_t ii = 0; ii < ENTRY_CONFIG_MAX_GAMEPADS; ++ii) @@ -451,10 +441,10 @@ namespace entry m_thread.init(MainThreadEntry::threadFunc, &m_mte); - while (NULL != m_windows[0] - && !glfwWindowShouldClose(m_windows[0])) + while (NULL != m_window[0] + && !glfwWindowShouldClose(m_window[0])) { - glfwWaitEvents(); + glfwWaitEventsTimeout(0.016); for (uint32_t ii = 0; ii < ENTRY_CONFIG_MAX_GAMEPADS; ++ii) { @@ -494,7 +484,7 @@ namespace entry glfwSetWindowSizeCallback(window, windowSizeCb); glfwSetDropCallback(window, dropFileCb); - m_windows[msg->m_handle.idx] = window; + m_window[msg->m_handle.idx] = window; m_eventQueue.postSizeEvent(msg->m_handle, msg->m_width, msg->m_height); m_eventQueue.postWindowEvent(msg->m_handle, glfwNativeWindowHandle(window)); } @@ -504,31 +494,31 @@ namespace entry { if (isValid(msg->m_handle) ) { - GLFWwindow* window = m_windows[msg->m_handle.idx]; + GLFWwindow* window = m_window[msg->m_handle.idx]; m_eventQueue.postWindowEvent(msg->m_handle); glfwDestroyWindow(window); - m_windows[msg->m_handle.idx] = NULL; + m_window[msg->m_handle.idx] = NULL; } } break; case GLFW_WINDOW_SET_TITLE: { - GLFWwindow* window = m_windows[msg->m_handle.idx]; + GLFWwindow* window = m_window[msg->m_handle.idx]; glfwSetWindowTitle(window, msg->m_title.c_str()); } break; case GLFW_WINDOW_SET_POS: { - GLFWwindow* window = m_windows[msg->m_handle.idx]; + GLFWwindow* window = m_window[msg->m_handle.idx]; glfwSetWindowPos(window, msg->m_x, msg->m_y); } break; case GLFW_WINDOW_SET_SIZE: { - GLFWwindow* window = m_windows[msg->m_handle.idx]; + GLFWwindow* window = m_window[msg->m_handle.idx]; glfwSetWindowSize(window, msg->m_width, msg->m_height); } break; @@ -541,7 +531,7 @@ namespace entry case GLFW_WINDOW_TOGGLE_FULL_SCREEN: { - GLFWwindow* window = m_windows[msg->m_handle.idx]; + GLFWwindow* window = m_window[msg->m_handle.idx]; if (glfwGetWindowMonitor(window) ) { glfwSetWindowMonitor(window @@ -578,7 +568,7 @@ namespace entry case GLFW_WINDOW_MOUSE_LOCK: { - GLFWwindow* window = m_windows[msg->m_handle.idx]; + GLFWwindow* window = m_window[msg->m_handle.idx]; if (msg->m_value) { glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); @@ -598,7 +588,7 @@ namespace entry m_eventQueue.postExitEvent(); m_thread.shutdown(); - glfwDestroyWindow(m_windows[0]); + glfwDestroyWindow(m_window[0]); glfwTerminate(); return m_thread.getExitCode(); @@ -610,7 +600,7 @@ namespace entry for (uint32_t ii = 0, num = m_windowAlloc.getNumHandles(); ii < num; ++ii) { uint16_t idx = m_windowAlloc.getHandleAt(ii); - if (_window == m_windows[idx]) + if (_window == m_window[idx]) { WindowHandle handle = { idx }; return handle; @@ -635,7 +625,7 @@ namespace entry EventQueue m_eventQueue; bx::Mutex m_lock; - GLFWwindow* m_windows[ENTRY_CONFIG_MAX_WINDOWS]; + GLFWwindow* m_window[ENTRY_CONFIG_MAX_WINDOWS]; bx::HandleAllocT<ENTRY_CONFIG_MAX_WINDOWS> m_windowAlloc; GamepadGLFW m_gamepad[ENTRY_CONFIG_MAX_GAMEPADS]; @@ -758,13 +748,11 @@ namespace entry const Event* poll() { - glfwPostEmptyEvent(); return s_ctx.m_eventQueue.poll(); } const Event* poll(WindowHandle _handle) { - glfwPostEmptyEvent(); return s_ctx.m_eventQueue.poll(_handle); } @@ -784,7 +772,6 @@ namespace entry msg->m_title = _title; msg->m_handle.idx = s_ctx.m_windowAlloc.alloc(); s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); return msg->m_handle; } @@ -793,7 +780,6 @@ namespace entry Msg* msg = new Msg(GLFW_WINDOW_DESTROY); msg->m_handle = _handle; s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); } void setWindowPos(WindowHandle _handle, int32_t _x, int32_t _y) @@ -803,7 +789,6 @@ namespace entry msg->m_y = _y; msg->m_handle = _handle; s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); } void setWindowSize(WindowHandle _handle, uint32_t _width, uint32_t _height) @@ -813,7 +798,6 @@ namespace entry msg->m_height = _height; msg->m_handle = _handle; s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); } void setWindowTitle(WindowHandle _handle, const char* _title) @@ -822,7 +806,6 @@ namespace entry msg->m_title = _title; msg->m_handle = _handle; s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); } void setWindowFlags(WindowHandle _handle, uint32_t _flags, bool _enabled) @@ -835,7 +818,6 @@ namespace entry Msg* msg = new Msg(GLFW_WINDOW_TOGGLE_FULL_SCREEN); msg->m_handle = _handle; s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); } void setMouseLock(WindowHandle _handle, bool _lock) @@ -844,7 +826,43 @@ namespace entry msg->m_value = _lock; msg->m_handle = _handle; s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); + } + + void* getNativeWindowHandle(WindowHandle _handle) + { + return glfwNativeWindowHandle(s_ctx.m_window[_handle.idx]); + } + + void* getNativeDisplayHandle() + { +# if BX_PLATFORM_LINUX || BX_PLATFORM_BSD + if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) + { + return glfwGetWaylandDisplay(); + } + else + { + return glfwGetX11Display(); + } +# else + return NULL; +# endif // BX_PLATFORM_* + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { +# if BX_PLATFORM_LINUX || BX_PLATFORM_BSD + if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) + { + return bgfx::NativeWindowHandleType::Wayland; + } + else + { + return bgfx::NativeWindowHandleType::Default; + } +# else + return bgfx::NativeWindowHandleType::Default; +# endif // BX_PLATFORM_* } int32_t MainThreadEntry::threadFunc(bx::Thread* _thread, void* _userData) @@ -858,7 +876,6 @@ namespace entry Msg* msg = new Msg(GLFW_WINDOW_DESTROY); msg->m_handle.idx = 0; s_ctx.m_msgs.push(msg); - glfwPostEmptyEvent(); return result; } diff --git a/3rdparty/bgfx/examples/common/entry/entry_asmjs.cpp b/3rdparty/bgfx/examples/common/entry/entry_html5.cpp index 4434e41c9e6..d33879229f9 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_asmjs.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_html5.cpp @@ -1,12 +1,14 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" #if BX_PLATFORM_EMSCRIPTEN +#include <bgfx/platform.h> + #include <emscripten.h> #include <emscripten/html5.h> @@ -15,10 +17,17 @@ extern "C" void entry_emscripten_yield() // emscripten_sleep(0); } +#define _EMSCRIPTEN_CHECK(_check, _call) \ + BX_MACRO_BLOCK_BEGIN \ + EMSCRIPTEN_RESULT __result__ = _call; \ + _check(EMSCRIPTEN_RESULT_SUCCESS == __result__, #_call " FAILED 0x%08x\n", (uint32_t)__result__); \ + BX_UNUSED(__result__); \ + BX_MACRO_BLOCK_END + +#define EMSCRIPTEN_CHECK(_call) _EMSCRIPTEN_CHECK(BX_ASSERT, _call) + namespace entry { - static WindowHandle s_defaultWindow = { 0 }; - static uint8_t s_translateKey[256]; struct Context @@ -88,17 +97,19 @@ namespace entry int32_t run(int _argc, const char* const* _argv) { - emscripten_set_mousedown_callback("#canvas", this, true, mouseCb); - emscripten_set_mouseup_callback("#canvas", this, true, mouseCb); - emscripten_set_mousemove_callback("#canvas", this, true, mouseCb); + static const char* canvas = "#canvas"; + + EMSCRIPTEN_CHECK(emscripten_set_mousedown_callback(canvas, this, true, mouseCb) ); + EMSCRIPTEN_CHECK(emscripten_set_mouseup_callback(canvas, this, true, mouseCb) ); + EMSCRIPTEN_CHECK(emscripten_set_mousemove_callback(canvas, this, true, mouseCb) ); - emscripten_set_wheel_callback("#canvas", this, true, wheelCb); + EMSCRIPTEN_CHECK(emscripten_set_wheel_callback(canvas, this, true, wheelCb) ); - emscripten_set_keypress_callback(NULL, this, true, keyCb); - emscripten_set_keydown_callback(NULL, this, true, keyCb); - emscripten_set_keyup_callback(NULL, this, true, keyCb); + EMSCRIPTEN_CHECK(emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, this, true, keyCb) ); + EMSCRIPTEN_CHECK(emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, this, true, keyCb) ); + EMSCRIPTEN_CHECK(emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, this, true, keyCb) ); - emscripten_set_resize_callback(0, this, true, resizeCb); + EMSCRIPTEN_CHECK(emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, this, true, resizeCb) ); EmscriptenFullscreenStrategy fullscreenStrategy = {}; fullscreenStrategy.scaleMode = EMSCRIPTEN_FULLSCREEN_SCALE_DEFAULT; @@ -107,11 +118,11 @@ namespace entry fullscreenStrategy.canvasResizedCallback = canvasResizeCb; fullscreenStrategy.canvasResizedCallbackUserData = this; - emscripten_request_fullscreen_strategy("#canvas", false, &fullscreenStrategy); + EMSCRIPTEN_CHECK(emscripten_request_fullscreen_strategy(canvas, false, &fullscreenStrategy) ); - emscripten_set_focus_callback(NULL, this, true, focusCb); - emscripten_set_focusin_callback(NULL, this, true, focusCb); - emscripten_set_focusout_callback(NULL, this, true, focusCb); + EMSCRIPTEN_CHECK(emscripten_set_focus_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, this, true, focusCb) ); + EMSCRIPTEN_CHECK(emscripten_set_focusin_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, this, true, focusCb) ); + EMSCRIPTEN_CHECK(emscripten_set_focusout_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, this, true, focusCb) ); int32_t result = main(_argc, _argv); return result; @@ -134,51 +145,58 @@ namespace entry static Context s_ctx; - EM_BOOL Context::mouseCb(int eventType, const EmscriptenMouseEvent* event, void* userData) + EM_BOOL Context::mouseCb(int32_t _eventType, const EmscriptenMouseEvent* _event, void* _userData) { - BX_UNUSED(userData); + BX_UNUSED(_userData); - if (event) + if (_event) { - switch (eventType) + switch (_eventType) { case EMSCRIPTEN_EVENT_MOUSEMOVE: - { - s_ctx.m_mx = event->canvasX; - s_ctx.m_my = event->canvasY; - s_ctx.m_eventQueue.postMouseEvent(s_defaultWindow, s_ctx.m_mx, s_ctx.m_my, s_ctx.m_scroll); + s_ctx.m_mx = _event->targetX; + s_ctx.m_my = _event->targetY; + s_ctx.m_eventQueue.postMouseEvent(kDefaultWindowHandle, s_ctx.m_mx, s_ctx.m_my, s_ctx.m_scroll); return true; - } + case EMSCRIPTEN_EVENT_MOUSEDOWN: case EMSCRIPTEN_EVENT_MOUSEUP: case EMSCRIPTEN_EVENT_DBLCLICK: - { - s_ctx.m_mx = event->canvasX; - s_ctx.m_my = event->canvasY; - MouseButton::Enum mb = (event->button == 2) ? MouseButton::Right : ((event->button == 1) ? MouseButton::Middle : MouseButton::Left); - s_ctx.m_eventQueue.postMouseEvent(s_defaultWindow, s_ctx.m_mx, s_ctx.m_my, s_ctx.m_scroll, mb, (eventType != EMSCRIPTEN_EVENT_MOUSEUP)); + s_ctx.m_mx = _event->targetX; + s_ctx.m_my = _event->targetY; + MouseButton::Enum mb = _event->button == 2 + ? MouseButton::Right : ( (_event->button == 1) + ? MouseButton::Middle : MouseButton::Left) + ; + s_ctx.m_eventQueue.postMouseEvent( + kDefaultWindowHandle + , s_ctx.m_mx + , s_ctx.m_my + , s_ctx.m_scroll + , mb + , (_eventType != EMSCRIPTEN_EVENT_MOUSEUP) + ); return true; - } } } return false; } - EM_BOOL Context::wheelCb(int eventType, const EmscriptenWheelEvent* event, void* userData) + EM_BOOL Context::wheelCb(int32_t _eventType, const EmscriptenWheelEvent* _event, void* _userData) { - BX_UNUSED(userData); + BX_UNUSED(_userData); - if (event) + if (_event) { - switch (eventType) + switch (_eventType) { case EMSCRIPTEN_EVENT_WHEEL: { - s_ctx.m_scrollf += event->deltaY; + s_ctx.m_scrollf += _event->deltaY; s_ctx.m_scroll = (int32_t)s_ctx.m_scrollf; - s_ctx.m_eventQueue.postMouseEvent(s_defaultWindow, s_ctx.m_mx, s_ctx.m_my, s_ctx.m_scroll); + s_ctx.m_eventQueue.postMouseEvent(kDefaultWindowHandle, s_ctx.m_mx, s_ctx.m_my, s_ctx.m_scroll); return true; } } @@ -187,83 +205,90 @@ namespace entry return false; } - uint8_t translateModifiers(const EmscriptenKeyboardEvent* event) + uint8_t translateModifiers(const EmscriptenKeyboardEvent* _event) { uint8_t mask = 0; - if (event->shiftKey) + if (_event->shiftKey) + { mask |= Modifier::LeftShift | Modifier::RightShift; + } - if (event->altKey) + if (_event->altKey) + { mask |= Modifier::LeftAlt | Modifier::RightAlt; + } - if (event->ctrlKey) + if (_event->ctrlKey) + { mask |= Modifier::LeftCtrl | Modifier::RightCtrl; + } - if (event->metaKey) + if (_event->metaKey) + { mask |= Modifier::LeftMeta | Modifier::RightMeta; + } return mask; } - Key::Enum handleKeyEvent(const EmscriptenKeyboardEvent* event, uint8_t* specialKeys, uint8_t* _pressedChar) + Key::Enum handleKeyEvent(const EmscriptenKeyboardEvent* _event, uint8_t* _specialKeys, uint8_t* _pressedChar) { - *_pressedChar = (uint8_t)event->keyCode; + *_pressedChar = uint8_t(_event->keyCode); - int keyCode = (int)event->keyCode; - *specialKeys = translateModifiers(event); + int32_t keyCode = int32_t(_event->keyCode); + *_specialKeys = translateModifiers(_event); - if (event->charCode == 0) + if (_event->charCode == 0) { switch (keyCode) { - case 112: return Key::F1; - case 113: return Key::F2; - case 114: return Key::F3; - case 115: return Key::F4; - case 116: return Key::F5; - case 117: return Key::F6; - case 118: return Key::F7; - case 119: return Key::F8; - case 120: return Key::F9; - case 121: return Key::F10; - case 122: return Key::F11; - case 123: return Key::F12; - - case 37: return Key::Left; - case 39: return Key::Right; - case 38: return Key::Up; - case 40: return Key::Down; + case 112: return Key::F1; + case 113: return Key::F2; + case 114: return Key::F3; + case 115: return Key::F4; + case 116: return Key::F5; + case 117: return Key::F6; + case 118: return Key::F7; + case 119: return Key::F8; + case 120: return Key::F9; + case 121: return Key::F10; + case 122: return Key::F11; + case 123: return Key::F12; + + case 37: return Key::Left; + case 39: return Key::Right; + case 38: return Key::Up; + case 40: return Key::Down; } } // if this is a unhandled key just return None if (keyCode < 256) { - return (Key::Enum)s_translateKey[keyCode]; + return Key::Enum(s_translateKey[keyCode]); } return Key::None; } - EM_BOOL Context::keyCb(int eventType, const EmscriptenKeyboardEvent *event, void *userData) + EM_BOOL Context::keyCb(int32_t _eventType, const EmscriptenKeyboardEvent* _event, void* _userData) { - BX_UNUSED(userData); + BX_UNUSED(_userData); - if (event) + if (_event) { uint8_t modifiers = 0; uint8_t pressedChar[4]; - Key::Enum key = handleKeyEvent(event, &modifiers, &pressedChar[0]); + Key::Enum key = handleKeyEvent(_event, &modifiers, &pressedChar[0]); // Returning true means that we take care of the key (instead of the default behavior) if (key != Key::None) { - switch (eventType) + switch (_eventType) { case EMSCRIPTEN_EVENT_KEYPRESS: case EMSCRIPTEN_EVENT_KEYDOWN: - { if (key == Key::KeyQ && (modifiers & Modifier::RightMeta) ) { s_ctx.m_eventQueue.postExitEvent(); @@ -271,17 +296,15 @@ namespace entry else { enum { ShiftMask = Modifier::LeftShift|Modifier::RightShift }; - s_ctx.m_eventQueue.postCharEvent(s_defaultWindow, 1, pressedChar); - s_ctx.m_eventQueue.postKeyEvent(s_defaultWindow, key, modifiers, true); + s_ctx.m_eventQueue.postCharEvent(kDefaultWindowHandle, 1, pressedChar); + s_ctx.m_eventQueue.postKeyEvent(kDefaultWindowHandle, key, modifiers, true); return true; } break; - } + case EMSCRIPTEN_EVENT_KEYUP: - { - s_ctx.m_eventQueue.postKeyEvent(s_defaultWindow, key, modifiers, false); + s_ctx.m_eventQueue.postKeyEvent(kDefaultWindowHandle, key, modifiers, false); return true; - } } } @@ -289,47 +312,41 @@ namespace entry return false; } - EM_BOOL Context::resizeCb(int eventType, const EmscriptenUiEvent* event, void* userData) + EM_BOOL Context::resizeCb(int32_t _eventType, const EmscriptenUiEvent* _event, void* _userData) { - BX_UNUSED(eventType, event, userData); + BX_UNUSED(_eventType, _event, _userData); return false; } - EM_BOOL Context::canvasResizeCb(int eventType, const void* reserved, void* userData) + EM_BOOL Context::canvasResizeCb(int32_t _eventType, const void* _reserved, void* _userData) { - BX_UNUSED(eventType, reserved, userData); + BX_UNUSED(_eventType, _reserved, _userData); return false; } - EM_BOOL Context::focusCb(int eventType, const EmscriptenFocusEvent* event, void* userData) + EM_BOOL Context::focusCb(int32_t _eventType, const EmscriptenFocusEvent* _event, void* _userData) { - printf("focusCb %d", eventType); - BX_UNUSED(event, userData); + BX_UNUSED(_event, _userData); - if (event) + if (_event) { - switch (eventType) + switch (_eventType) { case EMSCRIPTEN_EVENT_BLUR: - { - s_ctx.m_eventQueue.postSuspendEvent(s_defaultWindow, Suspend::DidSuspend); + s_ctx.m_eventQueue.postSuspendEvent(kDefaultWindowHandle, Suspend::DidSuspend); return true; - } + case EMSCRIPTEN_EVENT_FOCUS: - { - s_ctx.m_eventQueue.postSuspendEvent(s_defaultWindow, Suspend::DidResume); + s_ctx.m_eventQueue.postSuspendEvent(kDefaultWindowHandle, Suspend::DidResume); return true; - } + case EMSCRIPTEN_EVENT_FOCUSIN: - { - s_ctx.m_eventQueue.postSuspendEvent(s_defaultWindow, Suspend::WillResume); + s_ctx.m_eventQueue.postSuspendEvent(kDefaultWindowHandle, Suspend::WillResume); return true; - } + case EMSCRIPTEN_EVENT_FOCUSOUT: - { - s_ctx.m_eventQueue.postSuspendEvent(s_defaultWindow, Suspend::WillSuspend); + s_ctx.m_eventQueue.postSuspendEvent(kDefaultWindowHandle, Suspend::WillSuspend); return true; - } } } @@ -395,6 +412,27 @@ namespace entry { BX_UNUSED(_handle, _lock); } + + void* getNativeWindowHandle(WindowHandle _handle) + { + if (kDefaultWindowHandle.idx == _handle.idx) + { + return (void*)"#canvas"; + } + + return NULL; + } + + void* getNativeDisplayHandle() + { + return NULL; + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { + BX_UNUSED(_handle); + return bgfx::NativeWindowHandleType::Default; + } } int main(int _argc, const char* const* _argv) diff --git a/3rdparty/bgfx/examples/common/entry/entry_ios.mm b/3rdparty/bgfx/examples/common/entry/entry_ios.mm index 569e99f51bd..8592a33c43e 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_ios.mm +++ b/3rdparty/bgfx/examples/common/entry/entry_ios.mm @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" @@ -14,7 +14,7 @@ #if __IPHONE_8_0 && !TARGET_IPHONE_SIMULATOR // check if sdk/target supports metal # import <Metal/Metal.h> # import <QuartzCore/CAMetalLayer.h> -//# define HAS_METAL_SDK +# define HAS_METAL_SDK #endif #include <bgfx/platform.h> @@ -38,8 +38,8 @@ namespace entry { Context(uint32_t _width, uint32_t _height) { - const char* const argv[1] = { "ios" }; - m_mte.m_argc = 1; + static const char* const argv[] = { "ios" }; + m_mte.m_argc = BX_COUNTOF(argv); m_mte.m_argv = argv; m_eventQueue.postSizeEvent(s_defaultWindow, _width, _height); @@ -57,6 +57,7 @@ namespace entry MainThreadEntry m_mte; bx::Thread m_thread; + void* m_window; EventQueue m_eventQueue; }; @@ -145,16 +146,31 @@ namespace entry BX_UNUSED(_handle, _lock); } + void* getNativeWindowHandle(WindowHandle _handle) + { + if (kDefaultWindowHandle.idx == _handle.idx) + { + return s_ctx.m_window; + } + + return NULL; + } + + void* getNativeDisplayHandle() + { + return NULL; + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { + BX_UNUSED(_handle); + return bgfx::NativeWindowHandleType::Default; + } + } // namespace entry using namespace entry; -#ifdef HAS_METAL_SDK -static id<MTLDevice> m_device = NULL; -#else -static void* m_device = NULL; -#endif - @interface ViewController : UIViewController @end @implementation ViewController @@ -177,13 +193,14 @@ static void* m_device = NULL; + (Class)layerClass { #ifdef HAS_METAL_SDK + static id<MTLDevice> device = NULL; Class metalClass = NSClassFromString(@"CAMetalLayer"); //is metal runtime sdk available if ( metalClass != nil) { - m_device = MTLCreateSystemDefaultDevice(); // is metal supported on this device (is there a better way to do this - without creating device ?) - if (m_device) + device = MTLCreateSystemDefaultDevice(); // is metal supported on this device (is there a better way to do this - without creating device ?) + if (NULL != device) { - [m_device retain]; + [device retain]; return metalClass; } } @@ -201,13 +218,7 @@ static void* m_device = NULL; return nil; } - bgfx::PlatformData pd; - pd.ndt = NULL; - pd.nwh = self.layer; - pd.context = m_device; - pd.backBuffer = NULL; - pd.backBufferDS = NULL; - bgfx::setPlatformData(pd); + s_ctx->m_window = self.layer; return self; } @@ -226,7 +237,7 @@ static void* m_device = NULL; m_displayLink = [self.window.screen displayLinkWithTarget:self selector:@selector(renderFrame)]; //[m_displayLink setFrameInterval:1]; //[m_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; - // [m_displayLink addToRunLoop:[NSRunLoop currentRunLoop]]; + //[m_displayLink addToRunLoop:[NSRunLoop currentRunLoop]]; [m_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; } } diff --git a/3rdparty/bgfx/examples/common/entry/entry_noop.cpp b/3rdparty/bgfx/examples/common/entry/entry_noop.cpp index a7157d77ef2..5e4bb0fafa4 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_noop.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_noop.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" @@ -67,6 +67,23 @@ namespace entry BX_UNUSED(_handle, _lock); } + void* getNativeWindowHandle(WindowHandle _handle) + { + BX_UNUSED(_handle); + return NULL; + } + + void* getNativeDisplayHandle() + { + return NULL; + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { + BX_UNUSED(_handle); + return bgfx::NativeWindowHandleType::Default; + } + } // namespace entry int main(int _argc, const char* const* _argv) diff --git a/3rdparty/bgfx/examples/common/entry/entry_osx.mm b/3rdparty/bgfx/examples/common/entry/entry_osx.mm index 9bd53fb1362..98869d7df04 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_osx.mm +++ b/3rdparty/bgfx/examples/common/entry/entry_osx.mm @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" @@ -30,7 +30,6 @@ @interface Window : NSObject<NSWindowDelegate> { - uint32_t windowCount; } + (Window*)sharedDelegate; @@ -46,18 +45,6 @@ namespace entry { - /// - inline void osxSetNSWindow(void* _window, void* _nsgl = NULL) - { - bgfx::PlatformData pd; - pd.ndt = NULL; - pd.nwh = _window; - pd.context = _nsgl; - pd.backBuffer = NULL; - pd.backBufferDS = NULL; - bgfx::setPlatformData(pd); - } - static uint8_t s_translateKey[256]; struct MainThreadEntry @@ -86,21 +73,22 @@ namespace entry } MainThreadEntry* self = (MainThreadEntry*)_userData; - return main(self->m_argc, self->m_argv); + uint32_t result = main(self->m_argc, self->m_argv); + [NSApp terminate:nil]; + return result; } }; struct Context { Context() - : m_windowsCreated(0) - , m_scrollf(0.0f) + : m_scrollf(0.0f) , m_mx(0) , m_my(0) , m_scroll(0) , m_style(0) , m_exit(false) - , m_fullscreen(false) + , m_mouseLock(NULL) { s_translateKey[27] = Key::Esc; s_translateKey[uint8_t('\r')] = Key::Return; @@ -151,6 +139,11 @@ namespace entry s_translateKey[uint8_t(ch)] = s_translateKey[uint8_t(ch - ' ')] = Key::KeyA + (ch - 'a'); } + + for(int ii=0; ii<ENTRY_CONFIG_MAX_WINDOWS; ++ii) + { + m_window[ii] = NULL; + } } NSEvent* waitEvent() @@ -190,13 +183,54 @@ namespace entry *outY = bx::clamp(y, 0, int32_t(adjustFrame.size.height) ); } + void setMousePos(NSWindow* _window, int _x, int _y) + { + NSRect originalFrame = [_window frame]; + NSRect adjustFrame = [_window contentRectForFrameRect: originalFrame]; + + adjustFrame.origin.y = NSMaxY(NSScreen.screens[0].frame) - NSMaxY(adjustFrame); + + CGWarpMouseCursorPosition(CGPointMake(_x + adjustFrame.origin.x, _y + adjustFrame.origin.y)); + CGAssociateMouseAndMouseCursorPosition(YES); + } + + void setMouseLock(NSWindow* _window, bool _lock) + { + NSWindow* newMouseLock = _lock ? _window : NULL; + + if ( m_mouseLock != newMouseLock ) + { + if ( _lock ) + { + NSRect originalFrame = [_window frame]; + NSRect adjustFrame = [_window contentRectForFrameRect: originalFrame]; + + m_cmx = (int)adjustFrame.size.width / 2; + m_cmy = (int)adjustFrame.size.height / 2; + + setMousePos(_window, m_cmx, m_cmy); + [NSCursor hide]; + } + else + { + [NSCursor unhide]; + } + m_mouseLock = newMouseLock; + } + } + + uint8_t translateModifiers(int flags) { return 0 - | (0 != (flags & NSEventModifierFlagShift ) ) ? Modifier::LeftShift | Modifier::RightShift : 0 - | (0 != (flags & NSEventModifierFlagOption ) ) ? Modifier::LeftAlt | Modifier::RightAlt : 0 - | (0 != (flags & NSEventModifierFlagControl) ) ? Modifier::LeftCtrl | Modifier::RightCtrl : 0 - | (0 != (flags & NSEventModifierFlagCommand) ) ? Modifier::LeftMeta | Modifier::RightMeta : 0 + | ( (0 != (flags & NX_DEVICELSHIFTKEYMASK) ) ? Modifier::LeftShift : 0) + | ( (0 != (flags & NX_DEVICERSHIFTKEYMASK) ) ? Modifier::RightShift : 0) + | ( (0 != (flags & NX_DEVICELALTKEYMASK) ) ? Modifier::LeftAlt : 0) + | ( (0 != (flags & NX_DEVICERALTKEYMASK) ) ? Modifier::RightAlt : 0) + | ( (0 != (flags & NX_DEVICELCTLKEYMASK) ) ? Modifier::LeftCtrl : 0) + | ( (0 != (flags & NX_DEVICERCTLKEYMASK) ) ? Modifier::RightCtrl : 0) + | ( (0 != (flags & NX_DEVICELCMDKEYMASK) ) ? Modifier::LeftMeta : 0) + | ( (0 != (flags & NX_DEVICERCMDKEYMASK) ) ? Modifier::RightMeta : 0) ; } @@ -258,8 +292,18 @@ namespace entry { NSEventType eventType = [event type]; - NSWindow *window = [NSApp keyWindow]; - WindowHandle handle = handleFromWindow(window); + NSWindow *window = [event window]; + WindowHandle handle = {UINT16_MAX}; + if (nil != window) + { + handle = findHandle(window); + } + if (!isValid(handle)) + { + [NSApp sendEvent:event]; + [NSApp updateWindows]; + return true; + } switch (eventType) { @@ -268,6 +312,15 @@ namespace entry case NSEventTypeRightMouseDragged: case NSEventTypeOtherMouseDragged: getMousePos(window, &m_mx, &m_my); + + if (window == m_mouseLock) + { + m_mx -= m_cmx; + m_my -= m_cmy; + + setMousePos(window, m_cmx, m_cmy); + } + m_eventQueue.postMouseEvent(handle, m_mx, m_my, m_scroll); break; @@ -367,7 +420,7 @@ namespace entry void windowDidResize(NSWindow *window) { - WindowHandle handle = handleFromWindow(window); + WindowHandle handle = findHandle(window); NSRect originalFrame = [window frame]; NSRect rect = [window contentRectForFrameRect: originalFrame]; uint32_t width = uint32_t(rect.size.width); @@ -381,14 +434,14 @@ namespace entry void windowDidBecomeKey(NSWindow *window) { - WindowHandle handle = handleFromWindow(window); + WindowHandle handle = findHandle(window); m_eventQueue.postSuspendEvent(handle, Suspend::WillResume); m_eventQueue.postSuspendEvent(handle, Suspend::DidResume); } void windowDidResignKey(NSWindow *window) { - WindowHandle handle = handleFromWindow(window); + WindowHandle handle = findHandle(window); m_eventQueue.postSuspendEvent(handle, Suspend::WillSuspend); m_eventQueue.postSuspendEvent(handle, Suspend::DidSuspend); } @@ -442,8 +495,6 @@ namespace entry m_windowFrame = [m_window[0] frame]; - osxSetNSWindow(m_window[0]); - MainThreadEntry mte; mte.m_argc = _argc; mte.m_argv = _argv; @@ -459,13 +510,13 @@ namespace entry while (!(m_exit = [dg applicationHasTerminated]) ) { - @autoreleasepool - { - bgfx::renderFrame(); - } + bgfx::renderFrame(); - while (dispatchEvent(peekEvent() ) ) + @autoreleasepool { + while (dispatchEvent(peekEvent() ) ) + { + } } } @@ -477,31 +528,28 @@ namespace entry return 0; } - bool isValid(WindowHandle _handle) + WindowHandle findHandle(NSWindow *_window) { - return m_windowAlloc.isValid(_handle.idx); - } - - WindowHandle handleFromWindow(NSWindow *window) - { - uint16_t windowIdx = 0; - for (uint16_t i = 0; i < m_windowsCreated; i++) + bx::MutexScope scope(m_lock); + for (uint16_t ii = 0, num = m_windowAlloc.getNumHandles(); ii < num; ++ii) { - if (window == m_window[i]) + uint16_t idx = m_windowAlloc.getHandleAt(ii); + if (_window == m_window[idx]) { - windowIdx = i; - break; + WindowHandle handle = { idx }; + return handle; } } - WindowHandle handle = { windowIdx }; - return handle; + + WindowHandle invalid = { UINT16_MAX }; + return invalid; } EventQueue m_eventQueue; + bx::Mutex m_lock; bx::HandleAllocT<ENTRY_CONFIG_MAX_WINDOWS> m_windowAlloc; NSWindow* m_window[ENTRY_CONFIG_MAX_WINDOWS]; - SInt32 m_windowsCreated; NSRect m_windowFrame; float m_scrollf; @@ -510,7 +558,10 @@ namespace entry int32_t m_scroll; int32_t m_style; bool m_exit; - bool m_fullscreen; + + NSWindow* m_mouseLock; + int32_t m_cmx; + int32_t m_cmy; }; static Context s_ctx; @@ -534,104 +585,111 @@ namespace entry { BX_UNUSED(_flags); - uint16_t handleIdx = IncrementAtomic(&s_ctx.m_windowsCreated); + bx::MutexScope scope(s_ctx.m_lock); + WindowHandle handle = { s_ctx.m_windowAlloc.alloc() }; - if (handleIdx >= ENTRY_CONFIG_MAX_WINDOWS) + if (UINT16_MAX != handle.idx) { - return { UINT16_MAX }; - } + void (^createWindowBlock)(void) = ^(void) { + NSRect rect = NSMakeRect(_x, _y, _width, _height); + NSWindow* window = [ + [NSWindow alloc] + initWithContentRect:rect + styleMask:s_ctx.m_style + backing:NSBackingStoreBuffered defer:NO + ]; + NSString* appName = [NSString stringWithUTF8String:_title]; + [window setTitle:appName]; + [window makeKeyAndOrderFront:window]; + [window setAcceptsMouseMovedEvents:YES]; + [window setBackgroundColor:[NSColor blackColor]]; + [[Window sharedDelegate] windowCreated:window]; + + s_ctx.m_window[handle.idx] = window; - WindowHandle handle = { handleIdx }; - - void (^createWindowBlock)(void) = ^(void) { - s_ctx.m_windowAlloc.alloc(); - NSRect rect = NSMakeRect(_x, _y, _width, _height); - NSWindow* window = [[NSWindow alloc] - initWithContentRect:rect - styleMask:s_ctx.m_style - backing:NSBackingStoreBuffered defer:NO - ]; - NSString* appName = [NSString stringWithUTF8String:_title]; - [window setTitle:appName]; - [window makeKeyAndOrderFront:window]; - [window setAcceptsMouseMovedEvents:YES]; - [window setBackgroundColor:[NSColor blackColor]]; - [[Window sharedDelegate] windowCreated:window]; - - s_ctx.m_window[handleIdx] = window; - - if(s_ctx.m_windowsCreated > 1) - { s_ctx.m_eventQueue.postSizeEvent(handle, _width, _height); s_ctx.m_eventQueue.postWindowEvent(handle, window); - } - }; + }; - if ([NSThread isMainThread]) - { - createWindowBlock(); - } - else - { - dispatch_async(dispatch_get_main_queue(), createWindowBlock); + if ([NSThread isMainThread]) + { + createWindowBlock(); + } + else + { + dispatch_async(dispatch_get_main_queue(), createWindowBlock); + } } return handle; } - void destroyWindow(WindowHandle _handle) + void destroyWindow(WindowHandle _handle, bool _closeWindow) { - if (s_ctx.isValid(_handle) ) + if (isValid(_handle)) { dispatch_async(dispatch_get_main_queue() - , ^{ - [s_ctx.m_window[_handle.idx] performClose: nil]; - }); + , ^(void){ + NSWindow *window = s_ctx.m_window[_handle.idx]; + if ( NULL != window) + { + s_ctx.m_eventQueue.postWindowEvent(_handle); + s_ctx.m_window[_handle.idx] = NULL; + if ( _closeWindow ) + { + [window close]; + } + + if (0 == _handle.idx) + { + [NSApp terminate:nil]; + } + } + }); + + bx::MutexScope scope(s_ctx.m_lock); + s_ctx.m_windowAlloc.free(_handle.idx); } } + void destroyWindow(WindowHandle _handle) + { + destroyWindow(_handle, true); + } + void setWindowPos(WindowHandle _handle, int32_t _x, int32_t _y) { - if (s_ctx.isValid(_handle) ) - { - NSWindow* window = s_ctx.m_window[_handle.idx]; - NSScreen* screen = [window screen]; + dispatch_async(dispatch_get_main_queue() + , ^{ + NSWindow* window = s_ctx.m_window[_handle.idx]; + NSScreen* screen = [window screen]; - NSRect screenRect = [screen frame]; - CGFloat menuBarHeight = [[[NSApplication sharedApplication] mainMenu] menuBarHeight]; + NSRect screenRect = [screen frame]; + CGFloat menuBarHeight = [[[NSApplication sharedApplication] mainMenu] menuBarHeight]; - NSPoint position = { float(_x), screenRect.size.height - menuBarHeight - float(_y) }; + NSPoint position = { float(_x), screenRect.size.height - menuBarHeight - float(_y) }; - dispatch_async(dispatch_get_main_queue() - , ^{ [window setFrameTopLeftPoint: position]; }); - } } void setWindowSize(WindowHandle _handle, uint32_t _width, uint32_t _height) { - if (s_ctx.isValid(_handle) ) - { - NSSize size = { float(_width), float(_height) }; - dispatch_async(dispatch_get_main_queue() + NSSize size = { float(_width), float(_height) }; + dispatch_async(dispatch_get_main_queue() , ^{ [s_ctx.m_window[_handle.idx] setContentSize: size]; }); - } } void setWindowTitle(WindowHandle _handle, const char* _title) { - if (s_ctx.isValid(_handle) ) - { - NSString* title = [[NSString alloc] initWithCString:_title encoding:1]; - dispatch_async(dispatch_get_main_queue() + NSString* title = [[NSString alloc] initWithCString:_title encoding:1]; + dispatch_async(dispatch_get_main_queue() , ^{ [s_ctx.m_window[_handle.idx] setTitle: title]; + [title release]; }); - [title release]; - } } void setWindowFlags(WindowHandle _handle, uint32_t _flags, bool _enabled) @@ -641,42 +699,36 @@ namespace entry void toggleFullscreen(WindowHandle _handle) { - if (s_ctx.isValid(_handle) ) - { - NSWindow* window = s_ctx.m_window[_handle.idx]; - NSScreen* screen = [window screen]; - NSRect screenRect = [screen frame]; + dispatch_async(dispatch_get_main_queue() + , ^{ + NSWindow* window = s_ctx.m_window[_handle.idx]; + [window toggleFullScreen:nil]; + }); + } - if (!s_ctx.m_fullscreen) - { - s_ctx.m_style &= ~NSWindowStyleMaskTitled; - dispatch_async(dispatch_get_main_queue() - , ^{ - [NSMenu setMenuBarVisible: false]; - [window setStyleMask: s_ctx.m_style]; - [window setFrame:screenRect display:YES]; - }); + void setMouseLock(WindowHandle _handle, bool _lock) + { + dispatch_async(dispatch_get_main_queue() + , ^{ + NSWindow* window = s_ctx.m_window[_handle.idx]; + s_ctx.setMouseLock(window, _lock); + }); + } - s_ctx.m_fullscreen = true; - } - else - { - s_ctx.m_style |= NSWindowStyleMaskTitled; - dispatch_async(dispatch_get_main_queue() - , ^{ - [NSMenu setMenuBarVisible: true]; - [window setStyleMask: s_ctx.m_style]; - [window setFrame:s_ctx.m_windowFrame display:YES]; - }); + void* getNativeWindowHandle(WindowHandle _handle) + { + return s_ctx.m_window[_handle.idx]; + } - s_ctx.m_fullscreen = false; - } - } + void* getNativeDisplayHandle() + { + return NULL; } - void setMouseLock(WindowHandle _handle, bool _lock) + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) { - BX_UNUSED(_handle, _lock); + BX_UNUSED(_handle); + return bgfx::NativeWindowHandleType::Default; } } // namespace entry @@ -732,7 +784,6 @@ namespace entry return nil; } - self->windowCount = 0; return self; } @@ -741,31 +792,22 @@ namespace entry assert(window); [window setDelegate:self]; - - assert(self->windowCount < ~0u); - self->windowCount += 1; } - (void)windowWillClose:(NSNotification*)notification { BX_UNUSED(notification); + NSWindow *window = [notification object]; + + [window setDelegate:nil]; + + destroyWindow(entry::s_ctx.findHandle(window), false); } - (BOOL)windowShouldClose:(NSWindow*)window { assert(window); - - [window setDelegate:nil]; - - assert(self->windowCount); - self->windowCount -= 1; - - if (self->windowCount == 0) - { - [NSApp terminate:self]; - return false; - } - + BX_UNUSED(window); return true; } diff --git a/3rdparty/bgfx/examples/common/entry/entry_p.h b/3rdparty/bgfx/examples/common/entry/entry_p.h index 6776610b636..3c01e3459c8 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_p.h +++ b/3rdparty/bgfx/examples/common/entry/entry_p.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef ENTRY_PRIVATE_H_HEADER_GUARD @@ -18,7 +18,7 @@ #endif // ENTRY_CONFIG_USE_NOOP #ifndef ENTRY_CONFIG_USE_SDL -# define ENTRY_CONFIG_USE_SDL BX_PLATFORM_STEAMLINK +# define ENTRY_CONFIG_USE_SDL 0 #endif // ENTRY_CONFIG_USE_SDL #ifndef ENTRY_CONFIG_USE_GLFW diff --git a/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp b/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp index d582b034e5e..bbcdb069257 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp @@ -1,15 +1,16 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" #if ENTRY_CONFIG_USE_SDL -#if BX_PLATFORM_WINDOWS +#if BX_PLATFORM_LINUX || BX_PLATFORM_BSD +#elif BX_PLATFORM_WINDOWS # define SDL_MAIN_HANDLED -#endif // BX_PLATFORM_WINDOWS +#endif #include <bx/os.h> @@ -34,35 +35,32 @@ BX_PRAGMA_DIAGNOSTIC_POP() namespace entry { - inline bool sdlSetWindow(SDL_Window* _window) + /// + static void* sdlNativeWindowHandle(SDL_Window* _window) { SDL_SysWMinfo wmi; SDL_VERSION(&wmi.version); if (!SDL_GetWindowWMInfo(_window, &wmi) ) { - return false; + return NULL; } - bgfx::PlatformData pd; # if BX_PLATFORM_LINUX || BX_PLATFORM_BSD - pd.ndt = wmi.info.x11.display; - pd.nwh = (void*)(uintptr_t)wmi.info.x11.window; -# elif BX_PLATFORM_OSX - pd.ndt = NULL; - pd.nwh = wmi.info.cocoa.window; + if (wmi.subsystem == SDL_SYSWM_WAYLAND) + { + return (void*)wmi.info.wl.surface; + } + else + { + return (void*)wmi.info.x11.window; + } +# elif BX_PLATFORM_OSX || BX_PLATFORM_IOS + return wmi.info.cocoa.window; # elif BX_PLATFORM_WINDOWS - pd.ndt = NULL; - pd.nwh = wmi.info.win.window; -# elif BX_PLATFORM_STEAMLINK - pd.ndt = wmi.info.vivante.display; - pd.nwh = wmi.info.vivante.window; + return wmi.info.win.window; +# elif BX_PLATFORM_ANDROID + return wmi.info.android.window; # endif // BX_PLATFORM_ - pd.context = NULL; - pd.backBuffer = NULL; - pd.backBufferDS = NULL; - bgfx::setPlatformData(pd); - - return true; } static uint8_t translateKeyModifiers(uint16_t _sdl) @@ -102,7 +100,7 @@ namespace entry static void initTranslateKey(uint16_t _sdl, Key::Enum _key) { - BX_CHECK(_sdl < BX_COUNTOF(s_translateKey), "Out of bounds %d.", _sdl); + BX_ASSERT(_sdl < BX_COUNTOF(s_translateKey), "Out of bounds %d.", _sdl); s_translateKey[_sdl&0xff] = (uint8_t)_key; } @@ -252,27 +250,6 @@ namespace entry static int32_t threadFunc(bx::Thread* _thread, void* _userData); }; - /// - static void* sdlNativeWindowHandle(SDL_Window* _window) - { - SDL_SysWMinfo wmi; - SDL_VERSION(&wmi.version); - if (!SDL_GetWindowWMInfo(_window, &wmi) ) - { - return NULL; - } - -# if BX_PLATFORM_LINUX || BX_PLATFORM_BSD - return (void*)wmi.info.x11.window; -# elif BX_PLATFORM_OSX - return wmi.info.cocoa.window; -# elif BX_PLATFORM_WINDOWS - return wmi.info.win.window; -# elif BX_PLATFORM_STEAMLINK - return wmi.info.vivante.window; -# endif // BX_PLATFORM_ - } - struct Msg { Msg() @@ -479,14 +456,13 @@ namespace entry s_userEventStart = SDL_RegisterEvents(7); - sdlSetWindow(m_window[0]); bgfx::renderFrame(); m_thread.init(MainThreadEntry::threadFunc, &m_mte); // Force window resolution... WindowHandle defaultWindow = { 0 }; - setWindowSize(defaultWindow, m_width, m_height, true); + entry::setWindowSize(defaultWindow, m_width, m_height); SDL_EventState(SDL_DROPFILE, SDL_ENABLE); @@ -502,7 +478,7 @@ namespace entry bx::AllocatorI* allocator = getAllocator(); uint32_t size = (uint32_t)bx::getSize(reader); void* data = BX_ALLOC(allocator, size + 1); - bx::read(reader, data, size); + bx::read(reader, data, size, bx::ErrorAssert{}); bx::close(reader); ((char*)data)[size] = '\0'; @@ -664,7 +640,15 @@ namespace entry case SDL_WINDOWEVENT_SIZE_CHANGED: { WindowHandle handle = findHandle(wev.windowID); - setWindowSize(handle, wev.data1, wev.data2); + uint32_t width = wev.data1; + uint32_t height = wev.data2; + if (width != m_width + || height != m_height) + { + m_width = width; + m_height = height; + m_eventQueue.postSizeEvent(handle, m_width, m_height); + } } break; @@ -909,7 +893,7 @@ namespace entry Msg* msg = (Msg*)uev.data2; if (isValid(handle) ) { - setWindowSize(handle, msg->m_width, msg->m_height); + SDL_SetWindowSize(m_window[handle.idx], msg->m_width, msg->m_height); } delete msg; } @@ -981,20 +965,6 @@ namespace entry return invalid; } - void setWindowSize(WindowHandle _handle, uint32_t _width, uint32_t _height, bool _force = false) - { - if (_width != m_width - || _height != m_height - || _force) - { - m_width = _width; - m_height = _height; - - SDL_SetWindowSize(m_window[_handle.idx], m_width, m_height); - m_eventQueue.postSizeEvent(_handle, m_width, m_height); - } - } - GamepadHandle findGamepad(SDL_JoystickID _jid) { for (uint32_t ii = 0, num = m_gamepadAlloc.getNumHandles(); ii < num; ++ii) @@ -1095,6 +1065,7 @@ namespace entry void setWindowSize(WindowHandle _handle, uint32_t _width, uint32_t _height) { + // Function to set the window size programmatically from the examples/tools. Msg* msg = new Msg; msg->m_width = _width; msg->m_height = _height; @@ -1128,6 +1099,47 @@ namespace entry sdlPostEvent(SDL_USER_WINDOW_MOUSE_LOCK, _handle, NULL, _lock); } + void* getNativeWindowHandle(WindowHandle _handle) + { + return sdlNativeWindowHandle(s_ctx.m_window[_handle.idx]); + } + + void* getNativeDisplayHandle() + { + SDL_SysWMinfo wmi; + SDL_VERSION(&wmi.version); + if (!SDL_GetWindowWMInfo(s_ctx.m_window[0], &wmi) ) + { + return NULL; + } +# if BX_PLATFORM_LINUX || BX_PLATFORM_BSD + if (wmi.subsystem == SDL_SYSWM_WAYLAND) + return wmi.info.wl.display; + else + return wmi.info.x11.display; +# else + return NULL; +# endif // BX_PLATFORM_* + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { + SDL_SysWMinfo wmi; + SDL_VERSION(&wmi.version); + if (!SDL_GetWindowWMInfo(s_ctx.m_window[_handle.idx], &wmi) ) + { + return bgfx::NativeWindowHandleType::Default; + } +# if BX_PLATFORM_LINUX || BX_PLATFORM_BSD + if (wmi.subsystem == SDL_SYSWM_WAYLAND) + return bgfx::NativeWindowHandleType::Wayland; + else + return bgfx::NativeWindowHandleType::Default; +# else + return bgfx::NativeWindowHandleType::Default; +# endif // BX_PLATFORM_* + } + int32_t MainThreadEntry::threadFunc(bx::Thread* _thread, void* _userData) { BX_UNUSED(_thread); diff --git a/3rdparty/bgfx/examples/common/entry/entry_windows.cpp b/3rdparty/bgfx/examples/common/entry/entry_windows.cpp index 845c039b451..e731977737e 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_windows.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_windows.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" @@ -18,10 +18,12 @@ #include <tinystl/allocator.h> #include <tinystl/string.h> +#include <tinystl/vector.h> #include <windows.h> #include <windowsx.h> #include <xinput.h> +#include <shellapi.h> #ifndef XINPUT_GAMEPAD_GUIDE # define XINPUT_GAMEPAD_GUIDE 0x400 @@ -33,13 +35,14 @@ namespace entry { - /// - inline void winSetHwnd(::HWND _window) + typedef tinystl::vector<WCHAR> WSTRING; + + inline WSTRING UTF8ToUTF16(const char *utf8_str) { - bgfx::PlatformData pd; - bx::memSet(&pd, 0, sizeof(pd) ); - pd.nwh = _window; - bgfx::setPlatformData(pd); + int len = MultiByteToWideChar(CP_UTF8, 0, utf8_str, -1, NULL, 0); + WSTRING utf16(len); + MultiByteToWideChar(CP_UTF8, 0, utf8_str, -1, utf16.data(), len); + return utf16; } typedef DWORD (WINAPI* PFN_XINPUT_GET_STATE)(DWORD dwUserIndex, XINPUT_STATE* pState); @@ -359,6 +362,7 @@ namespace entry , m_init(false) , m_exit(false) { + m_surrogate = 0; bx::memSet(s_translateKey, 0, sizeof(s_translateKey) ); s_translateKey[VK_ESCAPE] = Key::Esc; s_translateKey[VK_RETURN] = Key::Return; @@ -456,7 +460,7 @@ namespace entry HINSTANCE instance = (HINSTANCE)GetModuleHandle(NULL); - WNDCLASSEXA wnd; + WNDCLASSEXW wnd; bx::memSet(&wnd, 0, sizeof(wnd) ); wnd.cbSize = sizeof(wnd); wnd.style = CS_HREDRAW | CS_VREDRAW; @@ -464,9 +468,9 @@ namespace entry wnd.hInstance = instance; wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION); wnd.hCursor = LoadCursor(NULL, IDC_ARROW); - wnd.lpszClassName = "bgfx"; + wnd.lpszClassName = L"bgfx"; wnd.hIconSm = LoadIcon(NULL, IDI_APPLICATION); - RegisterClassExA(&wnd); + RegisterClassExW(&wnd); m_windowAlloc.alloc(); m_hwnd[0] = CreateWindowExA( @@ -489,8 +493,6 @@ namespace entry | ENTRY_WINDOW_FLAG_FRAME ; - winSetHwnd(m_hwnd[0]); - adjust(m_hwnd[0], ENTRY_DEFAULT_WIDTH, ENTRY_DEFAULT_HEIGHT, true); clear(m_hwnd[0]); @@ -521,10 +523,10 @@ namespace entry s_xinput.update(m_eventQueue); WaitForInputIdle(GetCurrentProcess(), 16); - while (0 != PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE) ) + while (0 != PeekMessageW(&msg, NULL, 0U, 0U, PM_REMOVE) ) { TranslateMessage(&msg); - DispatchMessage(&msg); + DispatchMessageW(&msg); } } @@ -548,8 +550,8 @@ namespace entry case WM_USER_WINDOW_CREATE: { Msg* msg = (Msg*)_lparam; - HWND hwnd = CreateWindowA("bgfx" - , msg->m_title.c_str() + HWND hwnd = CreateWindowW(L"bgfx" + , UTF8ToUTF16(msg->m_title.c_str()).data() , WS_OVERLAPPEDWINDOW|WS_VISIBLE , msg->m_x , msg->m_y @@ -560,6 +562,8 @@ namespace entry , (HINSTANCE)GetModuleHandle(NULL) , 0 ); + + adjust(hwnd, msg->m_width, msg->m_height, true); clear(hwnd); m_hwnd[_wparam] = hwnd; @@ -590,7 +594,7 @@ namespace entry case WM_USER_WINDOW_SET_TITLE: { Msg* msg = (Msg*)_lparam; - SetWindowTextA(m_hwnd[_wparam], msg->m_title.c_str() ); + SetWindowTextW(m_hwnd[_wparam], UTF8ToUTF16(msg->m_title.c_str()).data() ); delete msg; } break; @@ -842,20 +846,40 @@ namespace entry case WM_CHAR: { + WCHAR utf16[2] = { (WCHAR)_wparam }; uint8_t utf8[4] = {}; - uint8_t len = (uint8_t)WideCharToMultiByte(CP_UTF8 - , 0 - , (LPCWSTR)&_wparam - , 1 - , (LPSTR)utf8 - , BX_COUNTOF(utf8) - , NULL - , NULL - ); - if (0 != len) + + if (utf16[0] >= 0xD800 && utf16[0] <= 0xDBFF) { + m_surrogate = utf16[0]; + } + else { - WindowHandle handle = findHandle(_hwnd); - m_eventQueue.postCharEvent(handle, len, utf8); + int utf16_len; + if (utf16[0] >= 0xDC00 && utf16[0] <= 0xDFFF) { + utf16[1] = utf16[0]; + utf16[0] = m_surrogate; + m_surrogate = 0; + utf16_len = 2; + } + else + { + utf16_len = 1; + } + + uint8_t len = (uint8_t)WideCharToMultiByte(CP_UTF8 + , 0 + , utf16 + , utf16_len + , (LPSTR)utf8 + , BX_COUNTOF(utf8) + , NULL + , NULL + ); + if (0 != len) + { + WindowHandle handle = findHandle(_hwnd); + m_eventQueue.postCharEvent(handle, len, utf8); + } } } break; @@ -864,8 +888,10 @@ namespace entry { HDROP drop = (HDROP)_wparam; char tmp[bx::kMaxFilePath]; - uint32_t result = DragQueryFileA(drop, 0, tmp, sizeof(tmp) ); + WCHAR utf16[bx::kMaxFilePath]; + uint32_t result = DragQueryFileW(drop, 0, utf16, bx::kMaxFilePath); BX_UNUSED(result); + WideCharToMultiByte(CP_UTF8, 0, utf16, -1, tmp, bx::kMaxFilePath, NULL, NULL); WindowHandle handle = findHandle(_hwnd); m_eventQueue.postDropFileEvent(handle, tmp); } @@ -876,7 +902,7 @@ namespace entry } } - return DefWindowProc(_hwnd, _id, _wparam, _lparam); + return DefWindowProcW(_hwnd, _id, _wparam, _lparam); } WindowHandle findHandle(HWND _hwnd) @@ -905,6 +931,7 @@ namespace entry SelectObject(hdc, brush); FillRect(hdc, &rect, brush); ReleaseDC(_hwnd, hdc); + DeleteObject(brush); } void adjust(HWND _hwnd, uint32_t _width, uint32_t _height, bool _windowFrame) @@ -993,7 +1020,9 @@ namespace entry void setMouseLock(HWND _hwnd, bool _lock) { - if (_hwnd != m_mouseLock) + HWND newMouseLock = _lock ? _hwnd : 0; + + if (newMouseLock != m_mouseLock) { if (_lock) { @@ -1008,13 +1037,14 @@ namespace entry ShowCursor(true); } - m_mouseLock = _hwnd; + m_mouseLock = newMouseLock; } } static LRESULT CALLBACK wndProc(HWND _hwnd, UINT _id, WPARAM _wparam, LPARAM _lparam); EventQueue m_eventQueue; + WCHAR m_surrogate; bx::Mutex m_lock; bx::HandleAllocT<ENTRY_CONFIG_MAX_WINDOWS> m_windowAlloc; @@ -1133,6 +1163,22 @@ namespace entry PostMessage(s_ctx.m_hwnd[0], WM_USER_WINDOW_MOUSE_LOCK, _handle.idx, _lock); } + void* getNativeWindowHandle(WindowHandle _handle) + { + return s_ctx.m_hwnd[_handle.idx]; + } + + void* getNativeDisplayHandle() + { + return NULL; + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { + BX_UNUSED(_handle); + return bgfx::NativeWindowHandleType::Default; + } + int32_t MainThreadEntry::threadFunc(bx::Thread* /*_thread*/, void* _userData) { MainThreadEntry* self = (MainThreadEntry*)_userData; diff --git a/3rdparty/bgfx/examples/common/entry/entry_winrt.cx b/3rdparty/bgfx/examples/common/entry/entry_winrt.cx deleted file mode 100644 index 76270e99770..00000000000 --- a/3rdparty/bgfx/examples/common/entry/entry_winrt.cx +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright 2011-2016 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include "entry_p.h" - -#if BX_PLATFORM_WINRT || BX_PLATFORM_XBOXONE - -#include <bgfx/platform.h> -#include <bx/thread.h> -#include <bx/math.h> -#include <Unknwn.h> - -using namespace Windows::ApplicationModel; -using namespace Windows::ApplicationModel::Core; -using namespace Windows::ApplicationModel::Activation; -using namespace Windows::UI::Core; -using namespace Windows::UI::Input; -using namespace Windows::System; -using namespace Windows::Foundation; -#if BX_PLATFORM_WINRT -using namespace Windows::Graphics::Display; -#endif // BX_PLATFORM_WINRT -using namespace Platform; - -static const char* const g_emptyArgs[] = { "app.exe", "", "" }; -static entry::WindowHandle g_defaultWindow = { 0 }; -static entry::EventQueue g_eventQueue; - -/// -inline void winrtSetWindow(::IUnknown* _window) -{ - bgfx::PlatformData pd; - pd.ndt = NULL; - pd.nwh = _window; - pd.context = NULL; - pd.backBuffer = NULL; - pd.backBufferDS = NULL; - bgfx::setPlatformData(pd); -} - -ref class App sealed : public IFrameworkView -{ -public: - App() - : m_windowVisible(true) - , m_windowClosed(false) - { - } - - // IFrameworkView Methods. - virtual void Initialize(CoreApplicationView^ applicationView) - { - applicationView->Activated += ref new - TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &App::OnActivated); - - CoreApplication::Suspending += ref new - EventHandler<SuspendingEventArgs^>(this, &App::OnSuspending); - - CoreApplication::Resuming += ref new - EventHandler<Platform::Object^>(this, &App::OnResuming); - } - - virtual void SetWindow(CoreWindow^ window) - { - window->VisibilityChanged += ref new - TypedEventHandler<CoreWindow^, VisibilityChangedEventArgs^>(this, &App::OnVisibilityChanged); - - window->Closed += ref new - TypedEventHandler<CoreWindow^, CoreWindowEventArgs^>(this, &App::OnWindowClosed); - - winrtSetWindow(reinterpret_cast<IUnknown*>(window) ); - } - - virtual void Load(String^ entryPoint) - { - } - - virtual void Run() - { - bgfx::renderFrame(); - - bx::Thread thread; - thread.init(MainThreadFunc, nullptr); - - CoreWindow^ window = CoreWindow::GetForCurrentThread(); - auto bounds = window->Bounds; - -#if BX_PLATFORM_WINRT - auto dpi = DisplayInformation::GetForCurrentView()->LogicalDpi; - static const float dipsPerInch = 96.0f; - g_eventQueue.postSizeEvent(g_defaultWindow - , lround(bx::floor(bounds.Width * dpi / dipsPerInch + 0.5f) ) - , lround(bx::floor(bounds.Height * dpi / dipsPerInch + 0.5f) ) - ); -#endif // BX_PLATFORM_WINRT - - while (!m_windowClosed) - { - if (m_windowVisible) - { - window->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent); - } - else - { - window->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessOneAndAllPending); - } - - bgfx::renderFrame(); - } - - g_eventQueue.postExitEvent(); - - while (bgfx::RenderFrame::NoContext != bgfx::renderFrame() ) {}; - - thread.shutdown(); - } - - virtual void Uninitialize() - { - } - -private: - bool m_windowVisible; - bool m_windowClosed; - - void OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args) - { - CoreWindow::GetForCurrentThread()->Activate(); - } - - void OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEventArgs^ args) - { - m_windowVisible = args->Visible; - } - - void OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ args) - { - SuspendingDeferral^ deferral = args->SuspendingOperation->GetDeferral(); - BX_UNUSED(deferral); - } - - void OnResuming(Platform::Object^ sender, Platform::Object^ args) - { - } - - void OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args) - { - m_windowClosed = true; - } - - static int32_t MainThreadFunc(bx::Thread*, void*) - { - return entry::main(BX_COUNTOF(g_emptyArgs), g_emptyArgs); - } -}; - -ref class AppSource sealed : IFrameworkViewSource -{ -public: - virtual IFrameworkView^ CreateView() - { - return ref new App(); - } -}; - -namespace entry -{ - const Event* poll() - { - return g_eventQueue.poll(); - } - - const Event* poll(WindowHandle _handle) - { - return g_eventQueue.poll(_handle); - } - - void release(const Event* _event) - { - g_eventQueue.release(_event); - } - - WindowHandle createWindow(int32_t _x, int32_t _y, uint32_t _width, uint32_t _height, uint32_t _flags, const char* _title) - { - BX_UNUSED(_x, _y, _width, _height, _flags, _title); - WindowHandle handle = { UINT16_MAX }; - return handle; - } - - void destroyWindow(WindowHandle _handle) - { - BX_UNUSED(_handle); - } - - void setWindowPos(WindowHandle _handle, int32_t _x, int32_t _y) - { - BX_UNUSED(_handle, _x, _y); - } - - void setWindowSize(WindowHandle _handle, uint32_t _width, uint32_t _height) - { - BX_UNUSED(_handle, _width, _height); - } - - void setWindowTitle(WindowHandle _handle, const char* _title) - { - BX_UNUSED(_handle, _title); - } - - void setWindowFlags(WindowHandle _handle, uint32_t _flags, bool _enabled) - { - BX_UNUSED(_handle, _flags, _enabled); - } - - void toggleFullscreen(WindowHandle _handle) - { - BX_UNUSED(_handle); - } - - void setMouseLock(WindowHandle _handle, bool _lock) - { - BX_UNUSED(_handle, _lock); - } -} - -[MTAThread] -int main(Array<String^>^) -{ - auto appSource = ref new AppSource(); - CoreApplication::Run(appSource); - return 0; -} - -#endif // BX_PLATFORM_WINRT || BX_PLATFORM_XBOXONE diff --git a/3rdparty/bgfx/examples/common/entry/entry_x11.cpp b/3rdparty/bgfx/examples/common/entry/entry_x11.cpp index 6bfd3192caa..407a1d9e5dc 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_x11.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_x11.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "entry_p.h" @@ -12,8 +12,6 @@ #include <X11/keysymdef.h> #include <X11/Xlib.h> // will include X11 which #defines None... Don't mess with order of includes. #include <X11/Xutil.h> -#include <bgfx/platform.h> - #include <unistd.h> // syscall #undef None @@ -31,18 +29,6 @@ namespace entry static const char* s_applicationName = "BGFX"; static const char* s_applicationClass = "bgfx"; - /// - inline void x11SetDisplayWindow(void* _display, uint32_t _window, void* _glx = NULL) - { - bgfx::PlatformData pd; - pd.ndt = _display; - pd.nwh = (void*)(uintptr_t)_window; - pd.context = _glx; - pd.backBuffer = NULL; - pd.backBufferDS = NULL; - bgfx::setPlatformData(pd); - } - #define JS_EVENT_BUTTON 0x01 /* button pressed/released */ #define JS_EVENT_AXIS 0x02 /* joystick moved */ #define JS_EVENT_INIT 0x80 /* initial state of device */ @@ -208,7 +194,7 @@ namespace entry static void initTranslateKey(uint16_t _xk, Key::Enum _key) { _xk += 256; - BX_CHECK(_xk < BX_COUNTOF(s_translateKey), "Out of bounds %d.", _xk); + BX_ASSERT(_xk < BX_COUNTOF(s_translateKey), "Out of bounds %d.", _xk); s_translateKey[_xk&0x1ff] = (uint8_t)_key; } @@ -346,7 +332,13 @@ namespace entry int32_t run(int _argc, const char* const* _argv) { XInitThreads(); + m_display = XOpenDisplay(NULL); + if (NULL == m_display) + { + bx::printf("XOpenDisplay failed: DISPLAY environment variable must be set.\n\n"); + return bx::kExitFailure; + } int32_t screen = DefaultScreen(m_display); m_depth = DefaultDepth(m_display, screen); @@ -354,34 +346,30 @@ namespace entry m_root = RootWindow(m_display, screen); bx::memSet(&m_windowAttrs, 0, sizeof(m_windowAttrs) ); - m_windowAttrs.background_pixmap = 0; - m_windowAttrs.border_pixel = 0; - m_windowAttrs.event_mask = 0 - | ButtonPressMask - | ButtonReleaseMask - | ExposureMask - | KeyPressMask - | KeyReleaseMask - | PointerMotionMask - | StructureNotifyMask - ; + m_windowAttrs.background_pixel = 0; + m_windowAttrs.border_pixel = 0; + m_windowAttrs.bit_gravity = StaticGravity; + m_windowAttrs.event_mask = 0 + | ButtonPressMask + | ButtonReleaseMask + | ExposureMask + | KeyPressMask + | KeyReleaseMask + | PointerMotionMask + | StructureNotifyMask + ; m_windowAlloc.alloc(); - m_window[0] = XCreateWindow(m_display - , m_root - , 0, 0 - , 1, 1, 0 - , m_depth - , InputOutput - , m_visual - , CWBorderPixel|CWEventMask - , &m_windowAttrs - ); - - // Clear window to black. - XSetWindowAttributes attr; - bx::memSet(&attr, 0, sizeof(attr) ); - XChangeWindowAttributes(m_display, m_window[0], CWBackPixel, &attr); + m_window[0] = XCreateWindow( + m_display + , m_root + , 0, 0, 1, 1, 0 + , m_depth + , InputOutput + , m_visual + , CWBorderPixel|CWEventMask|CWBackPixel|CWBitGravity + , &m_windowAttrs + ); const char* wmDeleteWindowName = "WM_DELETE_WINDOW"; Atom wmDeleteWindow; @@ -401,18 +389,16 @@ namespace entry im = XOpenIM(m_display, NULL, NULL, NULL); XIC ic; - ic = XCreateIC(im - , XNInputStyle - , 0 - | XIMPreeditNothing - | XIMStatusNothing - , XNClientWindow - , m_window[0] - , NULL - ); - - // - x11SetDisplayWindow(m_display, m_window[0]); + ic = XCreateIC( + im + , XNInputStyle + , 0 + | XIMPreeditNothing + | XIMStatusNothing + , XNClientWindow + , m_window[0] + , NULL + ); MainThreadEntry mte; mte.m_argc = _argc; @@ -578,6 +564,9 @@ namespace entry XUnmapWindow(m_display, m_window[0]); XDestroyWindow(m_display, m_window[0]); + XCloseDisplay(m_display); + m_display = NULL; + return thread.getExitCode(); } @@ -589,26 +578,22 @@ namespace entry void createWindow(WindowHandle _handle, Msg* msg) { - Window window = XCreateWindow(m_display - , m_root - , msg->m_x - , msg->m_y - , msg->m_width - , msg->m_height - , 0 - , m_depth - , InputOutput - , m_visual - , CWBorderPixel|CWEventMask - , &m_windowAttrs - ); + Window window = XCreateWindow( + m_display + , m_root + , msg->m_x + , msg->m_y + , msg->m_width + , msg->m_height + , 0 + , m_depth + , InputOutput + , m_visual + , CWBorderPixel|CWEventMask|CWBackPixel|CWBitGravity + , &m_windowAttrs + ); m_window[_handle.idx] = window; - // Clear window to black. - XSetWindowAttributes attr; - bx::memSet(&attr, 0, sizeof(attr) ); - XChangeWindowAttributes(m_display, window, CWBackPixel, &attr); - const char* wmDeleteWindowName = "WM_DELETE_WINDOW"; Atom wmDeleteWindow; XInternAtoms(m_display, (char **)&wmDeleteWindowName, 1, False, &wmDeleteWindow); @@ -755,7 +740,10 @@ namespace entry { Display* display = s_ctx.m_display; Window window = s_ctx.m_window[_handle.idx]; - XStoreName(display, window, _title); + + XTextProperty tp; + Xutf8TextListToTextProperty(display, (char**)&_title, 1, XUTF8StringStyle, &tp); + XSetWMName(display, window, &tp); } void setWindowFlags(WindowHandle _handle, uint32_t _flags, bool _enabled) @@ -773,6 +761,22 @@ namespace entry BX_UNUSED(_handle, _lock); } + void* getNativeWindowHandle(WindowHandle _handle) + { + return (void*)(uintptr_t)s_ctx.m_window[_handle.idx]; + } + + void* getNativeDisplayHandle() + { + return s_ctx.m_display; + } + + bgfx::NativeWindowHandleType::Enum getNativeWindowHandleType(WindowHandle _handle) + { + BX_UNUSED(_handle); + return bgfx::NativeWindowHandleType::Default; + } + } // namespace entry int main(int _argc, const char* const* _argv) diff --git a/3rdparty/bgfx/examples/common/entry/input.cpp b/3rdparty/bgfx/examples/common/entry/input.cpp index 5fdad9c0bb6..770922d6fd4 100644 --- a/3rdparty/bgfx/examples/common/entry/input.cpp +++ b/3rdparty/bgfx/examples/common/entry/input.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2010-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2010-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <memory.h> @@ -375,8 +375,8 @@ void inputSetMouseLock(bool _lock) if (s_input->m_mouse.m_lock != _lock) { s_input->m_mouse.m_lock = _lock; - entry::WindowHandle defaultWindow = { 0 }; - entry::setMouseLock(defaultWindow, _lock); + + entry::setMouseLock(entry::kDefaultWindowHandle, _lock); if (_lock) { s_input->m_mouse.m_norm[0] = 0.0f; diff --git a/3rdparty/bgfx/examples/common/entry/input.h b/3rdparty/bgfx/examples/common/entry/input.h index 6954f3daa19..d51a7f338f5 100644 --- a/3rdparty/bgfx/examples/common/entry/input.h +++ b/3rdparty/bgfx/examples/common/entry/input.h @@ -1,6 +1,6 @@ /* - * Copyright 2010-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2010-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef INPUT_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/example-glue.cpp b/3rdparty/bgfx/examples/common/example-glue.cpp index b6b3d456255..3c51db6ee0f 100644 --- a/3rdparty/bgfx/examples/common/example-glue.cpp +++ b/3rdparty/bgfx/examples/common/example-glue.cpp @@ -1,15 +1,67 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "imgui/imgui.h" #include "entry/entry.h" #include "entry/cmd.h" +#include "entry/dialog.h" #include <bx/string.h> #include <bx/timer.h> #include <bx/math.h> +struct SampleData +{ + static constexpr uint32_t kNumSamples = 100; + + SampleData() + { + reset(); + } + + void reset() + { + m_offset = 0; + bx::memSet(m_values, 0, sizeof(m_values) ); + + m_min = 0.0f; + m_max = 0.0f; + m_avg = 0.0f; + } + + void pushSample(float value) + { + m_values[m_offset] = value; + m_offset = (m_offset+1) % kNumSamples; + + float min = bx::max<float>(); + float max = bx::min<float>(); + float avg = 0.0f; + + for (uint32_t ii = 0; ii < kNumSamples; ++ii) + { + const float val = m_values[ii]; + min = bx::min(min, val); + max = bx::max(max, val); + avg += val; + } + + m_min = min; + m_max = max; + m_avg = avg / kNumSamples; + } + + int32_t m_offset; + float m_values[kNumSamples]; + + float m_min; + float m_max; + float m_avg; +}; + +static SampleData s_frameTime; + static bool bar(float _width, float _maxWidth, float _height, const ImVec4& _color) { const ImGuiStyle& style = ImGui::GetStyle(); @@ -29,11 +81,11 @@ static bool bar(float _width, float _maxWidth, float _height, const ImVec4& _col bool itemHovered = false; - ImGui::Button("", ImVec2(_width, _height) ); + ImGui::Button("##", ImVec2(_width, _height) ); itemHovered |= ImGui::IsItemHovered(); ImGui::SameLine(); - ImGui::InvisibleButton("", ImVec2(_maxWidth-_width, _height) ); + ImGui::InvisibleButton("##", ImVec2(bx::max(1.0f, _maxWidth-_width), _height) ); itemHovered |= ImGui::IsItemHovered(); ImGui::PopStyleVar(2); @@ -80,13 +132,28 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) , ImGuiCond_FirstUseEver ); ImGui::SetNextWindowSize( - ImVec2(300.0f, 200.0f) + ImVec2(300.0f, 210.0f) , ImGuiCond_FirstUseEver ); ImGui::Begin(temp); ImGui::TextWrapped("%s", _app->getDescription() ); + + bx::StringView url = _app->getUrl(); + if (!url.isEmpty() ) + { + ImGui::SameLine(); + if (ImGui::SmallButton(ICON_FA_LINK) ) + { + openUrl(url); + } + else if (ImGui::IsItemHovered() ) + { + ImGui::SetTooltip("Documentation: %.*s", url.getLength(), url.getPtr() ); + } + } + ImGui::Separator(); if (NULL != _errorText) @@ -223,16 +290,38 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) } } } +#else + ImGui::Text("Renderer: %s", bgfx::getRendererName(bgfx::getRendererType())); #endif // 0 const bgfx::Stats* stats = bgfx::getStats(); const double toMsCpu = 1000.0/stats->cpuTimerFreq; const double toMsGpu = 1000.0/stats->gpuTimerFreq; const double frameMs = double(stats->cpuTimeFrame)*toMsCpu; - ImGui::Text("Frame %0.3f [ms], %0.3f FPS" - , frameMs - , 1000.0/frameMs + + s_frameTime.pushSample(float(frameMs) ); + + char frameTextOverlay[256]; + bx::snprintf(frameTextOverlay, BX_COUNTOF(frameTextOverlay), "%s%.3fms, %s%.3fms\nAvg: %.3fms, %.1f FPS" + , ICON_FA_ARROW_DOWN + , s_frameTime.m_min + , ICON_FA_ARROW_UP + , s_frameTime.m_max + , s_frameTime.m_avg + , 1000.0f/s_frameTime.m_avg + ); + + ImGui::PushStyleColor(ImGuiCol_PlotHistogram, ImColor(0.0f, 0.5f, 0.15f, 1.0f).Value); + ImGui::PlotHistogram("Frame" + , s_frameTime.m_values + , SampleData::kNumSamples + , s_frameTime.m_offset + , frameTextOverlay + , 0.0f + , 60.0f + , ImVec2(0.0f, 45.0f) ); + ImGui::PopStyleColor(); ImGui::Text("Submit CPU %0.3f, GPU %0.3f (L: %d)" , double(stats->cpuTimeEnd - stats->cpuTimeBegin)*toMsCpu @@ -279,7 +368,7 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) resourceBar(" T", "Textures", stats->numTextures, caps->limits.maxTextures, maxWidth, itemHeight); resourceBar(" U", "Uniforms", stats->numUniforms, caps->limits.maxUniforms, maxWidth, itemHeight); resourceBar(" VB", "Vertex buffers", stats->numVertexBuffers, caps->limits.maxVertexBuffers, maxWidth, itemHeight); - resourceBar(" VD", "Vertex declarations", stats->numVertexDecls, caps->limits.maxVertexDecls, maxWidth, itemHeight); + resourceBar(" VL", "Vertex layouts", stats->numVertexLayouts, caps->limits.maxVertexLayouts, maxWidth, itemHeight); ImGui::PopFont(); } @@ -304,9 +393,10 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) const double toGpuMs = 1000.0/double(stats->gpuTimerFreq); const float scale = 3.0f; - if (ImGui::ListBoxHeader("Encoders", ImVec2(ImGui::GetWindowWidth(), stats->numEncoders*itemHeightWithSpacing) ) ) + if (ImGui::BeginListBox("Encoders", ImVec2(ImGui::GetWindowWidth(), stats->numEncoders*itemHeightWithSpacing) ) ) { - ImGuiListClipper clipper(stats->numEncoders, itemHeight); + ImGuiListClipper clipper; + clipper.Begin(stats->numEncoders, itemHeight); while (clipper.Step() ) { @@ -331,14 +421,15 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) } } - ImGui::ListBoxFooter(); + ImGui::EndListBox(); } ImGui::Separator(); - if (ImGui::ListBoxHeader("Views", ImVec2(ImGui::GetWindowWidth(), stats->numViews*itemHeightWithSpacing) ) ) + if (ImGui::BeginListBox("Views", ImVec2(ImGui::GetWindowWidth(), stats->numViews*itemHeightWithSpacing) ) ) { - ImGuiListClipper clipper(stats->numViews, itemHeight); + ImGuiListClipper clipper; + clipper.Begin(stats->numViews, itemHeight); while (clipper.Step() ) { @@ -349,8 +440,10 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) ImGui::Text("%3d %3d %s", pos, viewStats.view, viewStats.name); const float maxWidth = 30.0f*scale; - const float cpuWidth = bx::clamp(float(viewStats.cpuTimeElapsed*toCpuMs)*scale, 1.0f, maxWidth); - const float gpuWidth = bx::clamp(float(viewStats.gpuTimeElapsed*toGpuMs)*scale, 1.0f, maxWidth); + const float cpuTimeElapsed = float((viewStats.cpuTimeEnd - viewStats.cpuTimeBegin) * toCpuMs); + const float gpuTimeElapsed = float((viewStats.gpuTimeEnd - viewStats.gpuTimeBegin) * toGpuMs); + const float cpuWidth = bx::clamp(cpuTimeElapsed*scale, 1.0f, maxWidth); + const float gpuWidth = bx::clamp(gpuTimeElapsed*scale, 1.0f, maxWidth); ImGui::SameLine(64.0f); @@ -359,7 +452,7 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) ImGui::SetTooltip("View %d \"%s\", CPU: %f [ms]" , pos , viewStats.name - , viewStats.cpuTimeElapsed*toCpuMs + , cpuTimeElapsed ); } @@ -369,13 +462,13 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText) ImGui::SetTooltip("View: %d \"%s\", GPU: %f [ms]" , pos , viewStats.name - , viewStats.gpuTimeElapsed*toGpuMs + , gpuTimeElapsed ); } } } - ImGui::ListBoxFooter(); + ImGui::EndListBox(); } ImGui::PopFont(); diff --git a/3rdparty/bgfx/examples/common/font/font_manager.cpp b/3rdparty/bgfx/examples/common/font/font_manager.cpp index 0da5c17a0ba..5416fc55798 100644 --- a/3rdparty/bgfx/examples/common/font/font_manager.cpp +++ b/3rdparty/bgfx/examples/common/font/font_manager.cpp @@ -1,33 +1,19 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ -#include <bx/macros.h> - -#if BX_COMPILER_MSVC -# define generic GenericFromFreeType // WinRT language extensions see "generic" as a keyword... this is stupid -#endif // BX_COMPILER_MSVC - -BX_PRAGMA_DIAGNOSTIC_PUSH(); -BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4245) // error C4245: '=' : conversion from 'int' to 'FT_UInt', signed/unsigned mismatch -BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4611) // warning C4611 : interaction between '_setjmp' and C++ object destruction is non - portable -#if BX_COMPILER_MSVC || BX_COMPILER_GCC >= 40300 -#pragma push_macro("interface") -#endif -#undef interface -#include <freetype/freetype.h> -#if BX_COMPILER_MSVC || BX_COMPILER_GCC >= 40300 -#pragma pop_macro("interface") -#endif -BX_PRAGMA_DIAGNOSTIC_POP(); - +#include <bx/bx.h> +#include <stb/stb_truetype.h> #include "../common.h" - #include <bgfx/bgfx.h> +BX_PRAGMA_DIAGNOSTIC_PUSH() +BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4244) // warning C4244: '=': conversion from 'double' to 'float', possible loss of data +BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4701) // warning C4701: potentially uninitialized local variable 'pt' used #define SDF_IMPLEMENTATION #include <sdf/sdf.h> +BX_PRAGMA_DIAGNOSTIC_POP() #include <wchar.h> // wcslen @@ -38,11 +24,6 @@ namespace stl = tinystl; #include "font_manager.h" #include "../cube_atlas.h" -struct FTHolder -{ - FT_Library library; - FT_Face face; -}; class TrueTypeFont { @@ -53,7 +34,7 @@ public: /// Initialize from an external buffer /// @remark The ownership of the buffer is external, and you must ensure it stays valid up to this object lifetime /// @return true if the initialization succeed - bool init(const uint8_t* _buffer, uint32_t _bufferSize, int32_t _fontIndex, uint32_t _pixelHeight); + bool init(const uint8_t* _buffer, uint32_t _bufferSize, int32_t _fontIndex, uint32_t _pixelHeight, int16_t _widthPadding, int16_t _heightPadding); /// return the font descriptor of the current font FontInfo getFontInfo(); @@ -63,255 +44,137 @@ public: /// @ remark buffer min size: glyphInfo.m_width * glyphInfo * height * sizeof(char) bool bakeGlyphAlpha(CodePoint _codePoint, GlyphInfo& _outGlyphInfo, uint8_t* _outBuffer); - /// raster a glyph as 32bit subpixel rgba to a memory buffer - /// update the GlyphInfo according to the raster strategy - /// @ remark buffer min size: glyphInfo.m_width * glyphInfo * height * sizeof(uint32_t) - bool bakeGlyphSubpixel(CodePoint _codePoint, GlyphInfo& _outGlyphInfo, uint8_t* _outBuffer); - /// raster a glyph as 8bit signed distance to a memory buffer /// update the GlyphInfo according to the raster strategy /// @ remark buffer min size: glyphInfo.m_width * glyphInfo * height * sizeof(char) bool bakeGlyphDistance(CodePoint _codePoint, GlyphInfo& _outGlyphInfo, uint8_t* _outBuffer); private: - FTHolder* m_font; + friend class FontManager; + + stbtt_fontinfo m_font; + float m_scale; + + int16_t m_widthPadding; + int16_t m_heightPadding; }; -TrueTypeFont::TrueTypeFont() : m_font(NULL) +TrueTypeFont::TrueTypeFont() : m_font() + , m_widthPadding(6) + , m_heightPadding(6) { } TrueTypeFont::~TrueTypeFont() { - if (NULL != m_font) - { - FT_Done_Face(m_font->face); - FT_Done_FreeType(m_font->library); - delete m_font; - m_font = NULL; - } } -bool TrueTypeFont::init(const uint8_t* _buffer, uint32_t _bufferSize, int32_t _fontIndex, uint32_t _pixelHeight) +bool TrueTypeFont::init(const uint8_t* _buffer, uint32_t _bufferSize, int32_t _fontIndex, uint32_t _pixelHeight, int16_t _widthPadding, int16_t _heightPadding) { - BX_CHECK(m_font == NULL, "TrueTypeFont already initialized"); - BX_CHECK( (_bufferSize > 256 && _bufferSize < 100000000), "TrueType buffer size is suspicious"); - BX_CHECK( (_pixelHeight > 4 && _pixelHeight < 128), "TrueType buffer size is suspicious"); - - FTHolder* holder = new FTHolder; - - FT_Error error = FT_Init_FreeType(&holder->library); - BX_WARN(!error, "FT_Init_FreeType failed."); - - if (error) - { - goto err0; - } + BX_WARN( (_bufferSize > 256 && _bufferSize < 100000000), "(FontIndex %d) TrueType buffer size is suspicious (%d)", _fontIndex, _bufferSize); + BX_WARN( (_pixelHeight > 4 && _pixelHeight < 128), "(FontIndex %d) TrueType pixel height is suspicious (%d)", _fontIndex, _pixelHeight); + BX_UNUSED(_bufferSize); - error = FT_New_Memory_Face(holder->library, _buffer, _bufferSize, _fontIndex, &holder->face); - BX_WARN(!error, "FT_Init_FreeType failed."); + int offset = stbtt_GetFontOffsetForIndex(_buffer, _fontIndex); - if (error) - { - if (FT_Err_Unknown_File_Format == error) - { - goto err0; - } - - goto err1; - } - - error = FT_Select_Charmap(holder->face, FT_ENCODING_UNICODE); - BX_WARN(!error, "FT_Init_FreeType failed."); + stbtt_InitFont(&m_font, _buffer, offset); - if (error) - { - goto err2; - } + m_scale = stbtt_ScaleForMappingEmToPixels(&m_font, (float)_pixelHeight); - error = FT_Set_Pixel_Sizes(holder->face, 0, _pixelHeight); - BX_WARN(!error, "FT_Init_FreeType failed."); - - if (error) - { - goto err2; - } - - m_font = holder; + m_widthPadding = _widthPadding; + m_heightPadding = _heightPadding; return true; - -err2: - FT_Done_Face(holder->face); - -err1: - FT_Done_FreeType(holder->library); - -err0: - delete holder; - return false; } FontInfo TrueTypeFont::getFontInfo() { - BX_CHECK(m_font != NULL, "TrueTypeFont not initialized"); - BX_CHECK(FT_IS_SCALABLE(m_font->face), "Font is unscalable"); + int ascent; + int descent; + int lineGap; + stbtt_GetFontVMetrics(&m_font, &ascent, &descent, &lineGap); + + float scale = m_scale; - FT_Size_Metrics metrics = m_font->face->size->metrics; + int x0, y0, x1, y1; + stbtt_GetFontBoundingBox(&m_font, &x0, &y0, &x1, &y1); FontInfo outFontInfo; outFontInfo.scale = 1.0f; - outFontInfo.ascender = metrics.ascender / 64.0f; - outFontInfo.descender = metrics.descender / 64.0f; - outFontInfo.lineGap = (metrics.height - metrics.ascender + metrics.descender) / 64.0f; - outFontInfo.maxAdvanceWidth = metrics.max_advance/ 64.0f; + outFontInfo.ascender = bx::round(ascent * scale); + outFontInfo.descender = bx::round(descent * scale); + outFontInfo.lineGap = bx::round(lineGap * scale); + outFontInfo.maxAdvanceWidth = bx::round((y1 - y0) * scale); - outFontInfo.underlinePosition = FT_MulFix(m_font->face->underline_position, metrics.y_scale) / 64.0f; - outFontInfo.underlineThickness = FT_MulFix(m_font->face->underline_thickness, metrics.y_scale) / 64.0f; + outFontInfo.underlinePosition = (x1 - x0) * scale - ascent; + outFontInfo.underlineThickness = (x1 - x0) * scale / 24.f; return outFontInfo; } -static void glyphInfoInit(GlyphInfo& _glyphInfo, FT_BitmapGlyph _bitmap, FT_GlyphSlot _slot, uint8_t* _dst, uint32_t _bpp) -{ - int32_t xx = _bitmap->left; - int32_t yy = -_bitmap->top; - int32_t ww = _bitmap->bitmap.width; - int32_t hh = _bitmap->bitmap.rows; - - _glyphInfo.offset_x = (float)xx; - _glyphInfo.offset_y = (float)yy; - _glyphInfo.width = (float)ww; - _glyphInfo.height = (float)hh; - _glyphInfo.advance_x = (float)_slot->advance.x / 64.0f; - _glyphInfo.advance_y = (float)_slot->advance.y / 64.0f; - - uint32_t dstPitch = ww * _bpp; - - uint8_t* src = _bitmap->bitmap.buffer; - uint32_t srcPitch = _bitmap->bitmap.pitch; - - for (int32_t ii = 0; ii < hh; ++ii) - { - bx::memCopy(_dst, src, dstPitch); - - _dst += dstPitch; - src += srcPitch; - } -} - bool TrueTypeFont::bakeGlyphAlpha(CodePoint _codePoint, GlyphInfo& _glyphInfo, uint8_t* _outBuffer) { - BX_CHECK(m_font != NULL, "TrueTypeFont not initialized"); + int32_t ascent, descent, lineGap; + stbtt_GetFontVMetrics(&m_font, &ascent, &descent, &lineGap); - _glyphInfo.glyphIndex = FT_Get_Char_Index(m_font->face, _codePoint); + int32_t advance, lsb; + stbtt_GetCodepointHMetrics(&m_font, _codePoint, &advance, &lsb); - FT_GlyphSlot slot = m_font->face->glyph; - FT_Error error = FT_Load_Glyph(m_font->face, _glyphInfo.glyphIndex, FT_LOAD_DEFAULT); - if (error) - { - return false; - } + const float scale = m_scale; + int32_t x0, y0, x1, y1; + stbtt_GetCodepointBitmapBox(&m_font, _codePoint, scale, scale, &x0, &y0, &x1, &y1); - FT_Glyph glyph; - error = FT_Get_Glyph(slot, &glyph); - if (error) - { - return false; - } + const int32_t ww = x1-x0; + const int32_t hh = y1-y0; - error = FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1); - if (error) - { - return false; - } + _glyphInfo.offset_x = (float)x0; + _glyphInfo.offset_y = (float)y0; + _glyphInfo.width = (float)ww; + _glyphInfo.height = (float)hh; + _glyphInfo.advance_x = bx::round(((float)advance) * scale); + _glyphInfo.advance_y = bx::round(((float)(ascent + descent + lineGap)) * scale); - FT_BitmapGlyph bitmap = (FT_BitmapGlyph)glyph; + uint32_t bpp = 1; + uint32_t dstPitch = ww * bpp; - glyphInfoInit(_glyphInfo, bitmap, slot, _outBuffer, 1); - - FT_Done_Glyph(glyph); - return true; -} - -bool TrueTypeFont::bakeGlyphSubpixel(CodePoint _codePoint, GlyphInfo& _glyphInfo, uint8_t* _outBuffer) -{ - BX_CHECK(m_font != NULL, "TrueTypeFont not initialized"); - - _glyphInfo.glyphIndex = FT_Get_Char_Index(m_font->face, _codePoint); - - FT_GlyphSlot slot = m_font->face->glyph; - FT_Error error = FT_Load_Glyph(m_font->face, _glyphInfo.glyphIndex, FT_LOAD_DEFAULT); - if (error) - { - return false; - } - - FT_Glyph glyph; - error = FT_Get_Glyph(slot, &glyph); - if (error) - { - return false; - } - - error = FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_LCD, 0, 1); - if (error) - { - return false; - } - - FT_BitmapGlyph bitmap = (FT_BitmapGlyph)glyph; - - glyphInfoInit(_glyphInfo, bitmap, slot, _outBuffer, 3); - FT_Done_Glyph(glyph); + stbtt_MakeCodepointBitmap(&m_font, _outBuffer, ww, hh, dstPitch, scale, scale, _codePoint); return true; } bool TrueTypeFont::bakeGlyphDistance(CodePoint _codePoint, GlyphInfo& _glyphInfo, uint8_t* _outBuffer) { - BX_CHECK(m_font != NULL, "TrueTypeFont not initialized"); + int32_t ascent, descent, lineGap; + stbtt_GetFontVMetrics(&m_font, &ascent, &descent, &lineGap); - _glyphInfo.glyphIndex = FT_Get_Char_Index(m_font->face, _codePoint); + int32_t advance, lsb; + stbtt_GetCodepointHMetrics(&m_font, _codePoint, &advance, &lsb); - FT_Int32 loadMode = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING; - FT_Render_Mode renderMode = FT_RENDER_MODE_NORMAL; + const float scale = m_scale; + int32_t x0, y0, x1, y1; + stbtt_GetCodepointBitmapBox(&m_font, _codePoint, scale, scale, &x0, &y0, &x1, &y1); - FT_GlyphSlot slot = m_font->face->glyph; - FT_Error error = FT_Load_Glyph(m_font->face, _glyphInfo.glyphIndex, loadMode); - if (error) - { - return false; - } - - FT_Glyph glyph; - error = FT_Get_Glyph(slot, &glyph); - if (error) - { - return false; - } - - error = FT_Glyph_To_Bitmap(&glyph, renderMode, 0, 1); - if (error) - { - return false; - } + const int32_t ww = x1-x0; + const int32_t hh = y1-y0; - FT_BitmapGlyph bitmap = (FT_BitmapGlyph)glyph; + _glyphInfo.offset_x = (float)x0; + _glyphInfo.offset_y = (float)y0; + _glyphInfo.width = (float)ww; + _glyphInfo.height = (float)hh; + _glyphInfo.advance_x = bx::round(((float)advance) * scale); + _glyphInfo.advance_y = bx::round(((float)(ascent + descent + lineGap)) * scale); - int32_t ww = bitmap->bitmap.width; - int32_t hh = bitmap->bitmap.rows; + uint32_t bpp = 1; + uint32_t dstPitch = ww * bpp; - glyphInfoInit(_glyphInfo, bitmap, slot, _outBuffer, 1); - - FT_Done_Glyph(glyph); + stbtt_MakeCodepointBitmap(&m_font, _outBuffer, ww, hh, dstPitch, scale, scale, _codePoint); if (ww * hh > 0) { - uint32_t dw = 6; - uint32_t dh = 6; + uint32_t dw = m_widthPadding; + uint32_t dh = m_heightPadding; uint32_t nw = ww + dw * 2; uint32_t nh = hh + dh * 2; - BX_CHECK(nw * nh < 128 * 128, "Buffer overflow (size %d)", nw * nh); + BX_ASSERT(nw * nh < 128 * 128, "Buffer overflow (size %d)", nw * nh); uint32_t buffSize = nw * nh * sizeof(uint8_t); @@ -324,7 +187,8 @@ bool TrueTypeFont::bakeGlyphDistance(CodePoint _codePoint, GlyphInfo& _glyphInfo bx::memCopy(alphaImg + ii * nw + dw, _outBuffer + (ii - dh) * ww, ww); } - sdfBuild(_outBuffer, nw, 8.0f, alphaImg, nw, nh, nw); + // stb_truetype has some builtin sdf functionality, we can investigate using that too + sdfBuildDistanceField(_outBuffer, nw, 8.0f, alphaImg, nw, nh, nw); free(alphaImg); _glyphInfo.offset_x -= (float)dw; @@ -391,10 +255,10 @@ void FontManager::init() FontManager::~FontManager() { - BX_CHECK(m_fontHandles.getNumHandles() == 0, "All the fonts must be destroyed before destroying the manager"); + BX_ASSERT(m_fontHandles.getNumHandles() == 0, "All the fonts must be destroyed before destroying the manager"); delete [] m_cachedFonts; - BX_CHECK(m_filesHandles.getNumHandles() == 0, "All the font files must be destroyed before destroying the manager"); + BX_ASSERT(m_filesHandles.getNumHandles() == 0, "All the font files must be destroyed before destroying the manager"); delete [] m_cachedFiles; delete [] m_buffer; @@ -408,7 +272,7 @@ FontManager::~FontManager() TrueTypeHandle FontManager::createTtf(const uint8_t* _buffer, uint32_t _size) { uint16_t id = m_filesHandles.alloc(); - BX_CHECK(id != bx::kInvalidHandle, "Invalid handle used"); + BX_ASSERT(id != bx::kInvalidHandle, "Invalid handle used"); m_cachedFiles[id].buffer = new uint8_t[_size]; m_cachedFiles[id].bufferSize = _size; bx::memCopy(m_cachedFiles[id].buffer, _buffer, _size); @@ -419,19 +283,20 @@ TrueTypeHandle FontManager::createTtf(const uint8_t* _buffer, uint32_t _size) void FontManager::destroyTtf(TrueTypeHandle _handle) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); - delete m_cachedFiles[_handle.idx].buffer; + BX_ASSERT(isValid(_handle), "Invalid handle used"); + delete[] m_cachedFiles[_handle.idx].buffer; m_cachedFiles[_handle.idx].bufferSize = 0; m_cachedFiles[_handle.idx].buffer = NULL; m_filesHandles.free(_handle.idx); } -FontHandle FontManager::createFontByPixelSize(TrueTypeHandle _ttfHandle, uint32_t _typefaceIndex, uint32_t _pixelSize, uint32_t _fontType) +FontHandle FontManager::createFontByPixelSize(TrueTypeHandle _ttfHandle, uint32_t _typefaceIndex, uint32_t _pixelSize, uint32_t _fontType, + uint16_t _glyphWidthPadding, uint16_t _glyphHeightPadding) { - BX_CHECK(bgfx::isValid(_ttfHandle), "Invalid handle used"); + BX_ASSERT(isValid(_ttfHandle), "Invalid handle used"); TrueTypeFont* ttf = new TrueTypeFont(); - if (!ttf->init(m_cachedFiles[_ttfHandle.idx].buffer, m_cachedFiles[_ttfHandle.idx].bufferSize, _typefaceIndex, _pixelSize) ) + if (!ttf->init(m_cachedFiles[_ttfHandle.idx].buffer, m_cachedFiles[_ttfHandle.idx].bufferSize, _typefaceIndex, _pixelSize, _glyphWidthPadding, _glyphHeightPadding) ) { delete ttf; FontHandle invalid = { bx::kInvalidHandle }; @@ -439,7 +304,7 @@ FontHandle FontManager::createFontByPixelSize(TrueTypeHandle _ttfHandle, uint32_ } uint16_t fontIdx = m_fontHandles.alloc(); - BX_CHECK(fontIdx != bx::kInvalidHandle, "Invalid handle used"); + BX_ASSERT(fontIdx != bx::kInvalidHandle, "Invalid handle used"); CachedFont& font = m_cachedFonts[fontIdx]; font.trueTypeFont = ttf; @@ -455,7 +320,7 @@ FontHandle FontManager::createFontByPixelSize(TrueTypeHandle _ttfHandle, uint32_ FontHandle FontManager::createScaledFontToPixelSize(FontHandle _baseFontHandle, uint32_t _pixelSize) { - BX_CHECK(bgfx::isValid(_baseFontHandle), "Invalid handle used"); + BX_ASSERT(isValid(_baseFontHandle), "Invalid handle used"); CachedFont& baseFont = m_cachedFonts[_baseFontHandle.idx]; FontInfo& fontInfo = baseFont.fontInfo; @@ -470,7 +335,7 @@ FontHandle FontManager::createScaledFontToPixelSize(FontHandle _baseFontHandle, newFontInfo.underlinePosition = (newFontInfo.underlinePosition * newFontInfo.scale); uint16_t fontIdx = m_fontHandles.alloc(); - BX_CHECK(fontIdx != bx::kInvalidHandle, "Invalid handle used"); + BX_ASSERT(fontIdx != bx::kInvalidHandle, "Invalid handle used"); CachedFont& font = m_cachedFonts[fontIdx]; font.cachedGlyphs.clear(); @@ -484,7 +349,7 @@ FontHandle FontManager::createScaledFontToPixelSize(FontHandle _baseFontHandle, void FontManager::destroyFont(FontHandle _handle) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); CachedFont& font = m_cachedFonts[_handle.idx]; @@ -500,7 +365,7 @@ void FontManager::destroyFont(FontHandle _handle) bool FontManager::preloadGlyph(FontHandle _handle, const wchar_t* _string) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); CachedFont& font = m_cachedFonts[_handle.idx]; if (NULL == font.trueTypeFont) @@ -522,7 +387,7 @@ bool FontManager::preloadGlyph(FontHandle _handle, const wchar_t* _string) bool FontManager::preloadGlyph(FontHandle _handle, CodePoint _codePoint) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); CachedFont& font = m_cachedFonts[_handle.idx]; FontInfo& fontInfo = font.fontInfo; @@ -550,8 +415,16 @@ bool FontManager::preloadGlyph(FontHandle _handle, CodePoint _codePoint) font.trueTypeFont->bakeGlyphDistance(_codePoint, glyphInfo, m_buffer); break; + case FONT_TYPE_DISTANCE_OUTLINE: + case FONT_TYPE_DISTANCE_OUTLINE_IMAGE: + case FONT_TYPE_DISTANCE_DROP_SHADOW: + case FONT_TYPE_DISTANCE_DROP_SHADOW_IMAGE: + case FONT_TYPE_DISTANCE_OUTLINE_DROP_SHADOW_IMAGE: + font.trueTypeFont->bakeGlyphDistance(_codePoint, glyphInfo, m_buffer); + break; + default: - BX_CHECK(false, "TextureType not supported yet"); + BX_ASSERT(false, "TextureType not supported yet"); } if (!addBitmap(glyphInfo, m_buffer) ) @@ -590,12 +463,73 @@ bool FontManager::preloadGlyph(FontHandle _handle, CodePoint _codePoint) return false; } +bool FontManager::addGlyphBitmap(FontHandle _handle, CodePoint _codePoint, uint16_t _width, uint16_t _height, uint16_t _pitch, float extraScale, const uint8_t* _bitmapBuffer, float glyphOffsetX, float glyphOffsetY) +{ + BX_ASSERT(isValid(_handle), "Invalid handle used"); + CachedFont& font = m_cachedFonts[_handle.idx]; + + GlyphHashMap::iterator iter = font.cachedGlyphs.find(_codePoint); + if (iter != font.cachedGlyphs.end() ) + { + return true; + } + + GlyphInfo glyphInfo; + + float glyphScale = extraScale; + glyphInfo.offset_x = glyphOffsetX * glyphScale; + glyphInfo.offset_y = glyphOffsetY * glyphScale; + glyphInfo.width = (float)_width; + glyphInfo.height = (float)_height; + glyphInfo.advance_x = (float)_width * glyphScale; + glyphInfo.advance_y = (float)_height * glyphScale; + glyphInfo.bitmapScale = glyphScale; + + uint32_t dstPitch = _width * 4; + + uint8_t* dst = m_buffer; + const uint8_t* src = _bitmapBuffer; + uint32_t srcPitch = _pitch; + + for (int32_t ii = 0; ii < _height; ++ii) + { + bx::memCopy(dst, src, dstPitch); + + dst += dstPitch; + src += srcPitch; + } + + glyphInfo.regionIndex = m_atlas->addRegion( + (uint16_t)bx::ceil(glyphInfo.width) + , (uint16_t)bx::ceil(glyphInfo.height) + , m_buffer + , AtlasRegion::TYPE_BGRA8 + ); + + font.cachedGlyphs[_codePoint] = glyphInfo; + return true; +} + const FontInfo& FontManager::getFontInfo(FontHandle _handle) const { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); return m_cachedFonts[_handle.idx].fontInfo; } +float FontManager::getKerning(FontHandle _handle, CodePoint _prevCodePoint, CodePoint _codePoint) +{ + const CachedFont& cachedFont = m_cachedFonts[_handle.idx]; + if (isValid(cachedFont.masterFontHandle)) + { + CachedFont& baseFont = m_cachedFonts[cachedFont.masterFontHandle.idx]; + return baseFont.trueTypeFont->m_scale * stbtt_GetCodepointKernAdvance(&baseFont.trueTypeFont->m_font, _prevCodePoint, _codePoint); + } + else + { + return cachedFont.trueTypeFont->m_scale * stbtt_GetCodepointKernAdvance(&cachedFont.trueTypeFont->m_font, _prevCodePoint, _codePoint); + } +} + const GlyphInfo* FontManager::getGlyphInfo(FontHandle _handle, CodePoint _codePoint) { const GlyphHashMap& cachedGlyphs = m_cachedFonts[_handle.idx].cachedGlyphs; @@ -611,7 +545,7 @@ const GlyphInfo* FontManager::getGlyphInfo(FontHandle _handle, CodePoint _codePo it = cachedGlyphs.find(_codePoint); } - BX_CHECK(it != cachedGlyphs.end(), "Failed to preload glyph."); + BX_ASSERT(it != cachedGlyphs.end(), "Failed to preload glyph."); return &it->second; } diff --git a/3rdparty/bgfx/examples/common/font/font_manager.h b/3rdparty/bgfx/examples/common/font/font_manager.h index d2d9e511970..a8ea3e51cec 100644 --- a/3rdparty/bgfx/examples/common/font/font_manager.h +++ b/3rdparty/bgfx/examples/common/font/font_manager.h @@ -1,12 +1,13 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef FONT_MANAGER_H_HEADER_GUARD #define FONT_MANAGER_H_HEADER_GUARD #include <bx/handlealloc.h> +#include <bx/string.h> #include <bgfx/bgfx.h> class Atlas; @@ -19,6 +20,13 @@ class Atlas; // #define FONT_TYPE_RGBA UINT32_C(0x00000300) // BGRA8 #define FONT_TYPE_DISTANCE UINT32_C(0x00000400) // L8 #define FONT_TYPE_DISTANCE_SUBPIXEL UINT32_C(0x00000500) // L8 +#define FONT_TYPE_DISTANCE_OUTLINE UINT32_C(0x00000600) // L8 +#define FONT_TYPE_DISTANCE_OUTLINE_IMAGE UINT32_C(0x00001600) // L8 + BGRA8 +#define FONT_TYPE_DISTANCE_DROP_SHADOW UINT32_C(0x00002700) // L8 +#define FONT_TYPE_DISTANCE_DROP_SHADOW_IMAGE UINT32_C(0x00003800) // L8 + BGRA8 +#define FONT_TYPE_DISTANCE_OUTLINE_DROP_SHADOW_IMAGE UINT32_C(0x00003900) // L8 + BGRA8 +#define FONT_TYPE_MASK_DISTANCE_IMAGE UINT32_C(0x00001000) +#define FONT_TYPE_MASK_DISTANCE_DROP_SHADOW UINT32_C(0x00002000) struct FontInfo { @@ -109,12 +117,15 @@ struct GlyphInfo /// drawn as part of a string of text. float advance_y; + /// Amount to scale a bitmap image glyph. + float bitmapScale; + /// Region index in the atlas storing textures. uint16_t regionIndex; }; -BGFX_HANDLE(TrueTypeHandle); -BGFX_HANDLE(FontHandle); +BGFX_HANDLE(TrueTypeHandle) +BGFX_HANDLE(FontHandle) class FontManager { @@ -145,7 +156,8 @@ public: void destroyTtf(TrueTypeHandle _handle); /// Return a font whose height is a fixed pixel size. - FontHandle createFontByPixelSize(TrueTypeHandle _handle, uint32_t _typefaceIndex, uint32_t _pixelSize, uint32_t _fontType = FONT_TYPE_ALPHA); + FontHandle createFontByPixelSize(TrueTypeHandle _handle, uint32_t _typefaceIndex, uint32_t _pixelSize, uint32_t _fontType = FONT_TYPE_ALPHA, + uint16_t _glyphWidthPadding = 6, uint16_t glyphHeightPadding = 6); /// Return a scaled child font whose height is a fixed pixel size. FontHandle createScaledFontToPixelSize(FontHandle _baseFontHandle, uint32_t _pixelSize); @@ -162,16 +174,20 @@ public: /// Preload a single glyph, return true on success. bool preloadGlyph(FontHandle _handle, CodePoint _character); + bool addGlyphBitmap(FontHandle _handle, CodePoint _character, uint16_t _width, uint16_t height, uint16_t _pitch, float extraScale, const uint8_t* _bitmapBuffer, float glyphOffsetX, float glyphOffsetY); + /// Return the font descriptor of a font. /// /// @remark the handle is required to be valid const FontInfo& getFontInfo(FontHandle _handle) const; - /// Return the rendering informations about the glyph region. Load the + /// Return the rendering information about the glyph region. Load the /// glyph from a TrueType font if possible /// const GlyphInfo* getGlyphInfo(FontHandle _handle, CodePoint _codePoint); + float getKerning(FontHandle _handle, CodePoint _prevCodePoint, CodePoint _codePoint); + const GlyphInfo& getBlackGlyph() const { return m_blackGlyph; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_basic.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_basic.bin.h index dabdd175e37..01e7bbe215b 100644 --- a/3rdparty/bgfx/examples/common/font/fs_font_basic.bin.h +++ b/3rdparty/bgfx/examples/common/font/fs_font_basic.bin.h @@ -1,285 +1,333 @@ -static const uint8_t fs_font_basic_glsl[553] = +static const uint8_t fs_font_basic_glsl[760] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x09, 0x02, 0x00, 0x00, 0x76, // Color..........v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary - 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // orm lowp sampler - 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // Cube s_texColor; - 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. - 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, // lowp float rgb - 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, // a_1[4];. lowp v - 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ec4 tmpvar_2;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // tmpvar_2 = textu + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, // .......varying v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // rying vec4 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // coord0;.uniform + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, // samplerCube s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // xColor;.void mai + 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // n ().{. vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_1;. tmpvar + 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, // _1 = textureCube + 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, // texcoord0.xyz);. + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // int tmpvar_2;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, // tmpvar_2 = int + 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, // (((v_texcoord0.w + 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, // * 4.0) + 0.5)); + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . float tmpvar_ + 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 3;. if ((tmpvar + 0x5f, 0x32, 0x20, 0x3c, 0x20, 0x31, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // _2 < 1)) {. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // mpvar_3 = tmpvar + 0x5f, 0x31, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, // _1.z;. } else { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // . float tmpva + 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, // r_4;. if ((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3c, 0x20, 0x32, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, // pvar_2 < 2)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, // tmpvar_4 = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_1.y;. + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, // } else {. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, // loat tmpvar_5;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // if ((tmpvar + 0x5f, 0x32, 0x20, 0x3c, 0x20, 0x33, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // _2 < 3)) {. + 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x6d, // tmpvar_5 = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_1.x;. + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // } else {. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_5 = tmpv + 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, // ar_1.w;. }; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // . tmpvar_4 + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // = tmpvar_5;. + 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, // };. tmpvar_3 + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, // = tmpvar_4;. }; + 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // . vec4 tmpvar_6 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x79, 0x7a, // ;. tmpvar_6.xyz + 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // = v_color0.xyz; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_6.w = + 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (v_color0.w * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // pvar_3);. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar + 0x5f, 0x36, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _6;.}... +}; +static const uint8_t fs_font_basic_essl[808] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // .......varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ighp vec4 v_colo + 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // r0;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, // d0;.uniform lowp + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, // samplerCube s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // exColor;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, // in ().{. lowp v + 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, // ec4 tmpvar_1;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // tmpvar_1 = textu 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // reCube (s_texCol 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // or, v_texcoord0. 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, // xyz);. highp in - 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // t tmpvar_3;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, // pvar_3 = int(((v + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // t tmpvar_2;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, // pvar_2 = int(((v 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, // _texcoord0.w * 4 - 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, // .0) + 0.5));. r - 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // gba_1[0] = tmpva - 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, // r_2.z;. rgba_1[ - 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x3b, // 1] = tmpvar_2.y; - 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, // . rgba_1[2] = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, // mpvar_2.x;. rgb - 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // a_1[3] = tmpvar_ - 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // 2.w;. lowp vec4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_4;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, // var_4.xyz = v_co - 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // lor0.xyz;. tmpv - 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ar_4.w = (v_colo - 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, // r0.w * rgba_1[tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, // pvar_3]);. gl_F - 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ragColor = tmpva - 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r_4;.}... + 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // .0) + 0.5));. l + 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // owp float tmpvar + 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // _3;. if ((tmpva + 0x72, 0x5f, 0x32, 0x20, 0x3c, 0x20, 0x31, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // r_2 < 1)) {. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // tmpvar_3 = tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, // r_1.z;. } else + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // {. lowp float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, // tmpvar_4;. i + 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3c, 0x20, 0x32, // f ((tmpvar_2 < 2 + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // )) {. tmpva + 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, // r_4 = tmpvar_1.y + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // lowp float + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // tmpvar_5;. + 0x69, 0x66, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3c, 0x20, // if ((tmpvar_2 < + 0x33, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // 3)) {. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // pvar_5 = tmpvar_ + 0x31, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, // 1.x;. } els + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // e {. tmpv + 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // ar_5 = tmpvar_1. + 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // w;. };. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // tmpvar_4 = tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // var_5;. };. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // tmpvar_3 = tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, // var_4;. };. lo + 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // wp vec4 tmpvar_6 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x79, 0x7a, // ;. tmpvar_6.xyz + 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // = v_color0.xyz; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_6.w = + 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (v_color0.w * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // pvar_3);. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar + 0x5f, 0x36, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _6;.}... }; -static const uint8_t fs_font_basic_spv[1686] = +static const uint8_t fs_font_basic_spv[1439] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x84, 0x06, 0x00, 0x00, 0x03, 0x02, // FSH............. - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x10, 0x00, // ..y...|......... - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, // in............Bg - 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x00, 0x06, 0x00, // fxSamplerCube... - 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, // ..........m_samp - 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, // ler............. - 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..m_texture..... - 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // .. ...s_texColor - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......"...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... - 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..%...s_texColor - 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x79, 0x00, // Texture.......y. - 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... - 0x05, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ..|...v_texcoord - 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x87, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 0.........bgfx_F - 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ragData0..G...%. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ..".......G...%. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x00, // ..!.......G...y. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, // ..........G...|. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x87, 0x00, // ..........G..... - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. - 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x00, // ...... ......... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ......... - 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, // ......;....... . - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ...!..... - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, // ......;...!...". - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...$..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......;...$...%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, // ..........(... . - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, // ......+...(...). - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, // ......+...(...-. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, // ..........1..... - 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ......K... ..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......O..... - 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, // .@+.......Q..... - 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, // .?+...K...T..... - 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x54, 0x00, // ......U.......T. - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x00, // .. ...V.......U. - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...(...`..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x03, 0x00, // ..+...(...e..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ...x......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...x...y..... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...x...|..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;............. - 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ..6............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. - 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..V...........=. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......#..."...=. - 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, // ......&...%...P. - 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, // ......'...#...&. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..>... ...'...=. - 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......z...y...=. - 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......}...|...=. - 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, // .......... ...Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xa4, 0x00, // ..Q............. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa6, 0x00, // ......O......... - 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..}...}......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0xd1, 0x00, // ......V...1..... - 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, // ..........W..... - 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, // ..........}..... - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, // ................ - 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xab, 0x00, // ..O............. - 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x28, 0x00, // ......Q...n...(. - 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. - 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x2d, 0x00, // ..............-. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x51, 0x00, // ..>...........Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xa1, 0x00, // ..A............. - 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xb1, 0x00, // ..)...>......... - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xd3, 0x00, // ..Q............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xb5, 0x00, // ......A......... - 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xb5, 0x00, // ......`...>..... - 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb7, 0x00, // ......Q......... - 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, // ..........A..... - 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..........e...>. - 0x03, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, // ..........A..... - 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. - 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x03, 0x00, // ..........z..... - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xbf, 0x00, // ................ - 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc2, 0x00, // ......Q......... - 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..z.......Q..... - 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ......z.......Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x02, 0x00, // ..........z..... - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, // ..P............. - 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. - 0x03, 0x00, 0x87, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..............8. - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // _texColor0...... + 0x04, 0x1a, 0x00, 0x74, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, // ...t.....#...... + 0x00, 0x08, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, // ...........GLSL. + 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, // std.450......... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7c, // ...main....y...| + 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, // ................ + 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x23, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // .......#...s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, // ColorSampler.... + 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // ...&...s_texColo + 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x79, // rTexture.......y + 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // .......|...v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x76, // or0............v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x8c, // _texcoord0...... + 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...#...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...#...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...&...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G...&...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G...y........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...|........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ..."...........; + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ..."...#....... + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...%...........; + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ...%...&........ + 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ...)... .......+ + 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1b, // ...)...*........ + 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...2.......+.... + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...P......@+.... + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x14, 0x00, 0x02, 0x00, 0x57, // ...R......?....W + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x02, // ...+...)...].... + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x03, // ...+...)...c.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, // ... ...x........ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x01, // ...;...x...y.... + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, // ...;...x...|.... + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01, // ...;...x........ + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, // ... ............ + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x03, // ...;............ + 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // ...6............ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, // ...............= + 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, // .......$...#...= + 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3d, // .......'...&...= + 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3d, // .......}...|...= + 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x4f, // ...............O + 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x00, 0x05, 0x00, 0x32, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, // ...2.......'...$ + 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xdd, // ...W............ + 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb1, // .......Q........ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x81, // ...........P.... + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x52, // ...............R + 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, // ...n...)........ + 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb4, // .......W........ + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb8, // ...*...Q........ + 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x57, // ...............W + 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x51, // ...........]...Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb4, // .......W........ + 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc0, // ...c...Q........ + 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xa9, // ................ + 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xc0, // ................ + 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, // ................ + 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xa9, // ................ + 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb8, // ................ + 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc9, // .......Q........ + 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // ...}............ + 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, // ...........}.... + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x7d, // ...Q...........} + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xce, // .......Q........ + 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, // ...}.......P.... + 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0xce, // ................ + 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x8c, 0x00, 0x00, 0x00, 0xcf, // .......>........ + 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // .......8....... }; -static const uint8_t fs_font_basic_dx9[456] = +static const uint8_t fs_font_basic_dx9[488] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x00, // Color0.......... - 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ...L...0........ - 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...<.......s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, // 10.1..Q........ - 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x51, // ..@...?.......?Q - 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, // ................ - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // .....@.......... - 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x55, 0xa0, 0x13, // .............U.. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, // ...........X.... - 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xff, 0xa0, 0x02, // .....U.......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x58, // .............U.X - 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, // ................ - 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // ................ - 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, // .U.............. - 0x00, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x00, // ...X............ - 0x00, 0xff, 0xa0, 0x00, 0x00, 0xaa, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x01, // .......B........ - 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, // ................ - 0x00, 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, // ................ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, // ............. .C + 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, // TAB....S........ + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, // ...........L...0 + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, // ...........<.... + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, // ...............p + 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, // s_3_0.Microsoft + 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, // (R) HLSL Shader + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, // Compiler 10.1..Q + 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, // ..........@...?. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, // ......?Q........ + 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, // .........@...... + 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, // ................ + 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, // ................ + 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x00, // ................ + 0x00, 0x00, 0xa0, 0x00, 0x00, 0x55, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, // .....U.......... + 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, // ...X.........U.. + 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, // ................ + 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, // .....U.X........ + 0x00, 0x00, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // .........U...... + 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, // ...........B.... + 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, // ...........X.... + 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0xff, 0x80, 0x01, 0x00, 0x00, 0x80, 0x58, // ...............X + 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x01, // .........U...... + 0x00, 0x55, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // .U.X............ + 0x00, 0x55, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, // .U.............. 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, // ................ 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ........ }; -static const uint8_t fs_font_basic_dx11[619] = +static const uint8_t fs_font_basic_dx11[656] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x48, 0x02, 0x00, 0x00, 0x44, // Color0.....H...D - 0x58, 0x42, 0x43, 0xdb, 0x69, 0x11, 0xe0, 0xc0, 0xf9, 0x23, 0x5b, 0x4d, 0x65, 0x8f, 0xa1, 0x99, // XBC.i....#[Me... - 0x34, 0xff, 0x76, 0x01, 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // 4.v....H......., - 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, // ...........ISGNl - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, // ...........b.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C - 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, // OLOR.TEXCOORD..O - 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET - 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x6c, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x5b, // ...SHDRl...@...[ - 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, // ...Z....`......X - 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, // 0...p......UU..b - 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, // ...........b.... - 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x04, 0x00, // ...h.......i.... - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...........E.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ~.......`......6 - 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ....0 .........* - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ...............6 - 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, // ....0 .......... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // .......:.......2 - 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x02, // ...........:.... - 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.....@.@... - 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ..?............. - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......6........ - 0x00, 0x00, 0x00, 0x0a, 0x30, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ....0 .......... - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...8.... ....... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, // .......:.......6 - 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, // ...r ......F.... - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...>....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, // ....s_texColor0. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........P...DXBC + 0xfa, 0xe4, 0x8b, 0xa4, 0x28, 0x69, 0x9a, 0xff, 0x6d, 0x15, 0xac, 0x21, 0xfc, 0x34, 0xe4, 0x3a, // ....(i..m..!.4.: + 0x01, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....P.......,... + 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // ........ISGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, // R.TEXCOORD..OSGN + 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ,........... ... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, // ....SV_TARGET... + 0x53, 0x48, 0x44, 0x52, 0x74, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, // SHDRt...@...]... + 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, // Z....`......X0.. + 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, // .p......UU..b... + 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........b....... + 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, // h.......2....... + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // ....:........@.. + 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, // ...@.@.....?.... + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x22, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, // "...r........... + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .....@.......... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, // ........E....... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, // ....F.......F~.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, // .....`......7... + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // B.......*....... + 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........:....... + 0x37, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 7..."........... + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, // ............*... + 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....7........... + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........*....... + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, // ........8.... .. + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, // ............:... + 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....6...r ...... + 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // F.......>....... }; -static const uint8_t fs_font_basic_mtl[937] = +static const uint8_t fs_font_basic_mtl[827] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x9a, 0x03, 0x00, 0x00, 0x75, 0x73, // FSH...........us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, // r0;. float4 v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // excoord0;.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // rOutput {. floa - 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // t4 gl_FragColor; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // {.};.fragment xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, // uffer(0)]]. , - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, // texturecube<flo - 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, // at> s_texColor [ - 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, // [texture(0)]], s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, // ampler _mtlsmp_s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, // _texColor [[samp - 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, // ler(0)]]).{. xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // t _mtl_o;. floa - 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, // t rgba_1[4];. f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // loat4 tmpvar_2 = - 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // 0;. tmpvar_2 = - 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, // s_texColor.samp - 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, // le(_mtlsmp_s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, // Color, (float3)( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _mtl_i.v_texcoor - 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, // d0.xyz));. int - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_3 = 0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, // tmpvar_3 = int(( - 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (_mtl_i.v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, // rd0.w * 4.0) + 0 - 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, // .5));. rgba_1[0 - 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, // ] = tmpvar_2.z;. - 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, // rgba_1[1] = tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // pvar_2.y;. rgba - 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // _1[2] = tmpvar_2 - 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, // .x;. rgba_1[3] - 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, // = tmpvar_2.w;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // float4 tmpvar_4 - 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, // = 0;. tmpvar_4. - 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, // xyz = _mtl_i.v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // olor0.xyz;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // var_4.w = (_mtl_ - 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x72, // i.v_color0.w * r - 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x5d, 0x29, // gba_1[tmpvar_3]) - 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, // ;. _mtl_o.gl_Fr - 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar - 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, // _4;. return _mt - 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // l_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x89, 0x02, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x89, 0x02, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x02, 0xd8, 0x02, 0x00, 0x00, 0x23, // r..............# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // etal;..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, // float4 bgfx_ + 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, // FragData0 [[colo + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // r(0)]];.};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // ct xlatMtlMain_i + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, // n.{. float4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, // _color0 [[user(l + 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ocn0)]];. flo + 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // at4 v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // .};..fragment xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, // atMtlMain_out xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // atMtlMain(xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, // lMain_in in [[st + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // age_in]], textur + 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, // ecube<float> s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // exColor [[textur + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // e(0)]], sampler + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, // s_texColorSample + 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // r [[sampler(0)]] + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ).{. xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, // ain_out out = {} + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x32, // ;. float4 _22 + 0x30, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // 0 = s_texColor.s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ample(s_texColor + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, // Sampler, in.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord0.xyz);. + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, // int _177 = int + 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // ((in.v_texcoord0 + 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, // .w * 4.0) + 0.5) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // ;. out.bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ragData0 = float + 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, // 4(in.v_color0.xy + 0x7a, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, // z, in.v_color0.w + 0x20, 0x2a, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x37, 0x37, 0x20, 0x3c, 0x20, 0x31, 0x29, 0x20, 0x3f, // * ((_177 < 1) ? + 0x20, 0x5f, 0x32, 0x32, 0x30, 0x2e, 0x7a, 0x20, 0x3a, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x37, 0x37, // _220.z : ((_177 + 0x20, 0x3c, 0x20, 0x32, 0x29, 0x20, 0x3f, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x2e, 0x79, 0x20, 0x3a, // < 2) ? _220.y : + 0x20, 0x28, 0x28, 0x5f, 0x31, 0x37, 0x37, 0x20, 0x3c, 0x20, 0x33, 0x29, 0x20, 0x3f, 0x20, 0x5f, // ((_177 < 3) ? _ + 0x32, 0x32, 0x30, 0x2e, 0x78, 0x20, 0x3a, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x2e, 0x77, 0x29, 0x29, // 220.x : _220.w)) + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, // ));. return o + 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x20, 0x00, // ut;.}.... . }; extern const uint8_t* fs_font_basic_pssl; extern const uint32_t fs_font_basic_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_basic.sc b/3rdparty/bgfx/examples/common/font/fs_font_basic.sc index 7b4b6636fde..1c3a38be7cd 100644 --- a/3rdparty/bgfx/examples/common/font/fs_font_basic.sc +++ b/3rdparty/bgfx/examples/common/font/fs_font_basic.sc @@ -8,11 +8,8 @@ void main() { vec4 color = textureCube(s_texColor, v_texcoord0.xyz); int index = int(v_texcoord0.w*4.0 + 0.5); - float rgba[4]; - rgba[0] = color.z; - rgba[1] = color.y; - rgba[2] = color.x; - rgba[3] = color.w; - float alpha = rgba[index]; + float alpha = index < 1 ? color.z : + index < 2 ? color.y : + index < 3 ? color.x : color.w; gl_FragColor = vec4(v_color0.xyz, v_color0.a * alpha); } diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h index 87ac0af3a95..79c3e8a88e0 100644 --- a/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h @@ -1,253 +1,328 @@ -static const uint8_t fs_font_distance_field_glsl[1019] = +static const uint8_t fs_font_distance_field_glsl[971] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xdb, 0x03, 0x00, 0x00, 0x76, // Color..........v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary - 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // orm lowp sampler - 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // Cube s_texColor; - 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. - 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, // lowp float rgb - 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, // a_1[4];. lowp v - 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ec4 tmpvar_2;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // tmpvar_2 = textu - 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // reCube (s_texCol - 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // or, v_texcoord0. - 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, // xyz);. highp in - 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // t tmpvar_3;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, // pvar_3 = int(((v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, // _texcoord0.w * 4 - 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, // .0) + 0.5));. r - 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // gba_1[0] = tmpva - 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, // r_2.z;. rgba_1[ - 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x3b, // 1] = tmpvar_2.y; - 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, // . rgba_1[2] = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, // mpvar_2.x;. rgb - 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // a_1[3] = tmpvar_ - 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // 2.w;. highp vec - 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 3 tmpvar_4;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, // pvar_4 = dFdx(v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, // texcoord0.xyz);. - 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // highp vec3 tmp - 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_5;. tmpvar_ - 0x35, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // 5 = dFdy(v_texco - 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, // ord0.xyz);. hig - 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // hp float tmpvar_ - 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, // 6;. tmpvar_6 = - 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, // (8.0 * (sqrt(. - 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2c, // dot (tmpvar_4, - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, // tmpvar_4). ) + - 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, // sqrt(. dot ( - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // tmpvar_5, tmpvar - 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, // _5). )));. hig - 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, // hp float edge0_7 - 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, // ;. edge0_7 = (0 - 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, // .5 - tmpvar_6);. - 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // lowp float tmp - 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_8;. tmpvar_ - 0x38, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, // 8 = clamp (((rgb - 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x5d, 0x20, 0x2d, 0x20, // a_1[tmpvar_3] - - 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, // edge0_7) / (. - 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // (0.5 + tmpvar_6 - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x29, 0x29, // ). - edge0_7)) - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // , 0.0, 1.0);. l - 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec4 tmpvar_ - 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x79, // 9;. tmpvar_9.xy + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // g vec4 v_color0; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, // rm samplerCube s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // _texColor;.unifo + 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // rm vec4 u_params + 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, // . float rgba_1[ + 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 4];. vec4 tmpva + 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, // r_2;. tmpvar_2 + 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, // = textureCube (s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // _texColor, v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, // coord0.xyz);. i + 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, // nt tmpvar_3;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, // mpvar_3 = int((( + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, // v_texcoord0.w * + 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 4.0) + 0.5));. + 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // rgba_1[0] = tmpv + 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, // ar_2.z;. rgba_1 + 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, // [1] = tmpvar_2.y + 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, // ;. rgba_1[2] = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, // tmpvar_2.x;. rg + 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ba_1[3] = tmpvar + 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // _2.w;. vec3 tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_4;. tmpvar_ + 0x34, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, // 4 = (abs(dFdx(v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, // texcoord0.xyz)) + 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // + abs(dFdy(v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // coord0.xyz)));. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, // float tmpvar_5; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x28, // . tmpvar_5 = (( + 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, // (16.0 * . sqr + 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2c, // t(dot (tmpvar_4, + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, // tmpvar_4)). ) + 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, // / 1.414214) * u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // params.y);. flo + 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, // at edge0_6;. ed + 0x67, 0x65, 0x30, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, // ge0_6 = (0.5 - t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // mpvar_5);. floa + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // t tmpvar_7;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, // pvar_7 = clamp ( + 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ((rgba_1[tmpvar_ + 0x33, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x36, 0x29, 0x20, 0x2f, 0x20, // 3] - edge0_6) / + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, // (. (0.5 + tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, // var_5). - edge + 0x30, 0x5f, 0x36, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // 0_6)), 0.0, 1.0) + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ;. vec4 tmpvar_ + 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x78, 0x79, // 8;. tmpvar_8.xy 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, // z = v_color0.xyz - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x77, 0x20, 0x3d, // ;. tmpvar_9.w = - 0x20, 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x28, // (v_color0.w * ( - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // tmpvar_8 * (tmpv - 0x61, 0x72, 0x5f, 0x38, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, // ar_8 * . (3.0 - 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // - (2.0 * tmpvar - 0x5f, 0x38, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // _8)). )));. gl + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x77, 0x20, 0x3d, // ;. tmpvar_8.w = + 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, 0x20, 0x28, 0x74, // ((tmpvar_7 * (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, // mpvar_7 * . ( + 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // 3.0 - (2.0 * tmp + 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, // var_7)). )) * v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // _color0.w);. gl 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _FragColor = tmp - 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // var_9;.}... + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // var_8;.}... }; -static const uint8_t fs_font_distance_field_spv[1974] = +static const uint8_t fs_font_distance_field_essl[1038] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0x03, 0x02, // FSH............. - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, // #............... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x10, 0x00, // ................ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x03, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec4 v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, // oord0;.uniform l + 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, // owp samplerCube + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // s_texColor;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // orm highp vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // _params;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // in ().{. lowp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, // loat rgba_1[4];. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec4 tmpv + 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_2;. tmpvar_2 + 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, // = textureCube ( + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, // s_texColor, v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord0.xyz);. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // highp int tmpvar + 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, // _3;. tmpvar_3 = + 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // int(((v_texcoor + 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, // d0.w * 4.0) + 0. + 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, // 5));. rgba_1[0] + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, // = tmpvar_2.z;. + 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // rgba_1[1] = tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // var_2.y;. rgba_ + 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // 1[2] = tmpvar_2. + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, // x;. rgba_1[3] = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x68, // tmpvar_2.w;. h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec3 tmpvar + 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, // _4;. tmpvar_4 = + 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // (abs(dFdx(v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, // coord0.xyz)) + a + 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // bs(dFdy(v_texcoo + 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, // rd0.xyz)));. hi + 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ghp float tmpvar + 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, // _5;. tmpvar_5 = + 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, // (((16.0 * . + 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // sqrt(dot (tmpvar + 0x5f, 0x34, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x0a, 0x20, // _4, tmpvar_4)). + 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, // ) / 1.414214) * + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, // u_params.y);. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, // highp float edge + 0x30, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x36, 0x20, 0x3d, // 0_6;. edge0_6 = + 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // (0.5 - tmpvar_5 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // );. lowp float + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_7;. tmpv + 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, // ar_7 = clamp ((( + 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x5d, // rgba_1[tmpvar_3] + 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, // - edge0_6) / (. + 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // (0.5 + tmpva + 0x72, 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // r_5). - edge0_ + 0x36, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // 6)), 0.0, 1.0);. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec4 tmpv + 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, // ar_8;. tmpvar_8 + 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // .xyz = v_color0. + 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, // xyz;. tmpvar_8. + 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, // w = ((tmpvar_7 * + 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, // (tmpvar_7 * . + 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, // (3.0 - (2.0 * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, // tmpvar_7)). )) + 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, // * v_color0.w);. + 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // gl_FragColor = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_8;.}... +}; +static const uint8_t fs_font_distance_field_spv[2034] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, // ..s_texColor0... + 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0xb4, 0x07, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ............#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ................ + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL + 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x93, 0x00, // ......main...... + 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x10, 0x00, // ................ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, // in............Bg - 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x00, 0x06, 0x00, // fxSamplerCube... - 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, // ..........m_samp - 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, // ler............. - 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..m_texture..... - 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // .. ...s_texColor - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......"...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... - 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..%...s_texColor - 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x91, 0x00, // Texture......... - 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... - 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ......v_texcoord - 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 0.........bgfx_F - 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ragData0..G...%. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ..".......G...%. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, // ..!.......G..... - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, // ..........G..... - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, // ..........G..... - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. - 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x00, // ...... ......... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ......... - 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, // ......;....... . - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ...!..... - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, // ......;...!...". - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...$..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......;...$...%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, // ..........(... . - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, // ......+...(...). - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, // ......+...(...-. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, // ..........1..... - 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ......K... ..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......O..... - 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, // .@+.......Q..... - 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, // .?+...K...T..... - 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x54, 0x00, // ......U.......T. - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x00, // .. ...V.......U. - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...(...`..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x03, 0x00, // ..+...(...e..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......y..... - 0x00, 0x41, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, // .A ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;............. - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;............. - 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ..6............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. - 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..V...........=. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......#..."...=. - 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, // ......&...%...P. - 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, // ......'...#...&. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..>... ...'...=. - 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. - 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. - 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, // .......... ...Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0xc0, 0x00, // ..Q............. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc2, 0x00, // ......O......... - 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x01, // ......V...1..... - 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, // ..........W..... - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc5, 0x00, // ................ - 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc7, 0x00, // ..O............. - 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x28, 0x00, // ......Q...n...(. - 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. - 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x2d, 0x00, // ..............-. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x51, 0x00, // ..>...........Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xb9, 0x00, // ..A............. - 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, // ..)...>......... - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x02, 0x01, // ..Q............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xd1, 0x00, // ......A......... - 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xd1, 0x00, // ......`...>..... - 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x00, // ......Q......... - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, // ..........A..... - 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..........e...>. - 0x03, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, // ..........A..... - 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. - 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..............O. - 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x95, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xcf, 0x00, // ................ - 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................ - 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, // ..............B. - 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xdd, 0x00, // ......O......... - 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xde, 0x00, // ................ - 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xdf, 0x00, // ................ - 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x81, 0x00, // ......B......... - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xe0, 0x00, // ................ - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x79, 0x00, // ..............y. - 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe6, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, // ..Q............. - 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x0c, 0x00, // ......Q......... - 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, // ..............1. - 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xee, 0x00, // ................ - 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, // ......Q......... - 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xf1, 0x00, // ..P............. - 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. - 0x03, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..............8. - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x23, 0x00, 0x00, 0x00, 0x73, 0x5f, // in........#...s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, // texColorSampler. + 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......&...s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // olorTexture..... + 0x06, 0x00, 0x77, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, // ..w...UniformBlo + 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, // ck........w..... + 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..u_params...... + 0x03, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x93, 0x00, // ..y............. + 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, // ..gl_FragCoord.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x96, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ..........v_colo + 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x76, 0x5f, // r0............v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xa6, 0x00, // texcoord0....... + 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, // ..bgfx_FragData0 + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...#..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, // ..G...#...!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...&..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, // ..G...&...!..... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...w.......#. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x77, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G...w..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...y..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G...y...!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G............. + 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!..... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, // ................ + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, // ...... ......... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // .."...........;. + 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // .."...#....... . + 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..%...........;. + 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ..%...&......... + 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..)... .......+. + 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..)...*.......+. + 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..)............. + 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x4c, 0x00, // ..2...........L. + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // .. .......+..... + 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..P......@+..... + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, // ..R......?+...L. + 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x56, 0x00, // ..U...........V. + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x57, 0x00, // ......U... ...W. + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, // ......V...+...L. + 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x29, 0x00, // ..].......+...). + 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x29, 0x00, // ..a.......+...). + 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x77, 0x00, // ..f...........w. + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, // ...... ...x..... + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, 0x00, // ..w...;...x...y. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x02, 0x00, // ...... ...z..... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x01, 0x00, // ...... ......... + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x93, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x96, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x99, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x03, 0x00, // ...... ......... + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa6, 0x00, // ......;......... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x15, 0x01, // ......+......... + 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ....5A6......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, // ................ + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x00, // ..;...W......... + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, // ..=.......$...#. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, // ..=.......'...&. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, // ..=............. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x99, 0x00, // ..=............. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x9a, 0x00, // ..O............. + 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x32, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x27, 0x00, // ..V...2.......'. + 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x08, 0x01, // ..$...W......... + 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x50, 0x00, // ..............P. + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, // ................ + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0xcf, 0x00, // ..R...n...)..... + 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd1, 0x00, // ......Q......... + 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, // ..........A..... + 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. + 0x03, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. + 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x2a, 0x00, // ..............*. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x51, 0x00, // ..>...........Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xc0, 0x00, // ..A............. + 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd7, 0x00, // ..a...>......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x08, 0x01, // ..Q............. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xdb, 0x00, // ......A......... + 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xdb, 0x00, // ......f...>..... + 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0xdd, 0x00, // ......A......... + 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........=..... + 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..........O..... + 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xe1, 0x00, // ..........B..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe2, 0x00, // ................ + 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xe5, 0x00, // ......A...z..... + 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..y.......]...=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe6, 0x00, // ................ + 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x52, 0x00, // ..............R. + 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xeb, 0x00, // ................ + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, // ..R............. + 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xe9, 0x00, // ..........1..... + 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0xf2, 0x00, // ................ + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x97, 0x00, // ..Q............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf5, 0x00, // ......Q......... + 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, // ..............P. + 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xf5, 0x00, // ................ + 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa6, 0x00, // ..........>..... + 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..........8..... + 0x10, 0x00, // .. }; -static const uint8_t fs_font_distance_field_dx9[748] = +static const uint8_t fs_font_distance_field_dx9[787] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x00, // Color0.......... - 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ...L...0........ - 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...<.......s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, // 10.1..Q........ - 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x51, // ..@...?.......?Q - 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, // ................ - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, // .....@.Q........ - 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x1f, // ..A...?......@@. - 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, // ................ - 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, // ................ - 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x00, // ................ - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x55, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, // .....U.......... - 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, // ...X.........U.. - 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, // ................ - 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, // .....U.X........ - 0x00, 0x00, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // .........U...... - 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, // ...........X.... - 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x00, 0x00, 0xff, 0xa0, 0x00, 0x00, 0xaa, 0xa0, 0x42, // ...............B - 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x80, 0x01, 0x00, 0x90, 0x91, 0x5c, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x0e, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, // ................ - 0x00, 0xf9, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, // ................ - 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x5b, // .U...........U.[ - 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x08, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x04, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, // ................ - 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, // .............U.. - 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, // .............U.. - 0x00, 0x00, 0xa1, 0x02, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, // .....U.......... - 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, // .U.......U...... - 0x00, 0x03, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, // .....U.......... - 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, // .U.............. - 0x00, 0x00, 0x80, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // .........U...... - 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ - 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, // ................ + 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, // ,.CTAB.......... + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, // ..............|. + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, // ..D...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, // ......`......... + 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..l.......s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // olor............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, // ......u_params.. + 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // ..ps_3_0.Microso + 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad + 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, // er Compiler 10.1 + 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, // ..Q..........@.. + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, // .?.......?Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, // ................ + 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xf3, 0x04, 0x35, 0x41, 0x00, 0x00, // @.Q.........5A.. + 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // .?......@@...... + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ + 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x04, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, // ................ + 0x55, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, // U.............X. + 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x01, 0x00, 0xaa, 0xa0, 0x01, 0x00, // ........U....... + 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0x55, 0x81, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, // U.X............. + 0xaa, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, // ....U........... + 0x00, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, // ......X......... + 0xe4, 0x8c, 0x01, 0x00, 0xff, 0xa0, 0x01, 0x00, 0xaa, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, // ..........B..... + 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x01, 0x80, 0x01, 0x00, 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, // ..........[..... + 0x0e, 0x80, 0x01, 0x00, 0x90, 0x90, 0x5c, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0e, 0x80, 0x00, 0x00, 0xe4, 0x8b, 0x01, 0x00, // ................ + 0x90, 0x8b, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, 0x00, // ................ + 0xf9, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, // ............U... + 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U...U....... + 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x03, 0x00, 0x55, 0xa0, 0x04, 0x00, // ....U.......U... + 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, // ........U....... + 0x55, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, // U............... + 0xe4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, // ........U....... + 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xaa, 0xa0, 0x03, 0x00, // ................ + 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // U............... + 0xff, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, // ................ + 0x00, 0x00, 0x00, // ... }; -static const uint8_t fs_font_distance_field_dx11[1055] = +static const uint8_t fs_font_distance_field_dx11[1107] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x44, // Color0.........D - 0x58, 0x42, 0x43, 0x9a, 0xd6, 0x47, 0xb1, 0x98, 0xc8, 0x0f, 0x79, 0xab, 0x0a, 0x57, 0x47, 0xee, // XBC..G....y..WG. - 0xac, 0xc0, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..............., + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH............u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, // ..s_texColor0... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x44, // r0.............D + 0x58, 0x42, 0x43, 0x94, 0x67, 0xc1, 0x07, 0x2c, 0x82, 0xd2, 0x89, 0x1d, 0x94, 0x4a, 0x17, 0x85, // XBC.g..,.....J.. + 0x81, 0x8b, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..2............, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, // ...........ISGNl 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ @@ -259,7 +334,8 @@ static const uint8_t fs_font_distance_field_dx11[1055] = 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET - 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x20, 0x03, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc8, // ...SHDR ...@.... + 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x24, 0x03, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc9, // ...SHDR$...@.... + 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ...Y...F. ...... 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, // ...Z....`......X 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, // 0...p......UU..b 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, // ...........b.... @@ -279,129 +355,168 @@ static const uint8_t fs_font_distance_field_dx11[1055] = 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ..?............. 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......6........ 0x00, 0x00, 0x00, 0x0a, 0x30, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ....0 .......... - 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ...6............ - 0x19, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0xe2, // ...A............ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, // .......V........ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ................ + 0x19, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, // ...........r.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, // ...F............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, // .......V........ + 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, // ................ 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ..."............ - 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0x72, // ...............r - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, // .......F........ - 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, // ...B.......F.... - 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x62, // ...F.......K...b - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......V........ - 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ - 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x42, // ...*.......2...B - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... - 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.....A.@... - 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ..?2..."........ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x01, // ........@.....A. - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, // @.....?....2.... - 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......A.......F - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... - 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // ....@.....?...?. - 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..?...?........8 - 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ............... - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, // ...........2..." - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, // @.......@....@@8 + 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, // ...........K..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 + 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ..... .........2 + 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, // ...B...........A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, // ........@....5A. + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, // @.....?2...".... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, // ............@... + 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x32, // .5A.@.....?....2 + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, // ...F..........." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, // ........@.....?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..?...?...?..... + 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...8 ........... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ...............2 + 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.......@... + 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // .@@8............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, // ...........8.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, // .......8.... ... - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, // ...........:.... - 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...6...r ......F - 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // .......>....... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, // ...........8.... + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // ..............: + 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, // .......6...r ... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, // ...F.......>.... + 0x00, 0x10, 0x00, // ... }; -static const uint8_t fs_font_distance_field_mtl[1413] = +static const uint8_t fs_font_distance_field_mtl[2043] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x76, 0x05, 0x00, 0x00, 0x75, 0x73, // FSH.......v...us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, // r0;. float4 v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // excoord0;.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // rOutput {. floa - 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // t4 gl_FragColor; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // {.};.fragment xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, // uffer(0)]]. , - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, // texturecube<flo - 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, // at> s_texColor [ - 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, // [texture(0)]], s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, // ampler _mtlsmp_s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, // _texColor [[samp - 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, // ler(0)]]).{. xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // t _mtl_o;. floa - 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, // t rgba_1[4];. f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // loat4 tmpvar_2 = - 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // 0;. tmpvar_2 = - 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, // s_texColor.samp - 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, // le(_mtlsmp_s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, // Color, (float3)( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _mtl_i.v_texcoor - 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, // d0.xyz));. int - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_3 = 0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, // tmpvar_3 = int(( - 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (_mtl_i.v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, // rd0.w * 4.0) + 0 - 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, // .5));. rgba_1[0 - 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, // ] = tmpvar_2.z;. - 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, // rgba_1[1] = tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // pvar_2.y;. rgba - 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // _1[2] = tmpvar_2 - 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, // .x;. rgba_1[3] - 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, // = tmpvar_2.w;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // float3 tmpvar_4 - 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // = 0;. tmpvar_4 - 0x3d, 0x20, 0x64, 0x66, 0x64, 0x78, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, // = dfdx(_mtl_i.v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, // texcoord0.xyz);. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // float3 tmpvar_ - 0x35, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 5 = 0;. tmpvar_ - 0x35, 0x20, 0x3d, 0x20, 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // 5 = dfdy(-_mtl_i - 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, // .v_texcoord0.xyz - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // );. float tmpva - 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_6 = 0;. tmpva - 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, // r_6 = (8.0 * (sq - 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, // rt(. dot (tmp - 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, // var_4, tmpvar_4) - 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, // . ) + sqrt(. - 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2c, 0x20, // dot (tmpvar_5, - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, // tmpvar_5). ))); - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, // . float edge0_7 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x20, // = 0;. edge0_7 - 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = (0.5 - tmpvar_ - 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // 6);. float tmpv - 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // ar_8 = 0;. tmpv - 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, // ar_8 = clamp ((( - 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x5d, // rgba_1[tmpvar_3] - 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, // - edge0_7) / (. - 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // (0.5 + tmpva - 0x72, 0x5f, 0x36, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // r_6). - edge0_ - 0x37, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // 7)), 0.0, 1.0);. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // float4 tmpvar_ - 0x39, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 9 = 0;. tmpvar_ - 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, // 9.xyz = _mtl_i.v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, // _color0.xyz;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, // mpvar_9.w = (_mt - 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, // l_i.v_color0.w * - 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, // (tmpvar_8 * (tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, // pvar_8 * . (3 - 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // .0 - (2.0 * tmpv - 0x61, 0x72, 0x5f, 0x38, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // ar_8)). )));. - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // _mtl_o.gl_FragCo - 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, // lor = tmpvar_9;. - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, // return _mtl_o; - 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, // .......u_params. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..........s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x07, // olor............ + 0x00, 0x00, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, // ..#pragma clang + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, // diagnostic ignor + 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x70, 0x72, // ed "-Wmissing-pr + 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, // ototypes".#pragm + 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, // a clang diagnost + 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, // ic ignored "-Wmi + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x23, // ssing-braces"..# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x3c, // etal;..template< + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, // typename T, size + 0x5f, 0x74, 0x20, 0x4e, 0x75, 0x6d, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, // _t Num>.struct s + 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x7b, 0x0a, // pvUnsafeArray.{. + 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x4e, // T elements[N + 0x75, 0x6d, 0x20, 0x3f, 0x20, 0x4e, 0x75, 0x6d, 0x20, 0x3a, 0x20, 0x31, 0x5d, 0x3b, 0x0a, 0x20, // um ? Num : 1];. + 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, // . thread T + 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, // & operator [] (s + 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, // ize_t pos) threa + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // d. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, // constexpr const + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // thread T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0a, // s) const thread. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // {. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, // turn elements[po + 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, // s];. }. . + 0x20, 0x20, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, // device T& ope + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, // rator [] (size_t + 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, // pos) device. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // {. retur + 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, // n elements[pos]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // . }. const + 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, // expr const devic + 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, // e T& operator [] + 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, 0x6f, // (size_t pos) co + 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, // nst device. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, // . return + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, // elements[pos];. + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, // }. . co + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, // nstexpr const co + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // nstant T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // s) const constan + 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // . threadgroup + 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, // T& operator [] + 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, // (size_t pos) thr + 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // eadgroup. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, // return el + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ements[pos];. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, // }. constexpr + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, // const threadgro + 0x75, 0x70, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, // up T& operator [ + 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, // ] (size_t pos) c + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // onst threadgroup + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, // . {. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, // eturn elements[p + 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // os];. }.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // ams;.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, // {. float4 bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, // x_FragData0 [[co + 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, // lor(0)]];.};..st + 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ruct xlatMtlMain + 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _in.{. float4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // v_color0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // loat4 v_texcoord + 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, // 0 [[user(locn1)] + 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, // ];.};..fragment + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, // xlatMtlMain_out + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, // xlatMtlMain(xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, // MtlMain_in in [[ + 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, // stage_in]], cons + 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, // tant _Global& _m + 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, // tl_u [[buffer(0) + 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, // ]], texturecube< + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // float> s_texColo + 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, // r [[texture(0)]] + 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // , sampler s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, // olorSampler [[sa + 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // mpler(0)]]).{. + 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, // xlatMtlMain_ou + 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t out = {};. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x73, 0x5f, // float4 _264 = s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, // texColor.sample( + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, // s_texColorSample + 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // r, in.v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, // 0.xyz);. spvU + 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, // nsafeArray<float + 0x2c, 0x20, 0x34, 0x3e, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, // , 4> _192;. _ + 0x31, 0x39, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x34, 0x2e, 0x7a, 0x3b, // 192[0] = _264.z; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x5f, // . _192[1] = _ + 0x32, 0x36, 0x34, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x5b, // 264.y;. _192[ + 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x34, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 2] = _264.x;. + 0x20, 0x5f, 0x31, 0x39, 0x32, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x34, 0x2e, // _192[3] = _264. + 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x33, // w;. float _23 + 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, // 1 = (length(fwid + 0x74, 0x68, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // th(in.v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, // 0.xyz)) * 11.313 + 0x37, 0x30, 0x38, 0x33, 0x30, 0x35, 0x33, 0x35, 0x38, 0x38, 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, // 708305358887) * + 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // _mtl_u.u_params. + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, // y;. out.bgfx_ + 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, // FragData0 = floa + 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, // t4(in.v_color0.x + 0x79, 0x7a, 0x2c, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x30, // yz, smoothstep(0 + 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2b, // .5 - _231, 0.5 + + 0x20, 0x5f, 0x32, 0x33, 0x31, 0x2c, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x5b, 0x69, 0x6e, 0x74, 0x28, // _231, _192[int( + 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // (in.v_texcoord0. + 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x5d, // w * 4.0) + 0.5)] + 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // ) * in.v_color0. + 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, // w);. return o + 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x30, 0x00, // ut;.}....0. }; extern const uint8_t* fs_font_distance_field_pssl; extern const uint32_t fs_font_distance_field_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field.sc b/3rdparty/bgfx/examples/common/font/fs_font_distance_field.sc index 3d09ee07f21..8bc3e1d94d1 100644 --- a/3rdparty/bgfx/examples/common/font/fs_font_distance_field.sc +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field.sc @@ -4,6 +4,10 @@ $input v_color0, v_texcoord0 SAMPLERCUBE(s_texColor, 0); +uniform vec4 u_params; + +#define u_distanceMultiplier u_params.y + void main() { vec4 color = textureCube(s_texColor, v_texcoord0.xyz); @@ -13,12 +17,11 @@ void main() rgba[1] = color.y; rgba[2] = color.x; rgba[3] = color.w; - float dist = rgba[index]; + float distance = rgba[index]; - float dx = length(dFdx(v_texcoord0.xyz) ); - float dy = length(dFdy(v_texcoord0.xyz) ); - float w = 16.0*0.5*(dx+dy); + float smoothing = 16.0 * length(fwidth(v_texcoord0.xyz)) / sqrt(2.0) * u_distanceMultiplier; - float alpha = smoothstep(0.5-w, 0.5+w, dist); - gl_FragColor = vec4(v_color0.xyz, v_color0.w*alpha); + float alpha = smoothstep(0.5 - smoothing, 0.5 + smoothing, distance); + vec4 sdfColor = vec4(v_color0.xyz, alpha * v_color0.w); + gl_FragColor = sdfColor; } diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow.bin.h new file mode 100644 index 00000000000..d81fa11b272 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow.bin.h @@ -0,0 +1,878 @@ +static const uint8_t fs_font_distance_field_drop_shadow_glsl[2015] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // g vec4 v_color0; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord0;.varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec4 v_texcoo + 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, // rd2;.uniform sam + 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // plerCube s_texCo + 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, // lor;.uniform vec + 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, // 4 u_params;.void + 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // main ().{. flo + 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // at rgba_1[4];. + 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, // bool tmpvar_2;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, 0x28, // tmpvar_2 = any( + 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // equal (v_texcoor + 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, // d2.xyz, vec3(0.0 + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // , 0.0, 0.0)));. + 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // if (!(tmpvar_2) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, // ) {. float rg + 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, // ba2_3[4];. ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, // c4 tmpvar_4;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // tmpvar_4 = text + 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // ureCube (s_texCo + 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, // lor, v_texcoord2 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, // .xyz);. int t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // mpvar_5;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, // var_5 = int(((v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, // texcoord2.w * 4. + 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 0) + 0.5));. + 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // rgba2_3[0] = tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, // var_4.z;. rgb + 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // a2_3[1] = tmpvar + 0x5f, 0x34, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, // _4.y;. rgba2_ + 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, // 3[2] = tmpvar_4. + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x33, // x;. rgba2_3[3 + 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x3b, 0x0a, // ] = tmpvar_4.w;. + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // vec3 tmpvar_ + 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, // 6;. tmpvar_6 + 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, // = (abs(dFdx(v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, // xcoord2.xyz)) + + 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // abs(dFdy(v_texco + 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ord2.xyz)));. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, // float tmpvar_7; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, // . tmpvar_7 = + 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, // (((. (16.0 + 0x2a, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // * sqrt(dot (tmpv + 0x61, 0x72, 0x5f, 0x36, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, // ar_6, tmpvar_6)) + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, // ). / 1.41421 + 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, // 4) * u_params.y) + 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, // * u_params.z);. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // float edge0_ + 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x20, 0x3d, // 8;. edge0_8 = + 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // (0.5 - tmpvar_7 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // );. float tmp + 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // var_9;. tmpva + 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, // r_9 = clamp (((r + 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x5d, // gba2_3[tmpvar_5] + 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, // - edge0_8) / (. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, // (0.5 + tmp + 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, // var_7). - ed + 0x67, 0x65, 0x30, 0x5f, 0x38, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, // ge0_8)), 0.0, 1. + 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // 0);. vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // var_10;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, // ar_10.xyz = v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // lor0.xyz;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, // pvar_10.w = ((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_9 * (tmpvar + 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, // _9 * . (3.0 + 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // - (2.0 * tmpvar + 0x5f, 0x39, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, // _9)). )) * v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, // color0.w);. g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, // l_FragColor = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, // pvar_10;. ret + 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // urn;. };. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_11;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // pvar_11 = textur + 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // eCube (s_texColo + 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, // r, v_texcoord0.x + 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // yz);. int tmpva + 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_12;. tmpvar_1 + 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // 2 = int(((v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, // oord0.w * 4.0) + + 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, // 0.5));. rgba_1 + 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, // [0] = tmpvar_11. + 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, // z;. rgba_1[1] = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_11.y;. + 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // rgba_1[2] = tmpv + 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // ar_11.x;. rgba_ + 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, // 1[3] = tmpvar_11 + 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // .w;. vec3 tmpva + 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_13;. tmpvar_1 + 0x33, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, // 3 = (abs(dFdx(v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, // texcoord0.xyz)) + 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // + abs(dFdy(v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // coord0.xyz)));. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, // float tmpvar_14 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, // ;. tmpvar_14 = + 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, // (((16.0 * . s + 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // qrt(dot (tmpvar_ + 0x31, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x29, 0x29, 0x0a, // 13, tmpvar_13)). + 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, // ) / 1.414214) + 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, // * u_params.y);. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, 0x3b, // float edge0_15; + 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x30, // . edge0_15 = (0 + 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x29, 0x3b, // .5 - tmpvar_14); + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . float tmpvar_ + 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, // 16;. tmpvar_16 + 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x5f, // = clamp (((rgba_ + 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x5d, 0x20, 0x2d, 0x20, 0x65, // 1[tmpvar_12] - e + 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, // dge0_15) / (. + 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // (0.5 + tmpvar_1 + 0x34, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, // 4). - edge0_15 + 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // )), 0.0, 1.0);. + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x3b, // vec4 tmpvar_17; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x2e, 0x78, 0x79, 0x7a, // . tmpvar_17.xyz + 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // = v_color0.xyz; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x2e, 0x77, 0x20, 0x3d, // . tmpvar_17.w = + 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x28, // ((tmpvar_16 * ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, // tmpvar_16 * . + 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, // (3.0 - (2.0 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, // mpvar_16)). )) + 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, // * v_color0.w);. + 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // gl_FragColor = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_17;.}... +}; +static const uint8_t fs_font_distance_field_drop_shadow_essl[2132] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec4 v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // oord0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec4 v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, // oord2;.uniform l + 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, // owp samplerCube + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // s_texColor;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // orm highp vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // _params;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // in ().{. lowp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, // loat rgba_1[4];. + 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, // bool tmpvar_2; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x6e, // . tmpvar_2 = an + 0x79, 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // y(equal (v_texco + 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, // ord2.xyz, vec3(0 + 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, // .0, 0.0, 0.0))); + 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . if (!(tmpvar_ + 0x32, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // 2)) {. lowp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x34, 0x5d, 0x3b, // loat rgba2_3[4]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, // . lowp vec4 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // mpvar_4;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, // var_4 = textureC + 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, // ube (s_texColor, + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, // v_texcoord2.xyz + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, // );. highp int + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_5;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, // mpvar_5 = int((( + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, // v_texcoord2.w * + 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 4.0) + 0.5));. + 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, // rgba2_3[0] = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // mpvar_4.z;. r + 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // gba2_3[1] = tmpv + 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // ar_4.y;. rgba + 0x32, 0x5f, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 2_3[2] = tmpvar_ + 0x34, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, // 4.x;. rgba2_3 + 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, // [3] = tmpvar_4.w + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // ;. highp vec3 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_6;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, // mpvar_6 = (abs(d + 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, // Fdx(v_texcoord2. + 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, // xyz)) + abs(dFdy + 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord2.xyz + 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, // )));. highp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // loat tmpvar_7;. + 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_7 = (( + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, // (. (16.0 * + 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // sqrt(dot (tmpvar + 0x5f, 0x36, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x29, 0x0a, // _6, tmpvar_6))). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, // / 1.414214) + 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x20, 0x2a, // * u_params.y) * + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // u_params.z);. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, // highp float ed + 0x67, 0x65, 0x30, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // ge0_8;. edge0 + 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, // _8 = (0.5 - tmpv + 0x61, 0x72, 0x5f, 0x37, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // ar_7);. lowp + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, // float tmpvar_9;. + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, // tmpvar_9 = c + 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, // lamp (((rgba2_3[ + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, // tmpvar_5] - edge + 0x30, 0x5f, 0x38, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, // 0_8) / (. ( + 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, 0x0a, // 0.5 + tmpvar_7). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x29, 0x29, // - edge0_8)) + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // , 0.0, 1.0);. + 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // lowp vec4 tmpva + 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // r_10;. tmpvar + 0x5f, 0x31, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // _10.xyz = v_colo + 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // r0.xyz;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // ar_10.w = ((tmpv + 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // ar_9 * (tmpvar_9 + 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, // * . (3.0 - + 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // (2.0 * tmpvar_9 + 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, // )). )) * v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, // lor0.w);. gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // ar_10;. retur + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, // n;. };. lowp v + 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, // ec4 tmpvar_11;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, // tmpvar_11 = tex + 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // tureCube (s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // olor, v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // 0.xyz);. highp + 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, // int tmpvar_12;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, // tmpvar_12 = int + 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, // (((v_texcoord0.w + 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, // * 4.0) + 0.5)); + 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, // . rgba_1[0] = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, // mpvar_11.z;. rg + 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ba_1[1] = tmpvar + 0x5f, 0x31, 0x31, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, // _11.y;. rgba_1[ + 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x78, // 2] = tmpvar_11.x + 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, // ;. rgba_1[3] = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x68, // tmpvar_11.w;. h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec3 tmpvar + 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, // _13;. tmpvar_13 + 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, // = (abs(dFdx(v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, // excoord0.xyz)) + + 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // abs(dFdy(v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // oord0.xyz)));. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp float tmpv + 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_14;. tmpvar_ + 0x31, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, // 14 = (((16.0 * . + 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, // sqrt(dot (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // pvar_13, tmpvar_ + 0x31, 0x33, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, // 13)). ) / 1.414 + 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // 214) * u_params. + 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // y);. highp floa + 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, // t edge0_15;. ed + 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, // ge0_15 = (0.5 - + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, // tmpvar_14);. lo + 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // wp float tmpvar_ + 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, // 16;. tmpvar_16 + 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x5f, // = clamp (((rgba_ + 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x5d, 0x20, 0x2d, 0x20, 0x65, // 1[tmpvar_12] - e + 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, // dge0_15) / (. + 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // (0.5 + tmpvar_1 + 0x34, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x35, // 4). - edge0_15 + 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // )), 0.0, 1.0);. + 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // lowp vec4 tmpva + 0x72, 0x5f, 0x31, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_17;. tmpvar_1 + 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // 7.xyz = v_color0 + 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // .xyz;. tmpvar_1 + 0x37, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // 7.w = ((tmpvar_1 + 0x36, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x2a, // 6 * (tmpvar_16 * + 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, // . (3.0 - (2. + 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x29, 0x29, 0x0a, // 0 * tmpvar_16)). + 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // )) * v_color0. + 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // w);. gl_FragCol + 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x3b, 0x0a, // or = tmpvar_17;. + 0x7d, 0x0a, 0x0a, 0x00, // }... +}; +static const uint8_t fs_font_distance_field_drop_shadow_spv[3346] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH..gz........u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, // ..s_texColor0... + 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0xd4, 0x0c, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ............#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ................ + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL + 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0xed, 0x00, // ......main...... + 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf9, 0x00, // ................ + 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, // ................ + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. + 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......-...s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... + 0x07, 0x00, 0x30, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..0...s_texColor + 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x92, 0x00, // Texture......... + 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, // ..UniformBlock.. + 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x94, 0x00, // params.......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xed, 0x00, 0x00, 0x00, 0x67, 0x6c, // ..............gl + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // _FragCoord...... + 0x05, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // ......v_color0.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ..........v_colo + 0x72, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x76, 0x5f, // r1............v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, 0xf9, 0x00, // texcoord0....... + 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, // ..v_texcoord1... + 0x05, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ......v_texcoord + 0x32, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 2.........bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, // ragData0..G...-. + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, // ..".......G...-. + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, // ..!.......G...0. + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, // ..".......G...0. + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x92, 0x00, // ..!.......H..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ......#.......G. + 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, // ..........G..... + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, // ..".......G..... + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xed, 0x00, // ..!.......G..... + 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf0, 0x00, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf3, 0x00, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf6, 0x00, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf9, 0x00, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xfc, 0x00, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0f, 0x01, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. + 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..,...........;. + 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // ..,...-....... . + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ../...........;. + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ../...0......... + 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..3... .......+. + 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..3...4.......+. + 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..3...8......... + 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..<.......+..... + 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, // ..O.......,..... + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..R...O...O...O. + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ......g... ..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......k..... + 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, // .@+.......m..... + 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x04, 0x00, // .?+...g...p..... + 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x70, 0x00, // ......q.......p. + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x71, 0x00, // .. ...r.......q. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...g...t..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, // ..+...g...x..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...3...|..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+...g...}..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, // ..+...3......... + 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..............+. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x36, 0x00, // ............5A6. + 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x72, 0x00, // ..........;...r. + 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x72, 0x00, // ..3.......;...r. + 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..<.......=..... + 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ......-...=..... + 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..1...0...=..... + 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... + 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... + 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xb3, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x42, 0x01, // ..........}...B. + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x42, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ......B...O..... + 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, // ..E............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0x14, 0x00, // ................ + 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x9a, 0x00, // ......E...R..... + 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xa8, 0x00, // ......G......... + 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0xf7, 0x00, // ......H...G..... + 0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x48, 0x01, // ..............H. + 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x49, 0x01, // ..I...........I. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0xfd, 0x00, // ..O.......M..... + 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x31, 0x00, // ..V...<.......1. + 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc9, 0x01, // ......W......... + 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ......M...Q..... + 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ..P............. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x6b, 0x00, // ......Q...P...k. + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x51, 0x01, // ..........R...Q. + 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x53, 0x01, // ..m...n...3...S. + 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x01, // ..R...Q.......U. + 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, // ..........A..... + 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..V...3...8...>. + 0x03, 0x00, 0x56, 0x01, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..V...U...Q..... + 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..X...........A. + 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x34, 0x00, // ......Y...3...4. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x59, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x51, 0x00, // ..>...Y...X...Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, // ......[......... + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x33, 0x01, // ..A...........3. + 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x5b, 0x01, // ..|...>.......[. + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, 0xc9, 0x01, // ..Q.......^..... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x5f, 0x01, // ......A......._. + 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5f, 0x01, // ..3.......>..._. + 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x61, 0x01, // ..^...A.......a. + 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..3...S...=..... + 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..b...a...O..... + 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, // ..d............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, // ..e...d......... + 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x65, 0x01, // ..f.......B...e. + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x66, 0x01, // ..........h...f. + 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x95, 0x00, 0x00, 0x00, 0x69, 0x01, // ......A.......i. + 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......8...x...=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x85, 0x00, // ......j...i..... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x6a, 0x01, // ......k...h...j. + 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x94, 0x00, // ..A.......l..... + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..8...t...=..... + 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // ..m...l......... + 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x83, 0x00, // ..n...k...m..... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x01, // ......p...m...n. + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x6d, 0x00, // ..........r...m. + 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x74, 0x01, // ..n...........t. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x72, 0x01, // ......1...p...r. + 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x01, // ..b...Q.......y. + 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x7a, 0x01, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x51, 0x00, // ..z...t...y...Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, // ......{......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0xf1, 0x00, // ..Q.......|..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x01, // ......Q.......}. + 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, // ..........P..... + 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x7d, 0x01, // ..~...{...|...}. + 0x00, 0x00, 0x7a, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb3, 0x01, 0x00, 0x00, 0xf8, 0x00, // ..z............. + 0x02, 0x00, 0x80, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x83, 0x01, // ......O......... + 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xd0, 0x01, // ......V...<..... + 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, // ..1.......W..... + 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x86, 0x01, // ................ + 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x88, 0x01, // ..k............. + 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x33, 0x00, // ......m...n...3. + 0x00, 0x00, 0x89, 0x01, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. + 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x38, 0x00, // ..........<...8. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x51, 0x00, // ..>...........Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x8f, 0x01, 0x00, 0x00, 0x3c, 0x01, // ..A...........<. + 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x8f, 0x01, 0x00, 0x00, 0x8e, 0x01, // ..4...>......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, 0xd2, 0x01, // ..Q............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x92, 0x01, // ......A......... + 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x92, 0x01, // ..<...|...>..... + 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x94, 0x01, // ......Q......... + 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, // ..........A..... + 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......<.......>. + 0x03, 0x00, 0x95, 0x01, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, // ..........A..... + 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00, 0x3d, 0x00, // ......<.......=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x4f, 0x00, // ..............O. + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf7, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, // ................ + 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0x0c, 0x00, // ................ + 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, // ..............B. + 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9e, 0x01, // ................ + 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x95, 0x00, // ..........A..... + 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x78, 0x00, // ..........8...x. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x9f, 0x01, // ..=............. + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x9e, 0x01, // ................ + 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa3, 0x01, // ................ + 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, // ..m............. + 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x0c, 0x00, // ......m......... + 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, // ..............1. + 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0xa7, 0x01, // ................ + 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xae, 0x01, // ......Q......... + 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xaf, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0xae, 0x01, // ..P............. + 0x00, 0x00, 0xaf, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0xf9, 0x00, // ................ + 0x02, 0x00, 0xb3, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb3, 0x01, 0x00, 0x00, 0xf5, 0x00, // ................ + 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x49, 0x01, // ..........~...I. + 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0f, 0x01, // ..........>..... + 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..........8..... + 0x10, 0x00, // .. +}; +static const uint8_t fs_font_distance_field_drop_shadow_dx9[1335] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, // ................ + 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, // ,.CTAB.......... + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, // ..............|. + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, // ..D...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, // ......`......... + 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..l.......s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // olor............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, // ......u_params.. + 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // ..ps_3_0.Microso + 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad + 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, // er Compiler 10.1 + 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ..Q............. + 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, // ........@.Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, // .....?.......@.. + 0x00, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xf3, 0x04, 0x35, 0x41, 0x00, 0x00, // .?Q.........5A.. + 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // .?......@@...... + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ + 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x02, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // ..........X..... + 0x07, 0x80, 0x02, 0x00, 0xe4, 0x9c, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x08, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x29, 0x00, // ..............). + 0x04, 0x02, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, // ........U....... + 0x0f, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U.*......... + 0x02, 0x80, 0x02, 0x00, 0xff, 0x90, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x13, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // ........U.X..... + 0x08, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x02, 0x00, 0x00, 0xa0, 0x58, 0x00, // ........U.....X. + 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x00, 0x00, // ........U...U... + 0xff, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // ............U... + 0xaa, 0x81, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, // ................ + 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, // U...........U... + 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x8c, 0x02, 0x00, // ..X............. + 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x00, // ....U.B......... + 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x02, 0x00, // ................ + 0xc6, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, // ......[......... + 0xe4, 0x90, 0x5c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x02, 0x00, // ................ + 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x8b, 0x02, 0x00, 0xe4, 0x8b, 0x08, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x07, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U........... + 0xaa, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x03, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ........U....... + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x55, 0xa0, 0x02, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x12, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... + 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x55, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U...U....... + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0xaa, 0xa0, 0x03, 0x00, 0xff, 0xa0, 0x05, 0x00, // ....U........... + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0xff, 0x90, 0x01, 0x00, // ........U....... + 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x2b, 0x00, 0x00, 0x00, 0x29, 0x00, // ..........+...). + 0x03, 0x02, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x04, 0x00, // ........U.*..... + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, // ................ + 0xff, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, // ..............X. + 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x02, 0x00, // ........U...U... + 0x00, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, // ..X............. + 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // U............... + 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ....U........... + 0xaa, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, // ................ + 0x00, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, // ......X......... + 0xe4, 0x8c, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, // ........U.B..... + 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x01, 0x80, 0x01, 0x00, 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, // ..........[..... + 0x0e, 0x80, 0x01, 0x00, 0x90, 0x90, 0x5c, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0e, 0x80, 0x00, 0x00, 0xe4, 0x8b, 0x01, 0x00, // ................ + 0x90, 0x8b, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, 0x00, // ................ + 0xf9, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, // ............U... + 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U...U....... + 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x03, 0x00, 0x55, 0xa0, 0x04, 0x00, // ....U.......U... + 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, // ........U....... + 0x55, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, // U............... + 0xe4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xaa, 0xa0, 0x03, 0x00, // ................ + 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // ............U... + 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0xff, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x2b, 0x00, // ..............+. + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... +}; +static const uint8_t fs_font_distance_field_drop_shadow_dx11[2043] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH..gz........u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, // ..s_texColor0... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x07, 0x00, 0x00, 0x44, // r0.............D + 0x58, 0x42, 0x43, 0x1a, 0xc6, 0x6b, 0xec, 0xf0, 0x1b, 0x11, 0x22, 0xfe, 0x17, 0x53, 0x48, 0x88, // XBC..k...."..SH. + 0xaa, 0xde, 0xb5, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..............., + 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0xb4, // ...........ISGN. + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, // ...........SV_PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, // SITION.COLOR.TEX + 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, // COORD..OSGN,.... + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....... ........ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, // ...............S + 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x84, // V_TARGET...SHDR. + 0x06, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, // ...@.......Y...F + 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, // . .........Z.... + 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, // `......X0...p... + 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, // ...UU..b........ + 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, // ...b...........b + 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, // ...........e.... + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x69, // ......h.......i + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, // ...............i + 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, // ................ + 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, // ...r.......F.... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....@........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......<........ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...<...........* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, // ................ + 0x00, 0x00, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...........E.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, // .......F.......F + 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ~.......`......2 + 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x05, // ...........:.... + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.....@.@... + 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, // ..?............. + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // .......*.......6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // ....0 .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, // ....0 .........: + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......6........ + 0x00, 0x00, 0x00, 0x0a, 0x30, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, // ....0 .......... + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ................ + 0x19, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, // ...........r.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, // ...F............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, // .......V........ + 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, // ...........K..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 + 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..... .........8 + 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x2a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ...*. .........2 + 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, // ...B...........A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, // ........@....5A. + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, // @.....?2...".... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, // ............@... + 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x32, // .5A.@.....?....2 + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, // ...F..........." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, // ........@.....?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..?...?...?..... + 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...8 ........... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ...............2 + 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.......@... + 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // .@@8............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, // ...........8.... + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // ..............: + 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, // .......6...r ... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, // ...F.......>.... + 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...E...........F + 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F~....... + 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x01, // `......2........ + 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, // ...:........@... + 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, // ..@.@.....?..... + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ....0 .........* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, // .......6....0 .. + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, // ....0 .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, // .......6....0 .. + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // .......:.......6 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x30, 0x20, 0x04, 0x01, // ............0 .. + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x03, // ...r.......F.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x80, 0x81, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... + 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...K..."........ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, // .......8...".... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, // ............. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x00, // .......2...B.... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......A........ + 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, // @....5A.@.....?2 + 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@....5A.@... + 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, // ..?....2........ + 0x0a, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, // ...A.......F.... + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // ......."........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // @.....?...?...?. + 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, // ..?........8 ... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, // .......2...".... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, // ............@... + 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, // ....@....@@8.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......8........ + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...8.... ....... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, // .......:.......6 + 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, // ...r ......F.... + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // ...>....... +}; +static const uint8_t fs_font_distance_field_drop_shadow_mtl[2801] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, // .......u_params. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..........s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x0a, // olor..........{. + 0x00, 0x00, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, // ..#pragma clang + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, // diagnostic ignor + 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x70, 0x72, // ed "-Wmissing-pr + 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, // ototypes".#pragm + 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, // a clang diagnost + 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, // ic ignored "-Wmi + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x23, // ssing-braces"..# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x3c, // etal;..template< + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, // typename T, size + 0x5f, 0x74, 0x20, 0x4e, 0x75, 0x6d, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, // _t Num>.struct s + 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x7b, 0x0a, // pvUnsafeArray.{. + 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x4e, // T elements[N + 0x75, 0x6d, 0x20, 0x3f, 0x20, 0x4e, 0x75, 0x6d, 0x20, 0x3a, 0x20, 0x31, 0x5d, 0x3b, 0x0a, 0x20, // um ? Num : 1];. + 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, // . thread T + 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, // & operator [] (s + 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, // ize_t pos) threa + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // d. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, // constexpr const + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // thread T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0a, // s) const thread. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // {. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, // turn elements[po + 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, // s];. }. . + 0x20, 0x20, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, // device T& ope + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, // rator [] (size_t + 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, // pos) device. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // {. retur + 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, // n elements[pos]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // . }. const + 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, // expr const devic + 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, // e T& operator [] + 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, 0x6f, // (size_t pos) co + 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, // nst device. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, // . return + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, // elements[pos];. + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, // }. . co + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, // nstexpr const co + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // nstant T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // s) const constan + 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // . threadgroup + 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, // T& operator [] + 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, // (size_t pos) thr + 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // eadgroup. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, // return el + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ements[pos];. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, // }. constexpr + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, // const threadgro + 0x75, 0x70, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, // up T& operator [ + 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, // ] (size_t pos) c + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // onst threadgroup + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, // . {. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, // eturn elements[p + 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // os];. }.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // ams;.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, // {. float4 bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, // x_FragData0 [[co + 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, // lor(0)]];.};..st + 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ruct xlatMtlMain + 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _in.{. float4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // v_color0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // loat4 v_texcoord + 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x32, 0x29, 0x5d, // 0 [[user(locn2)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // ];. float4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // texcoord2 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, // (locn4)]];.};..f + 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ragment xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ain_out xlatMtlM + 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // ain(xlatMtlMain_ + 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // in in [[stage_in + 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, // ]], constant _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // obal& _mtl_u [[b + 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, // uffer(0)]], text + 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, // urecube<float> s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, // _texColor [[text + 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // ure(0)]], sample + 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, // r s_texColorSamp + 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, // ler [[sampler(0) + 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // ]]).{. xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, // lMain_out out = + 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, // {};. float4 _ + 0x34, 0x39, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, // 490;. do. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x61, // {. if (!a + 0x6e, 0x79, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ny(in.v_texcoord + 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, // 2.xyz == float3( + 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, // 0.0))). { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // . flo + 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // at4 _457 = s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, // Color.sample(s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, // exColorSampler, + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, // in.v_texcoord2.x + 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // yz);. + 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x3c, // spvUnsafeArray< + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x34, 0x3e, 0x20, 0x5f, 0x33, 0x30, 0x37, 0x3b, 0x0a, // float, 4> _307;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x30, 0x37, // _307 + 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // [0] = _457.z;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x30, 0x37, 0x5b, 0x31, // _307[1 + 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // ] = _457.y;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x30, 0x37, 0x5b, 0x32, 0x5d, 0x20, // _307[2] + 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = _457.x;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x30, 0x37, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, // _307[3] = + 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _457.w;. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x36, 0x20, 0x3d, // float _366 = + 0x20, 0x28, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, // ((length(fwidth + 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, // (in.v_texcoord2. + 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, 0x37, 0x30, // xyz)) * 11.31370 + 0x38, 0x33, 0x30, 0x35, 0x33, 0x35, 0x38, 0x38, 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, // 8305358887) * _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, // tl_u.u_params.y) + 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // * _mtl_u.u_para + 0x6d, 0x73, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ms.z;. + 0x20, 0x20, 0x5f, 0x34, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, // _490 = float4( + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, // in.v_color0.xyz, + 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, // smoothstep(0.5 + 0x2d, 0x20, 0x5f, 0x33, 0x36, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x33, // - _366, 0.5 + _3 + 0x36, 0x36, 0x2c, 0x20, 0x5f, 0x33, 0x30, 0x37, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x69, 0x6e, // 66, _307[int((in + 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, // .v_texcoord2.w * + 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x5d, 0x29, 0x20, 0x2a, // 4.0) + 0.5)]) * + 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, // in.v_color0.w); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, // . bre + 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, // ak;. }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x36, // float4 _46 + 0x36, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // 6 = s_texColor.s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ample(s_texColor + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, // Sampler, in.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord0.xyz);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, // spvUnsafeA + 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x34, 0x3e, 0x20, 0x5f, // rray<float, 4> _ + 0x33, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x31, // 316;. _31 + 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x36, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, // 6[0] = _466.z;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x31, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x3d, // _316[1] = + 0x20, 0x5f, 0x34, 0x36, 0x36, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _466.y;. + 0x20, 0x5f, 0x33, 0x31, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x36, 0x2e, // _316[2] = _466. + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x31, 0x36, 0x5b, // x;. _316[ + 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x36, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 3] = _466.w;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x31, 0x37, 0x20, // float _417 + 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, // = (length(fwidth + 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // (in.v_texcoord0. + 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, 0x37, 0x30, // xyz)) * 11.31370 + 0x38, 0x33, 0x30, 0x35, 0x33, 0x35, 0x38, 0x38, 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, // 8305358887) * _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x3b, // tl_u.u_params.y; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x39, 0x30, 0x20, 0x3d, 0x20, // . _490 = + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // float4(in.v_colo + 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, // r0.xyz, smoothst + 0x65, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x34, 0x31, 0x37, 0x2c, 0x20, 0x30, // ep(0.5 - _417, 0 + 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x34, 0x31, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x31, 0x36, 0x5b, // .5 + _417, _316[ + 0x69, 0x6e, 0x74, 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // int((in.v_texcoo + 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, // rd0.w * 4.0) + 0 + 0x2e, 0x35, 0x29, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // .5)]) * in.v_col + 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // or0.w);. + 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, // break;. } whi + 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // le(false);. o + 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ut.bgfx_FragData + 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x39, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // 0 = _490;. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x30, // turn out;.}....0 + 0x00, // . +}; +extern const uint8_t* fs_font_distance_field_drop_shadow_pssl; +extern const uint32_t fs_font_distance_field_drop_shadow_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow.sc b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow.sc new file mode 100644 index 00000000000..9f6ceca05c7 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow.sc @@ -0,0 +1,49 @@ +$input v_color0, v_color1, v_texcoord0, v_texcoord1, v_texcoord2 + +#include "../../common/common.sh" + +SAMPLERCUBE(s_texColor, 0); + +uniform vec4 u_params; + +#define u_distanceMultiplier u_params.y +#define u_dropShadowSoftener u_params.z + +void main() +{ + if (!any(equal(v_texcoord2.xyz, vec3(0.0, 0.0, 0.0)))) + { + vec4 shadowTexCoord = v_texcoord2; + vec4 shadowDistanceColor = textureCube(s_texColor, shadowTexCoord.xyz); + int index2 = int(shadowTexCoord.w*4.0 + 0.5); + float rgba2[4]; + rgba2[0] = shadowDistanceColor.z; + rgba2[1] = shadowDistanceColor.y; + rgba2[2] = shadowDistanceColor.x; + rgba2[3] = shadowDistanceColor.w; + float shadowDistance = rgba2[index2]; + + float shadowSmoothing = 16.0 * length(fwidth(shadowTexCoord.xyz)) / sqrt(2.0) * u_distanceMultiplier * u_dropShadowSoftener; + + float shadowAlpha = smoothstep(0.5 - shadowSmoothing, 0.5 + shadowSmoothing, shadowDistance); + vec4 shadowColor = vec4(v_color0.xyz, shadowAlpha * v_color0.w); + gl_FragColor = shadowColor; + return; + } + + vec4 color = textureCube(s_texColor, v_texcoord0.xyz); + + int index = int(v_texcoord0.w*4.0 + 0.5); + float rgba[4]; + rgba[0] = color.z; + rgba[1] = color.y; + rgba[2] = color.x; + rgba[3] = color.w; + float distance = rgba[index]; + + float smoothing = 16.0 * length(fwidth(v_texcoord0.xyz)) / sqrt(2.0) * u_distanceMultiplier; + + float border = smoothstep(0.5 - smoothing, 0.5 + smoothing, distance); + vec4 sdfColor = vec4(v_color0.xyz, border * v_color0.w); + gl_FragColor = sdfColor; +} diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow_image.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow_image.bin.h new file mode 100644 index 00000000000..2caf6ec9568 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow_image.bin.h @@ -0,0 +1,977 @@ +static const uint8_t fs_font_distance_field_drop_shadow_image_glsl[2327] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x08, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // g vec4 v_color0; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord0;.varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec4 v_texcoo + 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // rd1;.varying vec + 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, // 4 v_texcoord2;.u + 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, // niform samplerCu + 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, // be s_texColor;.u + 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // niform vec4 u_pa + 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // rams;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, // ().{. float rgb + 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, // a_1[4];. bool t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_2;. tmpva + 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, // r_2 = any(equal + 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord2.xyz + 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // , vec3(0.0, 0.0, + 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, // 0.0)));. if (! + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, // (tmpvar_2)) {. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, // float rgba2_3[ + 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // 4];. vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // var_4;. tmpva + 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, // r_4 = textureCub + 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, // e (s_texColor, v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, // _texcoord2.xyz); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . int tmpvar_ + 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, // 5;. tmpvar_5 + 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // = int(((v_texcoo + 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, // rd2.w * 4.0) + 0 + 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, // .5));. rgba2_ + 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, // 3[0] = tmpvar_4. + 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x31, // z;. rgba2_3[1 + 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x79, 0x3b, 0x0a, // ] = tmpvar_4.y;. + 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x3d, // rgba2_3[2] = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, // tmpvar_4.x;. + 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, // rgba2_3[3] = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, // pvar_4.w;. ve + 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, // c3 tmpvar_6;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, // tmpvar_6 = (abs + 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // (dFdx(v_texcoord + 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, // 2.xyz)) + abs(dF + 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, // dy(v_texcoord2.x + 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // yz)));. float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_7;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, // mpvar_7 = (((. + 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x73, 0x71, 0x72, 0x74, // (16.0 * sqrt + 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2c, 0x20, // (dot (tmpvar_6, + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_6))). + 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, // / 1.414214) * u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, // _params.y) * u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // arams.z);. fl + 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, // oat edge0_8;. + 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // edge0_8 = (0.5 + 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // - tmpvar_7);. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, // float tmpvar_9; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, // . tmpvar_9 = + 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, // clamp (((rgba2_3 + 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, // [tmpvar_5] - edg + 0x65, 0x30, 0x5f, 0x38, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // e0_8) / (. + 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, // (0.5 + tmpvar_7) + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x29, // . - edge0_8) + 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, // ), 0.0, 1.0);. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, // vec4 tmpvar_10 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, // ;. tmpvar_10. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, // xyz = v_color0.x + 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // yz;. tmpvar_1 + 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // 0.w = ((tmpvar_9 + 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x0a, // * (tmpvar_9 * . + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, // (3.0 - (2. + 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x29, 0x29, 0x0a, 0x20, // 0 * tmpvar_9)). + 0x20, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // )) * v_color0 + 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // .w);. gl_Frag + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // Color = tmpvar_1 + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, // 0;. return;. + 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x6e, 0x79, 0x28, 0x65, 0x71, // };. if (any(eq + 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // ual (v_texcoord0 + 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, // .xyz, vec3(0.0, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, // 0.0, 0.0)))) {. + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // vec4 tmpvar_1 + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, // 1;. tmpvar_11 + 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, // = textureCube ( + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, // s_texColor, v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord1.xyz);. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // vec4 tmpvar_12 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, // ;. tmpvar_12. + 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, // xyz = tmpvar_11. + 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // xyz;. tmpvar_ + 0x31, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // 12.w = (tmpvar_1 + 0x31, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, // 1.w * v_color0.w + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // );. gl_FragCo + 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, // lor = tmpvar_12; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, // . return;. } + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ;. vec4 tmpvar_ + 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, // 13;. tmpvar_13 + 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, // = textureCube (s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // _texColor, v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, // coord0.xyz);. i + 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, // nt tmpvar_14;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, // tmpvar_14 = int( + 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, // ((v_texcoord0.w + 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, // * 4.0) + 0.5));. + 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, // rgba_1[0] = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, // pvar_13.z;. rgb + 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // a_1[1] = tmpvar_ + 0x31, 0x33, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, // 13.y;. rgba_1[2 + 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x78, 0x3b, // ] = tmpvar_13.x; + 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, // . rgba_1[3] = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, // mpvar_13.w;. ve + 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, // c3 tmpvar_15;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, // tmpvar_15 = (abs + 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // (dFdx(v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, // 0.xyz)) + abs(dF + 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, // dy(v_texcoord0.x + 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // yz)));. float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // mpvar_16;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, // ar_16 = (((16.0 + 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, // * . sqrt(dot + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_15, tmpv + 0x61, 0x72, 0x5f, 0x31, 0x35, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, // ar_15)). ) / 1. + 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // 414214) * u_para + 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // ms.y);. float e + 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // dge0_17;. edge0 + 0x5f, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, // _17 = (0.5 - tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // var_16);. float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_18;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, // pvar_18 = clamp + 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // (((rgba_1[tmpvar + 0x5f, 0x31, 0x34, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x37, 0x29, // _14] - edge0_17) + 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, // / (. (0.5 + + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, // tmpvar_16). - + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x37, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // edge0_17)), 0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // 1.0);. vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // pvar_19;. tmpva + 0x72, 0x5f, 0x31, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // r_19.xyz = v_col + 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // or0.xyz;. tmpva + 0x72, 0x5f, 0x31, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_19.w = ((tmpva + 0x72, 0x5f, 0x31, 0x38, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_18 * (tmpvar_1 + 0x38, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, // 8 * . (3.0 - + 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, // (2.0 * tmpvar_18 + 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // )). )) * v_colo + 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // r0.w);. gl_Frag + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // Color = tmpvar_1 + 0x39, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 9;.}... +}; +static const uint8_t fs_font_distance_field_drop_shadow_image_essl[2460] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x09, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ......a...varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec4 v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // oord0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec4 v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // oord1;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec4 v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, // oord2;.uniform l + 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, // owp samplerCube + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // s_texColor;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // orm highp vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // _params;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // in ().{. lowp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, // loat rgba_1[4];. + 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, // bool tmpvar_2; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x6e, // . tmpvar_2 = an + 0x79, 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // y(equal (v_texco + 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, // ord2.xyz, vec3(0 + 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, // .0, 0.0, 0.0))); + 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . if (!(tmpvar_ + 0x32, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // 2)) {. lowp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x34, 0x5d, 0x3b, // loat rgba2_3[4]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, // . lowp vec4 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // mpvar_4;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, // var_4 = textureC + 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, // ube (s_texColor, + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, // v_texcoord2.xyz + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, // );. highp int + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_5;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, // mpvar_5 = int((( + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, // v_texcoord2.w * + 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 4.0) + 0.5));. + 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, // rgba2_3[0] = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // mpvar_4.z;. r + 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // gba2_3[1] = tmpv + 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // ar_4.y;. rgba + 0x32, 0x5f, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 2_3[2] = tmpvar_ + 0x34, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, // 4.x;. rgba2_3 + 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, // [3] = tmpvar_4.w + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // ;. highp vec3 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_6;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, // mpvar_6 = (abs(d + 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, // Fdx(v_texcoord2. + 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, // xyz)) + abs(dFdy + 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord2.xyz + 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, // )));. highp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // loat tmpvar_7;. + 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_7 = (( + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, // (. (16.0 * + 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // sqrt(dot (tmpvar + 0x5f, 0x36, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x29, 0x0a, // _6, tmpvar_6))). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, // / 1.414214) + 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x20, 0x2a, // * u_params.y) * + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // u_params.z);. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, // highp float ed + 0x67, 0x65, 0x30, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // ge0_8;. edge0 + 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, // _8 = (0.5 - tmpv + 0x61, 0x72, 0x5f, 0x37, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // ar_7);. lowp + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, // float tmpvar_9;. + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, // tmpvar_9 = c + 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x33, 0x5b, // lamp (((rgba2_3[ + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, // tmpvar_5] - edge + 0x30, 0x5f, 0x38, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, // 0_8) / (. ( + 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, 0x0a, // 0.5 + tmpvar_7). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x29, 0x29, // - edge0_8)) + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // , 0.0, 1.0);. + 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // lowp vec4 tmpva + 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // r_10;. tmpvar + 0x5f, 0x31, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // _10.xyz = v_colo + 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // r0.xyz;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // ar_10.w = ((tmpv + 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // ar_9 * (tmpvar_9 + 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, // * . (3.0 - + 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // (2.0 * tmpvar_9 + 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, // )). )) * v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, // lor0.w);. gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // ar_10;. retur + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x6e, // n;. };. if (an + 0x79, 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // y(equal (v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, // ord0.xyz, vec3(0 + 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, // .0, 0.0, 0.0)))) + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // {. lowp vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_11;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // tmpvar_11 = text + 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // ureCube (s_texCo + 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // lor, v_texcoord1 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // .xyz);. lowp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, // vec4 tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x78, 0x79, // tmpvar_12.xy + 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x78, 0x79, // z = tmpvar_11.xy + 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // z;. tmpvar_12 + 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, // .w = (tmpvar_11. + 0x77, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, // w * v_color0.w); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // . gl_FragColo + 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, // r = tmpvar_12;. + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // return;. };. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec4 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_13;. tmpvar_ + 0x31, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, // 13 = textureCube + 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, // texcoord0.xyz);. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp int tmpv + 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_14;. tmpvar_ + 0x31, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // 14 = int(((v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, // coord0.w * 4.0) + 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // + 0.5));. rgba_ + 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, // 1[0] = tmpvar_13 + 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, // .z;. rgba_1[1] + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x79, 0x3b, 0x0a, 0x20, // = tmpvar_13.y;. + 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // rgba_1[2] = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // var_13.x;. rgba + 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // _1[3] = tmpvar_1 + 0x33, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // 3.w;. highp vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, // 3 tmpvar_15;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, // mpvar_15 = (abs( + 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // dFdx(v_texcoord0 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, // .xyz)) + abs(dFd + 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, // y(v_texcoord0.xy + 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, // z)));. highp fl + 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x3b, 0x0a, 0x20, // oat tmpvar_16;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, // tmpvar_16 = ((( + 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, // 16.0 * . sqrt + 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2c, // (dot (tmpvar_15, + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, // tmpvar_15)). ) + 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, // / 1.414214) * u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, // _params.y);. hi + 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // ghp float edge0_ + 0x31, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x37, 0x20, 0x3d, // 17;. edge0_17 = + 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // (0.5 - tmpvar_1 + 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // 6);. lowp float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_18;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, // pvar_18 = clamp + 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // (((rgba_1[tmpvar + 0x5f, 0x31, 0x34, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x37, 0x29, // _14] - edge0_17) + 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, // / (. (0.5 + + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, // tmpvar_16). - + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x37, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // edge0_17)), 0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // 1.0);. lowp ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x3b, 0x0a, 0x20, 0x20, // c4 tmpvar_19;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_19.xyz = + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // v_color0.xyz;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_19.w = (( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, // tmpvar_18 * (tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, // var_18 * . (3 + 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // .0 - (2.0 * tmpv + 0x61, 0x72, 0x5f, 0x31, 0x38, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, // ar_18)). )) * v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // _color0.w);. gl + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _FragColor = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // var_19;.}... +}; +static const uint8_t fs_font_distance_field_drop_shadow_image_spv[3710] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH..gz........u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, // ..s_texColor0... + 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0x40, 0x0e, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ......@.....#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ......4......... + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL + 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, // ......main...... + 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x14, 0x01, // ................ + 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, // ......*......... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, // ................ + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. + 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......-...s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... + 0x07, 0x00, 0x30, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..0...s_texColor + 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x92, 0x00, // Texture......... + 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, // ..UniformBlock.. + 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x94, 0x00, // params.......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x08, 0x01, 0x00, 0x00, 0x67, 0x6c, // ..............gl + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // _FragCoord...... + 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // ......v_color0.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ..........v_colo + 0x72, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x11, 0x01, 0x00, 0x00, 0x76, 0x5f, // r1............v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x01, // texcoord0....... + 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, // ..v_texcoord1... + 0x05, 0x00, 0x17, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ......v_texcoord + 0x32, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 2.....*...bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, // ragData0..G...-. + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, // ..".......G...-. + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, // ..!.......G...0. + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, // ..".......G...0. + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x92, 0x00, // ..!.......H..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ......#.......G. + 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, // ..........G..... + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, // ..".......G..... + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, 0x01, // ..!.......G..... + 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0b, 0x01, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x01, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x11, 0x01, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x01, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x01, // ..........G..... + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2a, 0x01, // ..........G...*. + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. + 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..,...........;. + 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // ..,...-....... . + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ../...........;. + 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ../...0......... + 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..3... .......+. + 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..3...4.......+. + 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..3...8......... + 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..<.......+..... + 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, // ..O.......,..... + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..R...O...O...O. + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ......g... ..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......k..... + 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, // .@+.......m..... + 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x04, 0x00, // .?+...g...p..... + 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x70, 0x00, // ......q.......p. + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x71, 0x00, // .. ...r.......q. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...g...t..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, // ..+...g...x..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...3...|..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+...g...}..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, // ..+...3......... + 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..)...........;. + 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..)...*.......+. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x36, 0x00, // ......2.....5A6. + 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x72, 0x00, // ..........;...r. + 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x72, 0x00, // ..N.......;...r. + 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..........=..... + 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ......-...=..... + 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..1...0...=..... + 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... + 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... + 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... + 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xe8, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x62, 0x01, // ..........}...b. + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x62, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ......b...O..... + 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, // ..e............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0x14, 0x00, // ................ + 0x00, 0x00, 0xf5, 0x01, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x9a, 0x00, // ......e...R..... + 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0xf5, 0x01, 0x00, 0x00, 0xa8, 0x00, // ......g......... + 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0xf7, 0x00, // ......h...g..... + 0x03, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x68, 0x01, // ..............h. + 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x69, 0x01, // ..i...........i. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x18, 0x01, // ..O.......m..... + 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x31, 0x00, // ..V...<.......1. + 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xfe, 0x01, // ......W......... + 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ......m...Q..... + 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ..p............. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x6b, 0x00, // ......q...p...k. + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x71, 0x01, // ..........r...q. + 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x73, 0x01, // ..m...n...3...s. + 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x01, // ..r...Q.......u. + 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, // ..........A..... + 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..v...N...8...>. + 0x03, 0x00, 0x76, 0x01, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..v...u...Q..... + 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..x...........A. + 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x34, 0x00, // ......y...N...4. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x79, 0x01, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x51, 0x00, // ..>...y...x...Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, // ......{......... + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x4e, 0x01, // ..A.......|...N. + 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x7b, 0x01, // ..|...>...|...{. + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0xfe, 0x01, // ..Q.......~..... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x7f, 0x01, // ......A......... + 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7f, 0x01, // ..N.......>..... + 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x81, 0x01, // ..~...A......... + 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..N...s...=..... + 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..........O..... + 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x85, 0x01, // ..........B..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x86, 0x01, // ................ + 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x95, 0x00, 0x00, 0x00, 0x89, 0x01, // ..2...A......... + 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......8...x...=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x8a, 0x01, // ................ + 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x95, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x94, 0x00, // ..A............. + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..8...t...=..... + 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x83, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x8e, 0x01, // ..........m..... + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x6d, 0x00, // ..............m. + 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x94, 0x01, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x92, 0x01, // ......1......... + 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x99, 0x01, // ......Q......... + 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x0c, 0x01, // ..Q............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9d, 0x01, // ......Q......... + 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, // ..........P..... + 0x00, 0x00, 0x9e, 0x01, 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x9d, 0x01, // ................ + 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xf8, 0x00, // ................ + 0x02, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa2, 0x01, // ......O......... + 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x02, // ................ + 0x00, 0x00, 0xa2, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x04, 0x00, 0x13, 0x00, // ......R......... + 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xb5, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa4, 0x01, 0x00, 0x00, 0xa5, 0x01, // ................ + 0x00, 0x00, 0xb5, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa5, 0x01, 0x00, 0x00, 0x4f, 0x00, // ..............O. + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x15, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, // ..............V. + 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2e, 0x00, // ..<.......1..... + 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x0a, 0x02, // ..W............. + 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xad, 0x01, // ......Q......... + 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xaf, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0xaf, 0x01, // ................ + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0x0c, 0x02, // ..Q............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb2, 0x01, // ......Q......... + 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, // ..............P. + 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0xb2, 0x01, // ................ + 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xe8, 0x01, // ................ + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb5, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..........O..... + 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3c, 0x00, // ..........V...<. + 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x57, 0x00, // ......1.......W. + 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0xb8, 0x01, // ................ + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbb, 0x01, 0x00, 0x00, 0x12, 0x01, // ..Q............. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbc, 0x01, // ................ + 0x00, 0x00, 0xbb, 0x01, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, // ......k......... + 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, // ..........m...n. + 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x51, 0x00, // ..3...........Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x5c, 0x01, // ..A............. + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc1, 0x01, 0x00, 0x00, 0xc0, 0x01, // ..8...>......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0x15, 0x02, // ..Q............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc4, 0x01, // ......A......... + 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc4, 0x01, // ......4...>..... + 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc6, 0x01, // ......Q......... + 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1a, 0x00, // ..........A..... + 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..........|...>. + 0x03, 0x00, 0xc7, 0x01, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. + 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x81, 0x00, // ................ + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xca, 0x01, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x41, 0x00, // ..>...........A. + 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xcc, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0xbe, 0x01, // ................ + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcd, 0x01, 0x00, 0x00, 0xcc, 0x01, // ..=............. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xcf, 0x01, 0x00, 0x00, 0x12, 0x01, // ..O............. + 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0xcf, 0x01, // ................ + 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // ..B............. + 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x41, 0x00, // ..........2...A. + 0x06, 0x00, 0x95, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x38, 0x00, // ..............8. + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd5, 0x01, // ..x...=......... + 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x01, // ................ + 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x81, 0x00, // ......m......... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0xd6, 0x01, // ..........m..... + 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0xcd, 0x01, // ..1............. + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x0c, 0x01, // ..Q............. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe2, 0x01, // ................ + 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0x0c, 0x01, // ..Q............. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xe6, 0x01, // ......P......... + 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0xe2, 0x01, // ................ + 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe8, 0x01, // ................ + 0x00, 0x00, 0xf5, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x33, 0x02, 0x00, 0x00, 0x9e, 0x01, // ..........3..... + 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0xe6, 0x01, // ..i............. + 0x00, 0x00, 0xb5, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x33, 0x02, // ......>...*...3. + 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ......8....... +}; +static const uint8_t fs_font_distance_field_drop_shadow_image_dx9[1447] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x05, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, // ......l......... + 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, // ,.CTAB.......... + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, // ..............|. + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, // ..D...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, // ......`......... + 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..l.......s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // olor............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, // ......u_params.. + 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // ..ps_3_0.Microso + 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad + 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, // er Compiler 10.1 + 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ..Q............. + 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, // ........@.Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, // .....?.......@.. + 0x00, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xf3, 0x04, 0x35, 0x41, 0x00, 0x00, // .?Q.........5A.. + 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // .?......@@...... + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ + 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x02, 0x00, 0x07, 0x90, 0x1f, 0x00, // ................ + 0x00, 0x02, 0x05, 0x00, 0x02, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x03, 0x00, // ......X......... + 0xe4, 0x9c, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... + 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x29, 0x00, 0x04, 0x02, 0x00, 0x00, // ..........)..... + 0x00, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x02, 0x00, // ....U........... + 0x55, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x03, 0x00, // U.*............. + 0xff, 0x90, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ....U.X......... + 0xaa, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x02, 0x00, 0x00, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U.....X..... + 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x00, 0x00, 0xff, 0x80, 0x02, 0x00, // ....U...U....... + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x02, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, // ............U... + 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x58, 0x00, // ........U.....X. + 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x8c, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, // ................ + 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x03, 0x00, 0xe4, 0x90, 0x00, 0x08, // U.B............. + 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x02, 0x00, 0xc6, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0x90, 0x5c, 0x00, // ..[............. + 0x00, 0x02, 0x02, 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, // ................ + 0x07, 0x80, 0x01, 0x00, 0xe4, 0x8b, 0x02, 0x00, 0xe4, 0x8b, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x04, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, // ................ + 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, // U............... + 0xaa, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x03, 0x00, // ................ + 0x00, 0xa1, 0x03, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U........... + 0xaa, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x55, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... + 0x06, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U........... + 0x55, 0x80, 0x00, 0x00, 0x55, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // U...U........... + 0x55, 0x80, 0x03, 0x00, 0xaa, 0xa0, 0x03, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // U............... + 0x02, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, // ........U....... + 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0xff, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, // ....U........... + 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x2b, 0x00, 0x00, 0x00, 0x29, 0x00, 0x03, 0x02, 0x00, 0x00, // ......+...)..... + 0x00, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // ....U.*...X..... + 0x07, 0x80, 0x01, 0x00, 0xe4, 0x9c, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x08, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x29, 0x00, // ..............). + 0x04, 0x02, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U.B..... + 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, // ................ + 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, // ................ + 0xff, 0x80, 0x00, 0x00, 0xff, 0x90, 0x2a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ......*......... + 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x13, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // ..........X..... + 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x02, 0x00, 0x00, 0xa0, 0x58, 0x00, // ....U...U.....X. + 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x00, 0x00, // ............U... + 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0x55, 0x81, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, // U............... + 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, // ................ + 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x02, 0x00, // ..X............. + 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, // ....U.B......... + 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ + 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x80, 0x01, 0x00, // ......[......... + 0x90, 0x90, 0x5c, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x02, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x0e, 0x80, 0x00, 0x00, 0xe4, 0x8b, 0x01, 0x00, 0x90, 0x8b, 0x08, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x07, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, // ........U....... + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // ....U........... + 0x55, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // U...U........... + 0x55, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x03, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // U.......U....... + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x55, 0xa0, 0x02, 0x00, // ....U.......U... + 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... + 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ....U........... + 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xaa, 0xa0, 0x03, 0x00, 0xff, 0xa0, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x90, 0x01, 0x00, // ................ + 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..........+...+. + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... +}; +static const uint8_t fs_font_distance_field_drop_shadow_image_dx11[2255] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH..gz........u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, // ..s_texColor0... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x08, 0x00, 0x00, 0x44, // r0.........|...D + 0x58, 0x42, 0x43, 0x74, 0x0a, 0xe2, 0x36, 0x59, 0xd0, 0x6e, 0xc1, 0x42, 0x64, 0xca, 0x1a, 0x50, // XBCt..6Y.n.Bd..P + 0x60, 0xaa, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // `......|......., + 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0xb4, // ...........ISGN. + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x07, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, // ...........SV_PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, // SITION.COLOR.TEX + 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, // COORD..OSGN,.... + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....... ........ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, // ...............S + 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x58, // V_TARGET...SHDRX + 0x07, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, // ...@.......Y...F + 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, // . .........Z.... + 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, // `......X0...p... + 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, // ...UU..b........ + 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, // ...b...........b + 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, // ...r.......b.... + 0x10, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... + 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x04, 0x00, // ...h.......i.... + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x04, 0x01, // ...........i.... + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0a, 0x72, // ...............r + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, // .......F........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // @............... + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...<............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, // ...............< + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // ...........*.... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x03, 0x0a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, // .......E........ + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, // ...F.......F~... + 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, // ....`......2.... + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, // .......:........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1b, // @.....@.@.....?. + 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...6....0 ...... + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, // ...*.......6.... + 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // 0 .............. + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // ...6....0 ...... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, // ...........6.... + 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, // 0 .........:.... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...6............ + 0x30, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, // 0 .............. + 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // .......r.......F + 0x12, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ...V............ + 0x09, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x22, // ..............." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, // ................ + 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, // .......K...".... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x22, // ...........8..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x22, // . .........8..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...............* + 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x42, // . .........2...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@....5A.@... + 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ..?2..."........ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, // ........@....5A. + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, // @.....?....2.... + 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......A.......F + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // ....@.....?...?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..?...?........8 + 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ............... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, // ...........2..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, // @.......@....@@8 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, // ...........8.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, // .......8.... ... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, // ...........:.... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...6...r ......F + 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x18, // .......>........ + 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x03, // ...r.......F.... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....@........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......<........ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...<...........* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, // ................ + 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...........E.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, // .......F.......F + 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ~.......`......8 + 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, // .... ......:.... + 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, // ...:.......6...r + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, // ......F.......> + 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, // .......E........ + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, // ...F.......F~... + 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, // ....`......2.... + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // .......:........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1b, // @.....@.@.....?. + 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...6....0 ...... + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, // ...*.......6.... + 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // 0 .............. + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, // ...6....0 ...... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, // ...........6.... + 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, // 0 .........:.... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...6............ + 0x30, 0x20, 0x04, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, // 0 .............. + 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // .......r.......F + 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ...V............ + 0x09, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x22, // ..............." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, // ................ + 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, // .......K...".... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x22, // ...........8..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x42, // . .........2...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@....5A.@... + 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ..?2..."........ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, // ........@....5A. + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, // @.....?....2.... + 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......A.......F + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // ....@.....?...?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..?...?........8 + 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ............... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, // ...........2..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, // @.......@....@@8 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, // ...........8.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, // .......8.... ... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, // ...........:.... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...6...r ......F + 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // .......>....... +}; +static const uint8_t fs_font_distance_field_drop_shadow_image_mtl[3077] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, // .......u_params. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..........s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x0b, // olor............ + 0x00, 0x00, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, // ..#pragma clang + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, // diagnostic ignor + 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x70, 0x72, // ed "-Wmissing-pr + 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, // ototypes".#pragm + 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, // a clang diagnost + 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, // ic ignored "-Wmi + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x23, // ssing-braces"..# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x3c, // etal;..template< + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, // typename T, size + 0x5f, 0x74, 0x20, 0x4e, 0x75, 0x6d, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, // _t Num>.struct s + 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x7b, 0x0a, // pvUnsafeArray.{. + 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x4e, // T elements[N + 0x75, 0x6d, 0x20, 0x3f, 0x20, 0x4e, 0x75, 0x6d, 0x20, 0x3a, 0x20, 0x31, 0x5d, 0x3b, 0x0a, 0x20, // um ? Num : 1];. + 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, // . thread T + 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, // & operator [] (s + 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, // ize_t pos) threa + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // d. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, // constexpr const + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // thread T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0a, // s) const thread. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // {. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, // turn elements[po + 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, // s];. }. . + 0x20, 0x20, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, // device T& ope + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, // rator [] (size_t + 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, // pos) device. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // {. retur + 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, // n elements[pos]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // . }. const + 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, // expr const devic + 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, // e T& operator [] + 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, 0x6f, // (size_t pos) co + 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, // nst device. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, // . return + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, // elements[pos];. + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, // }. . co + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, // nstexpr const co + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // nstant T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // s) const constan + 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // . threadgroup + 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, // T& operator [] + 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, // (size_t pos) thr + 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // eadgroup. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, // return el + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ements[pos];. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, // }. constexpr + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, // const threadgro + 0x75, 0x70, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, // up T& operator [ + 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, // ] (size_t pos) c + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // onst threadgroup + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, // . {. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, // eturn elements[p + 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // os];. }.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // ams;.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, // {. float4 bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, // x_FragData0 [[co + 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, // lor(0)]];.};..st + 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ruct xlatMtlMain + 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _in.{. float4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // v_color0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // loat4 v_texcoord + 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x32, 0x29, 0x5d, // 0 [[user(locn2)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, // ];. float4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // texcoord1 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn3)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // loat4 v_texcoord + 0x32, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, // 2 [[user(locn4)] + 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, // ];.};..fragment + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, // xlatMtlMain_out + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, // xlatMtlMain(xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, // MtlMain_in in [[ + 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, // stage_in]], cons + 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, // tant _Global& _m + 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, // tl_u [[buffer(0) + 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, // ]], texturecube< + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // float> s_texColo + 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, // r [[texture(0)]] + 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // , sampler s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, // olorSampler [[sa + 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // mpler(0)]]).{. + 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, // xlatMtlMain_ou + 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // t out = {};. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, // float4 _563;. + 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // do. {. + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x61, 0x6e, 0x79, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, // if (!any(in.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x3d, // texcoord2.xyz == + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x0a, 0x20, // float3(0.0))). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x31, 0x30, // float4 _510 + 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, // = s_texColor.sa + 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, // mple(s_texColorS + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // ampler, in.v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // coord2.xyz);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, // spvUnsa + 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x34, // feArray<float, 4 + 0x3e, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // > _334;. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x35, // _334[0] = _5 + 0x31, 0x30, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 10.z;. + 0x20, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x31, 0x30, // _334[1] = _510 + 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .y;. + 0x5f, 0x33, 0x33, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x31, 0x30, 0x2e, 0x78, // _334[2] = _510.x + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, // ;. _3 + 0x33, 0x34, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x31, 0x30, 0x2e, 0x77, 0x3b, 0x0a, // 34[3] = _510.w;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // floa + 0x74, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, // t _398 = ((lengt + 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, // h(fwidth(in.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, // xcoord2.xyz)) * + 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, 0x37, 0x30, 0x38, 0x33, 0x30, 0x35, 0x33, 0x35, 0x38, 0x38, // 11.3137083053588 + 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, // 87) * _mtl_u.u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // arams.y) * _mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // u.u_params.z;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, // _563 = + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // float4(in.v_col + 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, // or0.xyz, smooths + 0x74, 0x65, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x2c, 0x20, // tep(0.5 - _398, + 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x33, 0x34, // 0.5 + _398, _334 + 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // [int((in.v_texco + 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, // ord2.w * 4.0) + + 0x30, 0x2e, 0x35, 0x29, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // 0.5)]) * in.v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // lor0.w);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // }. if + 0x20, 0x28, 0x61, 0x6e, 0x79, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // (any(in.v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, // ord0.xyz == floa + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t3(0.0))). + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x73, 0x5f, // float4 _524 = s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, // texColor.sample( + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, // s_texColorSample + 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // r, in.v_texcoord + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 1.xyz);. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _563 = float + 0x34, 0x28, 0x5f, 0x35, 0x32, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x35, 0x32, 0x34, // 4(_524.xyz, _524 + 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // .w * in.v_color0 + 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .w);. + 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // }. float4 + 0x20, 0x5f, 0x35, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // _533 = s_texCol + 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // or.sample(s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, // olorSampler, in. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, // v_texcoord0.xyz) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, 0x73, // ;. spvUns + 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, // afeArray<float, + 0x34, 0x3e, 0x20, 0x5f, 0x33, 0x34, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 4> _348;. + 0x20, 0x5f, 0x33, 0x34, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x33, 0x2e, // _348[0] = _533. + 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x34, 0x38, 0x5b, // z;. _348[ + 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x33, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 1] = _533.y;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x34, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, // _348[2] = _ + 0x35, 0x33, 0x33, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, // 533.x;. _ + 0x33, 0x34, 0x38, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x33, 0x2e, 0x77, 0x3b, // 348[3] = _533.w; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, // . float _ + 0x34, 0x37, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x77, // 470 = (length(fw + 0x69, 0x64, 0x74, 0x68, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // idth(in.v_texcoo + 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x31, 0x31, 0x2e, 0x33, // rd0.xyz)) * 11.3 + 0x31, 0x33, 0x37, 0x30, 0x38, 0x33, 0x30, 0x35, 0x33, 0x35, 0x38, 0x38, 0x38, 0x37, 0x29, 0x20, // 13708305358887) + 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // * _mtl_u.u_param + 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x36, // s.y;. _56 + 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, // 3 = float4(in.v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x73, 0x6d, 0x6f, 0x6f, // color0.xyz, smoo + 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x34, 0x37, // thstep(0.5 - _47 + 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x34, 0x37, 0x30, 0x2c, 0x20, 0x5f, // 0, 0.5 + _470, _ + 0x33, 0x34, 0x38, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, // 348[int((in.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, // xcoord0.w * 4.0) + 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, // + 0.5)]) * in.v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _color0.w);. + 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // break;. } + 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, // while(false);. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, // out.bgfx_Frag + 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x3b, 0x0a, 0x20, 0x20, // Data0 = _563;. + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, // return out;.}. + 0x0a, 0x00, 0x00, 0x30, 0x00, // ...0. +}; +extern const uint8_t* fs_font_distance_field_drop_shadow_image_pssl; +extern const uint32_t fs_font_distance_field_drop_shadow_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow_image.sc b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow_image.sc new file mode 100644 index 00000000000..f5688602b85 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_drop_shadow_image.sc @@ -0,0 +1,56 @@ +$input v_color0, v_color1, v_texcoord0, v_texcoord1, v_texcoord2 + +#include "../../common/common.sh" + +SAMPLERCUBE(s_texColor, 0); + +uniform vec4 u_params; + +#define u_distanceMultiplier u_params.y +#define u_dropShadowSoftener u_params.z + +void main() +{ + if (!any(equal(v_texcoord2.xyz, vec3(0.0, 0.0, 0.0)))) + { + vec4 shadowTexCoord = v_texcoord2; + vec4 shadowDistanceColor = textureCube(s_texColor, shadowTexCoord.xyz); + int index2 = int(shadowTexCoord.w*4.0 + 0.5); + float rgba2[4]; + rgba2[0] = shadowDistanceColor.z; + rgba2[1] = shadowDistanceColor.y; + rgba2[2] = shadowDistanceColor.x; + rgba2[3] = shadowDistanceColor.w; + float shadowDistance = rgba2[index2]; + + float shadowSmoothing = 16.0 * length(fwidth(shadowTexCoord.xyz)) / sqrt(2.0) * u_distanceMultiplier * u_dropShadowSoftener; + + float shadowAlpha = smoothstep(0.5 - shadowSmoothing, 0.5 + shadowSmoothing, shadowDistance); + vec4 shadowColor = vec4(v_color0.xyz, shadowAlpha * v_color0.w); + gl_FragColor = shadowColor; + return; + } + + if (any(equal(v_texcoord0.xyz, vec3(0.0, 0.0, 0.0)))) + { + vec4 imageColor = textureCube(s_texColor, v_texcoord1.xyz); + gl_FragColor = vec4(imageColor.xyz, imageColor.w * v_color0.w); + return; + } + + vec4 color = textureCube(s_texColor, v_texcoord0.xyz); + + int index = int(v_texcoord0.w*4.0 + 0.5); + float rgba[4]; + rgba[0] = color.z; + rgba[1] = color.y; + rgba[2] = color.x; + rgba[3] = color.w; + float distance = rgba[index]; + + float smoothing = 16.0 * length(fwidth(v_texcoord0.xyz)) / sqrt(2.0) * u_distanceMultiplier; + + float border = smoothstep(0.5 - smoothing, 0.5 + smoothing, distance); + vec4 sdfColor = vec4(v_color0.xyz, border * v_color0.w); + gl_FragColor = sdfColor; +} diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline.bin.h new file mode 100644 index 00000000000..7dea3e39bef --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline.bin.h @@ -0,0 +1,656 @@ +static const uint8_t fs_font_distance_field_outline_glsl[1361] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x05, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // g vec4 v_color0; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // color1;.varying + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // vec4 v_texcoord0 + 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // ;.uniform sample + 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // rCube s_texColor + 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, // ;.uniform vec4 u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // _params;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // in ().{. float + 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, // rgba_1[4];. vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_2;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // pvar_2 = texture + 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // Cube (s_texColor + 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, // , v_texcoord0.xy + 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // z);. int tmpvar + 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, // _3;. tmpvar_3 = + 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // int(((v_texcoor + 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, // d0.w * 4.0) + 0. + 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, // 5));. rgba_1[0] + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, // = tmpvar_2.z;. + 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // rgba_1[1] = tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // var_2.y;. rgba_ + 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // 1[2] = tmpvar_2. + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, // x;. rgba_1[3] = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, // tmpvar_2.w;. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, // loat tmpvar_4;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x72, 0x67, 0x62, 0x61, // tmpvar_4 = rgba + 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // _1[tmpvar_3];. + 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, // vec3 tmpvar_5;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, // tmpvar_5 = (abs + 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // (dFdx(v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, // 0.xyz)) + abs(dF + 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, // dy(v_texcoord0.x + 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // yz)));. float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_6;. tmpva + 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, // r_6 = (((16.0 * + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, // . sqrt(dot (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // mpvar_5, tmpvar_ + 0x35, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, // 5)). ) / 1.4142 + 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, // 14) * u_params.y + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // );. float tmpva + 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, // r_7;. tmpvar_7 + 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // = (0.5 - (u_para + 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, // ms.w * tmpvar_6) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // );. float edge0 + 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x20, 0x3d, 0x20, // _8;. edge0_8 = + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_7 - tmpv + 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // ar_6);. float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_9;. tmpva + 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, // r_9 = clamp (((t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // mpvar_4 - edge0_ + 0x38, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // 8) / (. (tmpv + 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, // ar_7 + tmpvar_6) + 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x29, 0x29, 0x2c, // . - edge0_8)), + 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // 0.0, 1.0);. fl + 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, // oat edge0_10;. + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // edge0_10 = (0.5 + 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, // - tmpvar_6);. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, // loat tmpvar_11;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, // tmpvar_11 = cl + 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // amp (((tmpvar_4 + 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, // - edge0_10) / (. + 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // (0.5 + tmpva + 0x72, 0x5f, 0x36, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // r_6). - edge0_ + 0x31, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // 10)), 0.0, 1.0); + 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // . vec4 tmpvar_1 + 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x78, // 2;. tmpvar_12.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // yz = mix (v_colo + 0x72, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r1.xyz, v_color0 + 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, // .xyz, (tmpvar_11 + 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, // * (tmpvar_11 * + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, // . (3.0 - (2.0 + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x0a, 0x20, // * tmpvar_11)). + 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // )));. tmpvar_1 + 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // 2.w = ((tmpvar_9 + 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x0a, // * (tmpvar_9 * . + 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, // (3.0 - (2.0 + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, // * tmpvar_9)). ) + 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, // ) * v_color0.w); + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // . gl_FragColor + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // = tmpvar_12;.}.. + 0x00, // . +}; +static const uint8_t fs_font_distance_field_outline_essl[1456] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x05, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ......u...varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ighp vec4 v_colo + 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // r1;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, // d0;.uniform lowp + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, // samplerCube s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // exColor;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // highp vec4 u_pa + 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // rams;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // ().{. lowp floa + 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // t rgba_1[4];. l + 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec4 tmpvar_ + 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, // 2;. tmpvar_2 = + 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, // textureCube (s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // exColor, v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, // ord0.xyz);. hig + 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, // hp int tmpvar_3; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, // . tmpvar_3 = in + 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // t(((v_texcoord0. + 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, // w * 4.0) + 0.5)) + 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, // ;. rgba_1[0] = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, // tmpvar_2.z;. rg + 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ba_1[1] = tmpvar + 0x5f, 0x32, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, // _2.y;. rgba_1[2 + 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x3b, 0x0a, // ] = tmpvar_2.x;. + 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, // rgba_1[3] = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // pvar_2.w;. lowp + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, // float tmpvar_4; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x72, 0x67, // . tmpvar_4 = rg + 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x5d, 0x3b, 0x0a, // ba_1[tmpvar_3];. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // highp vec3 tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_5;. tmpvar_ + 0x35, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, // 5 = (abs(dFdx(v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, // texcoord0.xyz)) + 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // + abs(dFdy(v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // coord0.xyz)));. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // highp float tmp + 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_6;. tmpvar_ + 0x36, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, // 6 = (((16.0 * . + 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, // sqrt(dot (tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, // var_5, tmpvar_5) + 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, // ). ) / 1.414214 + 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, // ) * u_params.y); + 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // . highp float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_7;. tmpva + 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x28, 0x75, 0x5f, // r_7 = (0.5 - (u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // params.w * tmpva + 0x72, 0x5f, 0x36, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, // r_6));. highp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, // loat edge0_8;. + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // edge0_8 = (tmpva + 0x72, 0x5f, 0x37, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, // r_7 - tmpvar_6); + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // . lowp float tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_9;. tmpvar + 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, // _9 = clamp (((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, // pvar_4 - edge0_8 + 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // ) / (. (tmpva + 0x72, 0x5f, 0x37, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x0a, // r_7 + tmpvar_6). + 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x38, 0x29, 0x29, 0x2c, 0x20, // - edge0_8)), + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, // 0.0, 1.0);. hig + 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, // hp float edge0_1 + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, // 0;. edge0_10 = + 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, // (0.5 - tmpvar_6) + 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // ;. lowp float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // mpvar_11;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, // ar_11 = clamp (( + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, // (tmpvar_4 - edge + 0x30, 0x5f, 0x31, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, // 0_10) / (. (0 + 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x0a, 0x20, // .5 + tmpvar_6). + 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x29, 0x2c, 0x20, // - edge0_10)), + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, // 0.0, 1.0);. low + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // p vec4 tmpvar_12 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x78, 0x79, // ;. tmpvar_12.xy + 0x7a, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // z = mix (v_color + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // 1.xyz, v_color0. + 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, // xyz, (tmpvar_11 + 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x0a, // * (tmpvar_11 * . + 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, // (3.0 - (2.0 + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, // * tmpvar_11)). + 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // )));. tmpvar_12 + 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, // .w = ((tmpvar_9 + 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x0a, 0x20, // * (tmpvar_9 * . + 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, // (3.0 - (2.0 * + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // tmpvar_9)). )) + 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, // * v_color0.w);. + 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, // gl_FragColor = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_12;.}... +}; +static const uint8_t fs_font_distance_field_outline_spv[2450] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH....n.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, // ..s_texColor0... + 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0x54, 0x09, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ......T.....#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ......f......... + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL + 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, // ......main...... + 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc6, 0x00, // ................ + 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... + 0x07, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..+...s_texColor + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2e, 0x00, // Sampler......... + 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, // ..s_texColorText + 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0x55, 0x6e, // ure...........Un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, // iformBlock...... + 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ..........u_para + 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, // ms.............. + 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xba, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // ..........gl_Fra + 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xbd, 0x00, // gCoord.......... + 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... + 0x05, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x00, 0x00, // ......v_color1.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ..........v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x76, 0x5f, // oord0.........v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, 0x06, 0x00, 0xd7, 0x00, // texcoord1....... + 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, // ..bgfx_FragData0 + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...+..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, // ..G...+...!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G......."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, // ..G.......!..... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...........#. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G......."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G.......!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G............. + 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!..... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, // ................ + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, // ...... ......... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..*...........;. + 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // ..*...+....... . + 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..-...........;. + 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ..-............. + 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..1... .......+. + 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..1...2.......+. + 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..1...6......... + 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x5a, 0x00, // ..:...........Z. + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x5a, 0x00, // .. .......+...Z. + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..[.......+..... + 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..^......@+..... + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x5a, 0x00, // ..`......?+...Z. + 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x64, 0x00, // ..c...........d. + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x65, 0x00, // ......c... ...e. + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x5a, 0x00, // ......d...+...Z. + 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x31, 0x00, // ..k.......+...1. + 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x31, 0x00, // ..o.......+...1. + 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x85, 0x00, // ..t............. + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x02, 0x00, // ...... ......... + 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x87, 0x00, // ......;......... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x02, 0x00, // ...... ......... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x01, 0x00, // ...... ......... + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xba, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xbd, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xc0, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xc3, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xc6, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x03, 0x00, // ...... ......... + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd7, 0x00, // ......;......... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x65, 0x01, // ......+.......e. + 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ....5A6......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, // ................ + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x07, 0x00, // ..;...e......... + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..=.......,...+. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, // ..=......./..... + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbd, 0x00, // ..=............. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc0, 0x00, // ..=............. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc3, 0x00, // ..=............. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xc4, 0x00, // ..O............. + 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x2f, 0x00, // ..V...:...P.../. + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x52, 0x01, // ..,...W.......R. + 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..P.......Q..... + 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x5e, 0x00, // ..............^. + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x04, 0x01, // ................ + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x06, 0x01, // ..`...n...1..... + 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x01, // ......Q......... + 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, // ..R.......A..... + 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..........6...>. + 0x03, 0x00, 0x09, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ......R.......A. + 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x32, 0x00, // ..............2. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x51, 0x00, // ..>...........Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, // ..........R..... + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0xf1, 0x00, // ..A............. + 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, // ..o...>......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x52, 0x01, // ..Q...........R. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x12, 0x01, // ......A......... + 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x12, 0x01, // ......t...>..... + 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x14, 0x01, // ......A......... + 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........=..... + 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..........O..... + 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x18, 0x01, // ..........B..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x19, 0x01, // ................ + 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x88, 0x00, 0x00, 0x00, 0x1c, 0x01, // ..e...A......... + 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......6...k...=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x1d, 0x01, // ................ + 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x88, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x87, 0x00, // ..A............. + 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..6...[...=..... + 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // .. ............. + 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x83, 0x00, // .."... ......... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x22, 0x01, // ......$...`...". + 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x24, 0x01, // ..........'...$. + 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x01, // ..............*. + 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, // ..$............. + 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x27, 0x01, // ..,.......1...'. + 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, // ..*............. + 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x81, 0x00, // ......`......... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1e, 0x01, // ......0...`..... + 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x01, 0x00, // ..........2..... + 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x15, 0x01, // ..1.......0..... + 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x32, 0x01, // ..P.......4...2. + 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..2...2...O..... + 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, // ..6............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..........O..... + 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, // ..8............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x36, 0x01, // ..X...........6. + 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..8...4...Q..... + 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ..<............. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x3c, 0x01, // ......=...,...<. + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x58, 0x01, // ..Q.......>...X. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3f, 0x01, // ......Q.......?. + 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..X.......Q..... + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, // ..@...X.......P. + 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x3f, 0x01, // ......A...>...?. + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xd7, 0x00, // ..@...=...>..... + 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..A.......8..... + 0x10, 0x00, // .. +}; +static const uint8_t fs_font_distance_field_outline_dx9[1035] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x03, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, // ................ + 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, // ,.CTAB.......... + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, // ..............|. + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, // ..D...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, // ......`......... + 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..l.......s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // olor............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, // ......u_params.. + 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // ..ps_3_0.Microso + 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad + 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, // er Compiler 10.1 + 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, // ..Q..........@.. + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, // .?.......?Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, // ................ + 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xf3, 0x04, 0x35, 0x41, 0x00, 0x00, // @.Q.........5A.. + 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ....@@...?...... + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ + 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x01, 0x80, 0x02, 0x00, 0xff, 0x90, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x55, 0xa0, 0x13, 0x00, // ............U... + 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // ..........X..... + 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x01, 0x00, 0xaa, 0xa0, 0x01, 0x00, 0xff, 0xa0, 0x02, 0x00, // ....U........... + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x58, 0x00, // ............U.X. + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, // U............... + 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x01, 0x00, // ..X............. + 0xff, 0xa0, 0x01, 0x00, 0xaa, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x02, 0x00, // ......B......... + 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ + 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x80, 0x02, 0x00, // ......[......... + 0x90, 0x90, 0x5c, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x02, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x0e, 0x80, 0x00, 0x00, 0xe4, 0x8b, 0x01, 0x00, 0x90, 0x8b, 0x08, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x07, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, // ........U....... + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // ....U........... + 0x55, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // U...U........... + 0x55, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x03, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // U............... + 0x08, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, // ................ + 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0xff, 0xa0, 0x02, 0x00, // ....U........... + 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x01, 0x00, 0x00, 0x80, 0x06, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x14, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0xff, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x08, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x03, 0x00, 0xaa, 0xa0, 0x05, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, // ................ + 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, // ................ + 0x07, 0x80, 0x01, 0x00, 0xe4, 0x81, 0x00, 0x00, 0xe4, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, // ................ + 0x07, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x01, 0x00, // ........U....... + 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ........U....... + 0x04, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x00, 0x00, 0xaa, 0x81, 0x01, 0x00, 0x55, 0x80, 0x04, 0x00, // ............U... + 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x00, 0x00, // ........U....... + 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, // ............U... + 0x00, 0xa1, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, // ................ + 0x55, 0x81, 0x00, 0x00, 0xf4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // U............... + 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // ............U... + 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, // ................ + 0x55, 0xa0, 0x03, 0x00, 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // U............... + 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, // ....U........... + 0x00, 0x80, 0x00, 0x00, 0xff, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ........... +}; +static const uint8_t fs_font_distance_field_outline_dx11[1587] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH....n.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, // ..s_texColor0... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x05, 0x00, 0x00, 0x44, // r0.............D + 0x58, 0x42, 0x43, 0xa0, 0xf0, 0xc3, 0x4f, 0xe4, 0x9e, 0xf2, 0x71, 0x7b, 0x3c, 0x33, 0x92, 0xfa, // XBC...O...q{<3.. + 0xd0, 0x23, 0x87, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // .#............., + 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x9c, // ...........ISGN. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x07, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C + 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, // OLOR.TEXCOORD..O + 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET + 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xd4, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x35, // ...SHDR....@...5 + 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ...Y...F. ...... + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, // ...Z....`......X + 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, // 0...p......UU..b + 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, // ...........b...r + 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, // .......b........ + 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, // ...e.... ......h + 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, // .......i........ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, // .......E........ + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, // ...F.......F~... + 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, // ....`......6.... + 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // 0 .........*.... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ...6....0 ...... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, // ...........6.... + 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // 0 .............. + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...6....0 ...... + 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, // ...:.......2.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // .......:........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1b, // @.....@.@.....?. + 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...6............ + 0x30, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, // 0 .............. + 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // .......r.......F + 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ...V............ + 0x09, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x22, // ..............." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, // ................ + 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, // .......K...".... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x22, // ...........8..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x42, // . .........8...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x32, 0x00, 0x00, 0x0b, 0x42, 0x00, 0x10, 0x00, 0x00, // @....5A2...B.... + 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...:. .A........ + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, // ...*........@... + 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ..?2............ + 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, // ...A........@... + 0x04, 0x35, 0x41, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x42, // .5A*.......2...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // @....5A*........ + 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x80, 0x41, // ...B.......:...A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......*........ + 0x00, 0x00, 0x08, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x80, 0x41, // ...........:...A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, // ................ + 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, // ...B........@... + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x2a, // ..?...?...?...?* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, // .......8 ..B.... + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, // ...*.......:.... + 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...2...........* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, // ........@....... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, // @....@@8...B.... + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // ...*.......*.... + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...8...B.......* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // .......:.......8 + 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // .... ......*.... + 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x42, // ...:.......2...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, // @....5A.@.....?2 + 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, // ..."...........A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, // ........@....5A. + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x52, 0x00, 0x10, 0x00, 0x00, // @.....?....R.... + 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ...V...A........ + 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // ....@.....?...?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..?...?*.......8 + 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ............... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, // ...........2..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, // @.......@....@@8 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, // ...........8.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe2, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x80, 0x41, // ...............A + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x72, 0x20, 0x10, 0x00, 0x00, // .......2...r ... + 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, // ...F.......>.... + 0x00, 0x10, 0x00, // ... +}; +static const uint8_t fs_font_distance_field_outline_mtl[2232] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, // .......u_params. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..........s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x08, // olor..........B. + 0x00, 0x00, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, // ..#pragma clang + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, // diagnostic ignor + 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x70, 0x72, // ed "-Wmissing-pr + 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, // ototypes".#pragm + 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, // a clang diagnost + 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, // ic ignored "-Wmi + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x23, // ssing-braces"..# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x3c, // etal;..template< + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, // typename T, size + 0x5f, 0x74, 0x20, 0x4e, 0x75, 0x6d, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, // _t Num>.struct s + 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x7b, 0x0a, // pvUnsafeArray.{. + 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x4e, // T elements[N + 0x75, 0x6d, 0x20, 0x3f, 0x20, 0x4e, 0x75, 0x6d, 0x20, 0x3a, 0x20, 0x31, 0x5d, 0x3b, 0x0a, 0x20, // um ? Num : 1];. + 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, // . thread T + 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, // & operator [] (s + 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, // ize_t pos) threa + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // d. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, // constexpr const + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // thread T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0a, // s) const thread. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // {. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, // turn elements[po + 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, // s];. }. . + 0x20, 0x20, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, // device T& ope + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, // rator [] (size_t + 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, // pos) device. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // {. retur + 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, // n elements[pos]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // . }. const + 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, // expr const devic + 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, // e T& operator [] + 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, 0x6f, // (size_t pos) co + 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, // nst device. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, // . return + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, // elements[pos];. + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, // }. . co + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, // nstexpr const co + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // nstant T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // s) const constan + 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // . threadgroup + 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, // T& operator [] + 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, // (size_t pos) thr + 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // eadgroup. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, // return el + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ements[pos];. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, // }. constexpr + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, // const threadgro + 0x75, 0x70, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, // up T& operator [ + 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, // ] (size_t pos) c + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // onst threadgroup + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, // . {. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, // eturn elements[p + 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // os];. }.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // ams;.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, // {. float4 bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, // x_FragData0 [[co + 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, // lor(0)]];.};..st + 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ruct xlatMtlMain + 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _in.{. float4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // v_color0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, // loat4 v_color1 [ + 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // [user(locn1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // float4 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, // cn2)]];.};..frag + 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ment xlatMtlMain + 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // _out xlatMtlMain + 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, // (xlatMtlMain_in + 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, // in [[stage_in]], + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, // constant _Globa + 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // l& _mtl_u [[buff + 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // er(0)]], texture + 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, // cube<float> s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // xColor [[texture + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, // (0)]], sampler s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, // [[sampler(0)]]) + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // .{. xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, // in_out out = {}; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x38, // . float4 _338 + 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, // = s_texColor.sa + 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, // mple(s_texColorS + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // ampler, in.v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // coord0.xyz);. + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, // int _262 = int( + 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // (in.v_texcoord0. + 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, // w * 4.0) + 0.5); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, // . spvUnsafeAr + 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x34, 0x3e, 0x20, 0x5f, 0x32, // ray<float, 4> _2 + 0x34, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x34, 0x31, 0x5b, 0x30, 0x5d, 0x20, // 41;. _241[0] + 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, // = _338.z;. _2 + 0x34, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x2e, 0x79, 0x3b, 0x0a, // 41[1] = _338.y;. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x34, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x33, // _241[2] = _3 + 0x33, 0x38, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x34, 0x31, 0x5b, 0x33, // 38.x;. _241[3 + 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // ] = _338.w;. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, // float _286 = (le + 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x69, 0x6e, 0x2e, 0x76, // ngth(fwidth(in.v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, // _texcoord0.xyz)) + 0x20, 0x2a, 0x20, 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, 0x37, 0x30, 0x38, 0x33, 0x30, 0x35, 0x33, // * 11.3137083053 + 0x35, 0x38, 0x38, 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // 58887) * _mtl_u. + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // u_params.y;. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x35, // float _292 = 0.5 + 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, // - (_mtl_u.u_par + 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x38, 0x36, 0x29, 0x3b, 0x0a, 0x20, // ams.w * _286);. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, // out.bgfx_Frag + 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x6d, // Data0 = float4(m + 0x69, 0x78, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x2e, 0x78, // ix(in.v_color1.x + 0x79, 0x7a, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // yz, in.v_color0. + 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x73, 0x6d, 0x6f, 0x6f, // xyz, float3(smoo + 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x38, // thstep(0.5 - _28 + 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x38, 0x36, 0x2c, 0x20, 0x5f, // 6, 0.5 + _286, _ + 0x32, 0x34, 0x31, 0x5b, 0x5f, 0x32, 0x36, 0x32, 0x5d, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x73, 0x6d, // 241[_262]))), sm + 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x5f, 0x32, 0x39, 0x32, 0x20, 0x2d, 0x20, // oothstep(_292 - + 0x5f, 0x32, 0x38, 0x36, 0x2c, 0x20, 0x5f, 0x32, 0x39, 0x32, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x38, // _286, _292 + _28 + 0x36, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x31, 0x5b, 0x5f, 0x32, 0x36, 0x32, 0x5d, 0x29, 0x20, 0x2a, // 6, _241[_262]) * + 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, // in.v_color0.w); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, // . return out; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x30, 0x00, // .}....0. +}; +extern const uint8_t* fs_font_distance_field_outline_pssl; +extern const uint32_t fs_font_distance_field_outline_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline.sc b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline.sc new file mode 100644 index 00000000000..6296c398504 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline.sc @@ -0,0 +1,32 @@ +$input v_color0, v_color1, v_texcoord0, v_texcoord1 + +#include "../../common/common.sh" + +SAMPLERCUBE(s_texColor, 0); + +uniform vec4 u_params; + +#define u_distanceMultiplier u_params.y +#define u_outlineWidth u_params.w + +void main() +{ + vec4 color = textureCube(s_texColor, v_texcoord0.xyz); + + int index = int(v_texcoord0.w*4.0 + 0.5); + float rgba[4]; + rgba[0] = color.z; + rgba[1] = color.y; + rgba[2] = color.x; + rgba[3] = color.w; + float distance = rgba[index]; + + float smoothing = 16.0 * length(fwidth(v_texcoord0.xyz)) / sqrt(2.0) * u_distanceMultiplier; + + float outlineWidth = u_outlineWidth * smoothing; + float outerEdgeCenter = 0.5 - outlineWidth; + float alpha = smoothstep(outerEdgeCenter - smoothing, outerEdgeCenter + smoothing, distance); + float border = smoothstep(0.5 - smoothing, 0.5 + smoothing, distance); + vec4 sdfColor = vec4( mix(v_color1.xyz, v_color0.xyz, border), alpha * v_color0.w ); + gl_FragColor = sdfColor; +} diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_drop_shadow_image.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_drop_shadow_image.bin.h new file mode 100644 index 00000000000..4908ded5ca6 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_drop_shadow_image.bin.h @@ -0,0 +1,1149 @@ +static const uint8_t fs_font_distance_field_outline_drop_shadow_image_glsl[2939] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ......@...varyin + 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // g vec4 v_color0; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // color1;.varying + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // vec4 v_texcoord0 + 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ;.varying vec4 v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord1;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ing vec4 v_texco + 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, // ord2;.uniform sa + 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // mplerCube s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, // olor;.uniform ve + 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // c4 u_params;.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // d main ().{. fl + 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, // oat rgba_1[4];. + 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // bool tmpvar_2;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, // tmpvar_2 = any + 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (equal (v_texcoo + 0x72, 0x64, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, // rd1.xyz, vec3(0. + 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, // 0, 0.0, 0.0)));. + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // if (!(tmpvar_2 + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // )) {. vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // pvar_3;. tmpv + 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, // ar_3 = textureCu + 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, // be (s_texColor, + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, // v_texcoord1.xyz) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. vec4 tmpva + 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // r_4;. tmpvar_ + 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // 4.xyz = tmpvar_3 + 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // .xyz;. tmpvar + 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // _4.w = (tmpvar_3 + 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, // .w * v_color0.w) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // ;. gl_FragCol + 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, // or = tmpvar_4;. + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // return;. };. + 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, // bool tmpvar_5; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x61, 0x6e, // . tmpvar_5 = an + 0x79, 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // y(equal (v_texco + 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, // ord2.xyz, vec3(0 + 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, // .0, 0.0, 0.0))); + 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . if (!(tmpvar_ + 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // 5)) {. float + 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x5f, // shadowSmoothing_ + 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, // 6;. float rgb + 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, // a2_7[4];. vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 4 tmpvar_8;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // tmpvar_8 = textu + 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // reCube (s_texCol + 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, // or, v_texcoord2. + 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, // xyz);. int tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // pvar_9;. tmpv + 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, // ar_9 = int(((v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, // excoord2.w * 4.0 + 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, // ) + 0.5));. r + 0x67, 0x62, 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // gba2_7[0] = tmpv + 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // ar_8.z;. rgba + 0x32, 0x5f, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 2_7[1] = tmpvar_ + 0x38, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x37, // 8.y;. rgba2_7 + 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x78, // [2] = tmpvar_8.x + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x33, 0x5d, // ;. rgba2_7[3] + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x77, 0x3b, 0x0a, 0x20, // = tmpvar_8.w;. + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // vec3 tmpvar_1 + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, // 0;. tmpvar_10 + 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, // = (abs(dFdx(v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, // excoord2.xyz)) + + 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // abs(dFdy(v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // oord2.xyz)));. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // float tmpvar_1 + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, // 1;. tmpvar_11 + 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, // = (((16.0 * . + 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, // sqrt(dot (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // pvar_10, tmpvar_ + 0x31, 0x30, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, // 10)). ) / 1.4 + 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // 14214) * u_param + 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // s.y);. float + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_12;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // mpvar_12 = (0.5 + 0x2d, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, // - (u_params.w * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // tmpvar_11));. + 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, // shadowSmoothing + 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, // _6 = (tmpvar_11 + 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, // * u_params.z);. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, // float edge0_1 + 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x33, 0x20, // 3;. edge0_13 + 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x2d, 0x20, 0x73, // = (tmpvar_12 - s + 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x36, // hadowSmoothing_6 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // );. float tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // var_14;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, // ar_14 = clamp (( + 0x28, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // (rgba2_7[tmpvar_ + 0x39, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x33, 0x29, 0x20, 0x2f, // 9] - edge0_13) / + 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // (. (tmpvar + 0x5f, 0x31, 0x32, 0x20, 0x2b, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, // _12 + shadowSmoo + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x36, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, // thing_6). - + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // edge0_13)), 0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 1.0);. vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_15;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, // mpvar_15.xyz = v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, // _color0.xyz;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, // tmpvar_15.w = ( + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, // (tmpvar_14 * (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_14 * . + 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, // (3.0 - (2.0 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, // mpvar_14)). ) + 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, // ) * v_color0.w); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // . gl_FragColo + 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, // r = tmpvar_15;. + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // return;. };. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, // vec4 tmpvar_16 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x3d, 0x20, // ;. tmpvar_16 = + 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, // textureCube (s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // exColor, v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, // ord0.xyz);. int + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_17;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, // pvar_17 = int((( + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, // v_texcoord0.w * + 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 4.0) + 0.5));. + 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // rgba_1[0] = tmpv + 0x61, 0x72, 0x5f, 0x31, 0x36, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // ar_16.z;. rgba_ + 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, // 1[1] = tmpvar_16 + 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, // .y;. rgba_1[2] + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x2e, 0x78, 0x3b, 0x0a, 0x20, // = tmpvar_16.x;. + 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // rgba_1[3] = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // var_16.w;. floa + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, // t tmpvar_18;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // mpvar_18 = rgba_ + 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // 1[tmpvar_17];. + 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x3b, 0x0a, // vec3 tmpvar_19;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x61, // tmpvar_19 = (a + 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // bs(dFdx(v_texcoo + 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, // rd0.xyz)) + abs( + 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // dFdy(v_texcoord0 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // .xyz)));. float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_20;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, // pvar_20 = (((16. + 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, // 0 * . sqrt(do + 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x2c, 0x20, 0x74, 0x6d, // t (tmpvar_19, tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, // pvar_19)). ) / + 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, // 1.414214) * u_pa + 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // rams.y);. float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_21;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, // pvar_21 = (0.5 - + 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, // (u_params.w * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // mpvar_20));. fl + 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x32, 0x3b, 0x0a, 0x20, 0x20, // oat edge0_22;. + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // edge0_22 = (tmpv + 0x61, 0x72, 0x5f, 0x32, 0x31, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_21 - tmpvar_2 + 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // 0);. float tmpv + 0x61, 0x72, 0x5f, 0x32, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_23;. tmpvar_ + 0x32, 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, // 23 = clamp (((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // pvar_18 - edge0_ + 0x32, 0x32, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, // 22) / (. (tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_21 + tmpvar_ + 0x32, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, // 20). - edge0_2 + 0x32, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // 2)), 0.0, 1.0);. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x34, // float edge0_24 + 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x28, // ;. edge0_24 = ( + 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x29, // 0.5 - tmpvar_20) + 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ;. float tmpvar + 0x5f, 0x32, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x35, // _25;. tmpvar_25 + 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // = clamp (((tmpv + 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x34, // ar_18 - edge0_24 + 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, // ) / (. (0.5 + + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, // tmpvar_20). - + 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x34, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, // edge0_24)), 0.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, // , 1.0);. vec4 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // mpvar_26;. tmpv + 0x61, 0x72, 0x5f, 0x32, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x20, // ar_26.xyz = mix + 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, // (v_color1.xyz, v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x74, 0x6d, // _color0.xyz, (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x35, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // pvar_25 * (tmpva + 0x72, 0x5f, 0x32, 0x35, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, // r_25 * . (3.0 + 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // - (2.0 * tmpvar + 0x5f, 0x32, 0x35, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, // _25)). )));. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x36, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, // mpvar_26.w = ((t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x33, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // mpvar_23 * (tmpv + 0x61, 0x72, 0x5f, 0x32, 0x33, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, // ar_23 * . (3. + 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 0 - (2.0 * tmpva + 0x72, 0x5f, 0x32, 0x33, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, // r_23)). )) * v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // color0.w);. gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv + 0x61, 0x72, 0x5f, 0x32, 0x36, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ar_26;.}... +}; +static const uint8_t fs_font_distance_field_outline_drop_shadow_image_essl[3112] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x0b, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ighp vec4 v_colo + 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // r1;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // d0;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // d1;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, // d2;.uniform lowp + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, // samplerCube s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // exColor;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // highp vec4 u_pa + 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // rams;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // ().{. lowp floa + 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x62, // t rgba_1[4];. b + 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ool tmpvar_2;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, 0x28, 0x65, // tmpvar_2 = any(e + 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // qual (v_texcoord + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.xyz, vec3(0.0, + 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // 0.0, 0.0)));. + 0x69, 0x66, 0x20, 0x28, 0x21, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, // if (!(tmpvar_2)) + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // {. lowp vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_3;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // mpvar_3 = textur + 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // eCube (s_texColo + 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x2e, 0x78, // r, v_texcoord1.x + 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // yz);. lowp ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, // c4 tmpvar_4;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_4.xyz = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_3.xyz;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, // tmpvar_4.w = ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, // tmpvar_3.w * v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, // olor0.w);. gl + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _FragColor = tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // var_4;. retur + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, // n;. };. bool t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_5;. tmpva + 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, // r_5 = any(equal + 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord2.xyz + 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // , vec3(0.0, 0.0, + 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, // 0.0)));. if (! + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, // (tmpvar_5)) {. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x68, // highp float sh + 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x36, 0x3b, // adowSmoothing_6; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // . lowp float + 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // rgba2_7[4];. + 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec4 tmpvar + 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, // _8;. tmpvar_8 + 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, // = textureCube ( + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, // s_texColor, v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord2.xyz);. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp int tmpv + 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ar_9;. tmpvar + 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // _9 = int(((v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, // coord2.w * 4.0) + 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, // + 0.5));. rgb + 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // a2_7[0] = tmpvar + 0x5f, 0x38, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, // _8.z;. rgba2_ + 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, // 7[1] = tmpvar_8. + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x32, // y;. rgba2_7[2 + 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x78, 0x3b, 0x0a, // ] = tmpvar_8.x;. + 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x32, 0x5f, 0x37, 0x5b, 0x33, 0x5d, 0x20, 0x3d, // rgba2_7[3] = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, // tmpvar_8.w;. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp vec3 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ar_10;. tmpva + 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, // r_10 = (abs(dFdx + 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord2.xyz + 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, // )) + abs(dFdy(v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, // texcoord2.xyz))) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // ;. highp floa + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, // t tmpvar_11;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, // tmpvar_11 = ((( + 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, // 16.0 * . sq + 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // rt(dot (tmpvar_1 + 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x29, 0x29, 0x0a, 0x20, // 0, tmpvar_10)). + 0x20, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, 0x29, // ) / 1.414214) + 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, 0x0a, // * u_params.y);. + 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // highp float + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_12;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // mpvar_12 = (0.5 + 0x2d, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, // - (u_params.w * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // tmpvar_11));. + 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, // shadowSmoothing + 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, // _6 = (tmpvar_11 + 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x0a, 0x20, // * u_params.z);. + 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // highp float e + 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x64, 0x67, // dge0_13;. edg + 0x65, 0x30, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // e0_13 = (tmpvar_ + 0x31, 0x32, 0x20, 0x2d, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, 0x74, // 12 - shadowSmoot + 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, // hing_6);. low + 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // p float tmpvar_1 + 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, // 4;. tmpvar_14 + 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x72, 0x67, 0x62, 0x61, // = clamp (((rgba + 0x32, 0x5f, 0x37, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x5d, 0x20, 0x2d, 0x20, // 2_7[tmpvar_9] - + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x33, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, // edge0_13) / (. + 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x2b, // (tmpvar_12 + + 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, // shadowSmoothing + 0x5f, 0x36, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // _6). - edge0 + 0x5f, 0x31, 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // _13)), 0.0, 1.0) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // ;. lowp vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, // tmpvar_15;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, // mpvar_15.xyz = v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, // _color0.xyz;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, // tmpvar_15.w = ( + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, // (tmpvar_14 * (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_14 * . + 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, // (3.0 - (2.0 * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, // mpvar_14)). ) + 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, // ) * v_color0.w); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // . gl_FragColo + 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, // r = tmpvar_15;. + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // return;. };. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec4 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_16;. tmpvar_ + 0x31, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, // 16 = textureCube + 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, // texcoord0.xyz);. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp int tmpv + 0x61, 0x72, 0x5f, 0x31, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_17;. tmpvar_ + 0x31, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // 17 = int(((v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, // coord0.w * 4.0) + 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // + 0.5));. rgba_ + 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, // 1[0] = tmpvar_16 + 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, // .z;. rgba_1[1] + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x2e, 0x79, 0x3b, 0x0a, 0x20, // = tmpvar_16.y;. + 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // rgba_1[2] = tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // var_16.x;. rgba + 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // _1[3] = tmpvar_1 + 0x36, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 6.w;. lowp floa + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, // t tmpvar_18;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // mpvar_18 = rgba_ + 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x37, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // 1[tmpvar_17];. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec3 tmpva + 0x72, 0x5f, 0x31, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_19;. tmpvar_1 + 0x39, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, // 9 = (abs(dFdx(v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, // texcoord0.xyz)) + 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // + abs(dFdy(v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // coord0.xyz)));. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // highp float tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // var_20;. tmpvar + 0x5f, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, // _20 = (((16.0 * + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, // . sqrt(dot (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x39, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // mpvar_19, tmpvar + 0x5f, 0x31, 0x39, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, // _19)). ) / 1.41 + 0x34, 0x32, 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // 4214) * u_params + 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, // .y);. highp flo + 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x31, 0x3b, 0x0a, 0x20, 0x20, // at tmpvar_21;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, // tmpvar_21 = (0.5 + 0x20, 0x2d, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, // - (u_params.w * + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_20));. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, // highp float edge + 0x30, 0x5f, 0x32, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x32, // 0_22;. edge0_22 + 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x31, 0x20, 0x2d, 0x20, // = (tmpvar_21 - + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, // tmpvar_20);. lo + 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // wp float tmpvar_ + 0x32, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x33, 0x20, // 23;. tmpvar_23 + 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // = clamp (((tmpva + 0x72, 0x5f, 0x31, 0x38, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x32, 0x29, // r_18 - edge0_22) + 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // / (. (tmpvar + 0x5f, 0x32, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x30, 0x29, // _21 + tmpvar_20) + 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x32, 0x29, 0x29, // . - edge0_22)) + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, // , 0.0, 1.0);. h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // ighp float edge0 + 0x5f, 0x32, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x34, 0x20, // _24;. edge0_24 + 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = (0.5 - tmpvar_ + 0x32, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // 20);. lowp floa + 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, // t tmpvar_25;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, // mpvar_25 = clamp + 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x38, 0x20, 0x2d, 0x20, // (((tmpvar_18 - + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, 0x34, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, // edge0_24) / (. + 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // (0.5 + tmpvar_ + 0x32, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x32, // 20). - edge0_2 + 0x34, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // 4)), 0.0, 1.0);. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec4 tmpv + 0x61, 0x72, 0x5f, 0x32, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_26;. tmpvar_ + 0x32, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x76, 0x5f, // 26.xyz = mix (v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x5f, 0x63, 0x6f, // color1.xyz, v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // lor0.xyz, (tmpva + 0x72, 0x5f, 0x32, 0x35, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // r_25 * (tmpvar_2 + 0x35, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, // 5 * . (3.0 - + 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x35, // (2.0 * tmpvar_25 + 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // )). )));. tmpv + 0x61, 0x72, 0x5f, 0x32, 0x36, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // ar_26.w = ((tmpv + 0x61, 0x72, 0x5f, 0x32, 0x33, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_23 * (tmpvar_ + 0x32, 0x33, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, // 23 * . (3.0 - + 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // (2.0 * tmpvar_2 + 0x33, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // 3)). )) * v_col + 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // or0.w);. gl_Fra + 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // gColor = tmpvar_ + 0x32, 0x36, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 26;.}... +}; +static const uint8_t fs_font_distance_field_outline_drop_shadow_image_spv[4110] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH..gz........u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, // ..s_texColor0... + 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0xd0, 0x0f, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ............#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x91, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ................ + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL + 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x39, 0x01, // ......main....9. + 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x45, 0x01, // ..<...?...B...E. + 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, // ..H...[......... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, // ................ + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. + 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......3...s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... + 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..6...s_texColor + 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xba, 0x00, // Texture......... + 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, // ..UniformBlock.. + 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0xbc, 0x00, // params.......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x39, 0x01, 0x00, 0x00, 0x67, 0x6c, // ..........9...gl + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // _FragCoord...... + 0x05, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // ..<...v_color0.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ......?...v_colo + 0x72, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x42, 0x01, 0x00, 0x00, 0x76, 0x5f, // r1........B...v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x01, // texcoord0.....E. + 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, // ..v_texcoord1... + 0x05, 0x00, 0x48, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ..H...v_texcoord + 0x32, 0x00, 0x05, 0x00, 0x06, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 2.....[...bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, // ragData0..G...3. + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, // ..".......G...3. + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, // ..!.......G...6. + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, // ..".......G...6. + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xba, 0x00, // ..!.......H..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ......#.......G. + 0x03, 0x00, 0xba, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbc, 0x00, // ..........G..... + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbc, 0x00, // ..".......G..... + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x39, 0x01, // ..!.......G...9. + 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x01, // ..........G...<. + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x01, // ..........G...?. + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x01, // ..........G...B. + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x01, // ..........G...E. + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x01, // ..........G...H. + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5b, 0x01, // ..........G...[. + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. + 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .. ........... . + 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..2...........;. + 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // ..2...3....... . + 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..5...........;. + 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ..5...6......... + 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..9... .......+. + 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..9...:.......+. + 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..9...>......... + 0x03, 0x00, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..B.......+..... + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, // ..[.......,..... + 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, // ..^...[...[...[. + 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ......q... ..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, // ..+...q...r..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+............. + 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, // .@+............. + 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x04, 0x00, // .?+...q......... + 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x98, 0x00, // ................ + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, // .. ............. + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...q......... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x01, 0x00, // ..+...q......... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x02, 0x00, // ..+...9......... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+...q......... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x03, 0x00, // ..+...9......... + 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xba, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;. + 0x04, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . + 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..8...........;. + 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..8...9.......;. + 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..8...<.......;. + 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..8...?.......;. + 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..8...B.......;. + 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..8...E.......;. + 0x04, 0x00, 0x38, 0x01, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..8...H....... . + 0x04, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..Z...........;. + 0x04, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..Z...[.......+. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x36, 0x00, // ............5A6. + 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x9a, 0x00, // ..........;..... + 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x9a, 0x00, // ..........;..... + 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..........=..... + 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..4...3...=..... + 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..7...6...=..... + 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..=...<...=..... + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..@...?...=..... + 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..C...B...=..... + 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..F...E...=..... + 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3f, 0x02, // ..I...H.......?. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x03, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x9c, 0x01, // ................ + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..........O..... + 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00, // ......F...F..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0x14, 0x00, // ................ + 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x9a, 0x00, // ..L.......^..... + 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0xa8, 0x00, // ..........L..... + 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0xa2, 0x01, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0xf7, 0x00, // ................ + 0x03, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa2, 0x01, // ................ + 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa3, 0x01, // ................ + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa6, 0x01, 0x00, 0x00, 0x46, 0x01, // ..O...........F. + 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..F............. + 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x42, 0x00, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x37, 0x00, // ..V...B...S...7. + 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x55, 0x02, // ..4...W.......U. + 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0xa6, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..S.......Q..... + 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, // ......U.......Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x03, 0x00, // ..........=..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0xab, 0x01, // ................ + 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xaf, 0x01, // ......Q......... + 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..U.......Q..... + 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ......U.......Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x02, 0x00, // ..........U..... + 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, 0xaf, 0x01, // ..P............. + 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0xf9, 0x00, // ................ + 0x02, 0x00, 0x3f, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x4f, 0x00, // ..?...........O. + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb5, 0x01, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x49, 0x01, // ..........I...I. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, // ................ + 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5a, 0x02, 0x00, 0x00, 0xb5, 0x01, 0x00, 0x00, 0x5e, 0x00, // ......Z.......^. + 0x00, 0x00, 0x9a, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0x5a, 0x02, // ..............Z. + 0x00, 0x00, 0xa8, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0xb7, 0x01, // ................ + 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, // ................ + 0x04, 0x00, 0xb8, 0x01, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0xf8, 0x00, // ................ + 0x02, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xbd, 0x01, // ......O......... + 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..I...I......... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x42, 0x00, 0x00, 0x00, 0x61, 0x02, // ......V...B...a. + 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, // ..7...4...W..... + 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x61, 0x02, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x51, 0x00, // ..c...a.......Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x03, 0x00, // ..........I..... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0xc0, 0x01, // ................ + 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc2, 0x01, // ................ + 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x39, 0x00, // ..........n...9. + 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, // ......c.......A. + 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x3e, 0x00, // .. ...........>. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc6, 0x01, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0x51, 0x00, // ..>...........Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x01, 0x00, // ..........c..... + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x85, 0x01, // ..A... ......... + 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc9, 0x01, 0x00, 0x00, 0xc8, 0x01, // ..:...>......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0x63, 0x02, // ..Q...........c. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0xcc, 0x01, // ......A... ..... + 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xcc, 0x01, // ..........>..... + 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xce, 0x01, // ......Q......... + 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, // ..c.......A... . + 0x00, 0x00, 0xcf, 0x01, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. + 0x03, 0x00, 0xcf, 0x01, 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, // ..........A... . + 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0x3d, 0x00, // ..............=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x4f, 0x00, // ..............O. + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x49, 0x01, // ..........I...I. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, // ................ + 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x0c, 0x00, // ................ + 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, // ..............B. + 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd8, 0x01, // ................ + 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xbd, 0x00, // ..........A..... + 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xa0, 0x00, // ..........>..... + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0xd9, 0x01, // ..=............. + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0xd8, 0x01, // ................ + 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xdc, 0x01, // ......A......... + 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......>...r...=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdf, 0x01, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, 0xdb, 0x01, // ................ + 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x95, 0x00, // ................ + 0x00, 0x00, 0xdf, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xe3, 0x01, // ......A......... + 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......>.......=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, 0x85, 0x00, // ................ + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0xe4, 0x01, // ................ + 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xe1, 0x01, // ................ + 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xeb, 0x01, // ................ + 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xe8, 0x01, // ..........1..... + 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0xf2, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ......=......... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, 0xf2, 0x01, // ................ + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x3d, 0x01, // ..Q...........=. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf5, 0x01, // ......Q......... + 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..=.......Q..... + 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, // ......=.......P. + 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xf7, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0xf5, 0x01, // ................ + 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3f, 0x02, // ..............?. + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ..........O..... + 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, // ......C...C..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x42, 0x00, // ..........V...B. + 0x00, 0x00, 0x6a, 0x02, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x57, 0x00, // ..j...7...4...W. + 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x6a, 0x02, 0x00, 0x00, 0xfc, 0x01, // ......l...j..... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x43, 0x01, // ..Q...........C. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, // ..............n. + 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x51, 0x00, // ..9...........Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x02, 0x00, // ..........l..... + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x90, 0x01, // ..A... ......... + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x05, 0x02, 0x00, 0x00, 0x04, 0x02, // ..>...>......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x6c, 0x02, // ..Q...........l. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x02, // ......A... ..... + 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x08, 0x02, // ......:...>..... + 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x02, // ......Q......... + 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, // ..l.......A... . + 0x00, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. + 0x03, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0x0d, 0x02, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, // ......l.......A. + 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0xa9, 0x00, // .. ............. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x0d, 0x02, 0x00, 0x00, 0x41, 0x00, // ..>...........A. + 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, // .. ............. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x00, 0x10, 0x02, // ..=............. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x43, 0x01, // ..O...........C. + 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..C............. + 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x13, 0x02, // ................ + 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // ..B............. + 0x00, 0x00, 0x17, 0x02, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0x41, 0x00, // ..............A. + 0x06, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. + 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x19, 0x02, // ......=......... + 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1a, 0x02, // ................ + 0x00, 0x00, 0x17, 0x02, 0x00, 0x00, 0x19, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xbd, 0x00, // ..........A..... + 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x72, 0x00, // ..........>...r. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x1b, 0x02, // ..=............. + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0x1c, 0x02, // ................ + 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x02, // .............. . + 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x81, 0x00, // ..#... ......... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x1a, 0x02, // ......&... ..... + 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x01, 0x00, // ..........(..... + 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x11, 0x02, // ..1...#...&..... + 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x00, 0x00, 0x95, 0x00, // ..........*..... + 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2c, 0x02, // ..............,. + 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2a, 0x02, // ..........1...*. + 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x11, 0x02, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, // ..,.......P..... + 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x2e, 0x02, // ..0............. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x40, 0x01, // ..O.......2...@. + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..@............. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x3d, 0x01, // ..O.......4...=. + 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ..=............. + 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, 0x01, 0x00, // ..........r..... + 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x30, 0x02, // ......2...4...0. + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x3d, 0x01, // ..Q.......8...=. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, 0x02, // ..............9. + 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..(...8...Q..... + 0x00, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..:...r.......Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, 0x01, 0x00, // ......;...r..... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x72, 0x02, // ..Q.......<...r. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x02, // ......P.......=. + 0x00, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x39, 0x02, // ..:...;...<...9. + 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3f, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3f, 0x02, // ......?.......?. + 0x00, 0x00, 0xf5, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0xb2, 0x01, // ................ + 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0xf7, 0x01, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x3d, 0x02, // ..............=. + 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x90, 0x02, // ......>...[..... + 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ......8....... +}; +static const uint8_t fs_font_distance_field_outline_drop_shadow_image_dx9[1775] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x06, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, // ................ + 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, // ,.CTAB.......... + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, // ..............|. + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, // ..D...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, // ......`......... + 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..l.......s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // olor............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, // ......u_params.. + 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // ..ps_3_0.Microso + 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad + 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, // er Compiler 10.1 + 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ..Q............. + 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, // ........@.Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, // .....?.......@.. + 0x00, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xf3, 0x04, 0x35, 0x41, 0x00, 0x00, // .?Q.........5A.. + 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ....@@...?...... + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ + 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ + 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x03, 0x00, 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, // ................ + 0x02, 0x80, 0x04, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, // ................ + 0x0f, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0x9c, 0x02, 0x00, // ..X............. + 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ....U........... + 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x29, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, // ......)......... + 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x2a, 0x00, // U...........U.*. + 0x00, 0x00, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x03, 0x00, 0xe4, 0x90, 0x00, 0x08, // ..B............. + 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x08, 0x80, 0x01, 0x00, 0xff, 0x80, 0x00, 0x00, // ................ + 0xff, 0x90, 0x2b, 0x00, 0x00, 0x00, 0x29, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, // ..+...)......... + 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x2a, 0x00, // U.............*. + 0x00, 0x00, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x04, 0x00, 0xe4, 0x9c, 0x02, 0x00, // ..X............. + 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ....U........... + 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x29, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, // ......)......... + 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x2a, 0x00, // U.............*. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x04, 0x00, 0xff, 0x90, 0x02, 0x00, // ................ + 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0x55, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x02, 0x00, // U.X............. + 0x55, 0xa0, 0x02, 0x00, 0x00, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // U.....X......... + 0x55, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x00, 0x00, 0xff, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // U...U........... + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ....U........... + 0x02, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, // ........U....... + 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x01, 0x00, // ....U.....X..... + 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x8c, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x42, 0x00, // ............U.B. + 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x04, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x02, 0x00, 0xc6, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x5b, 0x00, // ..............[. + 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x04, 0x00, 0xe4, 0x90, 0x5c, 0x00, 0x00, 0x02, 0x02, 0x00, // ................ + 0x07, 0x80, 0x04, 0x00, 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x8b, 0x02, 0x00, 0xe4, 0x8b, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x05, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x01, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x02, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x08, 0x80, 0x00, 0x00, 0xff, 0xa0, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, 0xff, 0x80, 0x04, 0x00, // ................ + 0x00, 0x04, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, // ................ + 0xff, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, // ................ + 0xaa, 0x81, 0x00, 0x00, 0xff, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x81, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U........... + 0xaa, 0x81, 0x01, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, // ................ + 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // U...........U... + 0x55, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, // U...........U... + 0x55, 0xa0, 0x03, 0x00, 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // U............... + 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, // ....U........... + 0x55, 0x80, 0x00, 0x00, 0xff, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, // U............... + 0xe4, 0x90, 0x2b, 0x00, 0x00, 0x00, 0x29, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, // ..+...)......... + 0x55, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, // U.*............. + 0xff, 0x90, 0x02, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xff, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ......X......... + 0x55, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x02, 0x00, 0x00, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // U...U.....X..... + 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x02, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x58, 0x00, // ..............X. + 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, // ................ + 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x00, 0x08, // U.B............. + 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xc6, 0x80, 0x00, 0x00, // ................ + 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x80, 0x02, 0x00, 0x90, 0x90, 0x5c, 0x00, // ..[............. + 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x0e, 0x80, 0x00, 0x00, 0xe4, 0x8b, 0x01, 0x00, 0x90, 0x8b, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x02, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // ....U........... + 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // U...........U... + 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, // U...........U... + 0x00, 0xa1, 0x03, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x81, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // U............... + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x01, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x00, 0x00, 0xff, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x03, 0x00, 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ....U........... + 0x04, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, // ................ + 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x91, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, // ....U........... + 0x08, 0x80, 0x02, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xff, 0xa0, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, 0xff, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x04, 0x00, // ....U........... + 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x00, 0x00, // ........U....... + 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, // ............U... + 0xf4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x03, 0x00, // ............U... + 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // ............U... + 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0xff, 0x90, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, // ..+...+........ +}; +static const uint8_t fs_font_distance_field_outline_drop_shadow_image_dx11[2735] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH..gz........u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, // ..s_texColor0... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x0a, 0x00, 0x00, 0x44, // r0.............D + 0x58, 0x42, 0x43, 0x0a, 0x76, 0x6e, 0x1c, 0xad, 0x10, 0xc2, 0xbe, 0x43, 0xeb, 0x63, 0x26, 0x8a, // XBC.vn.....C.c&. + 0x5a, 0x50, 0x92, 0x01, 0x00, 0x00, 0x00, 0x5c, 0x0a, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ZP............., + 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0xb4, // ...........ISGN. + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x07, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x07, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, // ...........SV_PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, // SITION.COLOR.TEX + 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, // COORD..OSGN,.... + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....... ........ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, // ...............S + 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x38, // V_TARGET...SHDR8 + 0x09, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, // ...@...N...Y...F + 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, // . .........Z.... + 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, // `......X0...p... + 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, // ...UU..b........ + 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, // ...b...r.......b + 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, // ...........b...r + 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x05, // .......b........ + 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, // ...e.... ......h + 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, // .......i........ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x04, // .......i........ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, // ...........r.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, // ...F........@... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, // ...............< + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, // ...........<.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // .......*........ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...E...........F + 0x12, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F~....... + 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, // `......8.... ... + 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, // ...:.......:.... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...6...r ......F + 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x18, // .......>........ + 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, // ...r.......F.... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....@........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......<........ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...<...........* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, // ................ + 0x00, 0x00, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...........E.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, // .......F.......F + 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ~.......`......2 + 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x05, // ...........:.... + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.....@.@... + 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, // ..?............. + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // .......*.......6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // ....0 .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, // ....0 .........: + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......6........ + 0x00, 0x00, 0x00, 0x0a, 0x30, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, // ....0 .......... + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ................ + 0x19, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, // ...........r.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, // ...F............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, // .......V........ + 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, // ...........K..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 + 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..... .........8 + 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x32, 0x00, 0x00, 0x0b, 0x42, // ....@....5A2...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // .......:. .A.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x0b, 0x82, 0x00, 0x10, 0x00, 0x00, // @.....?2........ + 0x00, 0x00, 0x00, 0x2a, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...*. .A........ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // ...........*.... + 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...2...".......* + 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // . .............. + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x32, // ...*...........2 + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, // ...F..........." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, // ........@.....?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..?...?...?..... + 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...8 ........... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ...............2 + 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.......@... + 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // .@@8............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, // ...........8.... + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // ..............: + 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, // .......6...r ... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, // ...F.......>.... + 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...E...........F + 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F~....... + 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x01, // `......2........ + 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, // ...:........@... + 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, // ..@.@.....?..... + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ....0 .........* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, // .......6....0 .. + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, // ....0 .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x01, // .......6....0 .. + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // .......:.......6 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x30, 0x20, 0x04, 0x01, // ............0 .. + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, // ................ + 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x03, // ...r.......F.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, // ...............V + 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x80, 0x81, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... + 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...K..."........ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, // .......8...".... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, // ............. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, // .......8...B.... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, // ............@... + 0x04, 0x35, 0x41, 0x32, 0x00, 0x00, 0x0b, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // .5A2...B.......: + 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // . .A...........* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, // ........@.....?2 + 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, // ...............A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x2a, // ........@....5A* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, 0x00, // .......2...B.... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, // ............@... + 0x04, 0x35, 0x41, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, // .5A*...........B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // .......:...A.... + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x82, // ...*............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // .......:...A.... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x42, // ...............B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, // ........@.....?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, // ..?...?...?*.... + 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...8 ..B.......* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // .......:.......2 + 0x00, 0x00, 0x09, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // ...........*.... + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.......@... + 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // .@@8...B.......* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // .......*.......8 + 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // ...B.......*.... + 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x82, // ...:.......2.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@....5A.@... + 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ..?2..."........ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, // ........@....5A. + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, // @.....?....2.... + 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......A.......F + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // ....@.....?...?. + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..?...?........8 + 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ............... + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, // ...........2..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, // @.......@....@@8 + 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, // ...........8.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x01, // ...........r.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x80, 0x41, // ...F.......F...A + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x72, 0x20, 0x10, 0x00, 0x00, // .......2...r ... + 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, // ...........F.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, // ...F.......8.... + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // ......*.......: + 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // .......>....... +}; +static const uint8_t fs_font_distance_field_outline_drop_shadow_image_mtl[3365] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x9e, 0x67, 0x7a, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH..gz........s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, // .......u_params. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..........s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x0c, // olor............ + 0x00, 0x00, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, // ..#pragma clang + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, // diagnostic ignor + 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x70, 0x72, // ed "-Wmissing-pr + 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, // ototypes".#pragm + 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, // a clang diagnost + 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, // ic ignored "-Wmi + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x23, // ssing-braces"..# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x3c, // etal;..template< + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, // typename T, size + 0x5f, 0x74, 0x20, 0x4e, 0x75, 0x6d, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, // _t Num>.struct s + 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x7b, 0x0a, // pvUnsafeArray.{. + 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x4e, // T elements[N + 0x75, 0x6d, 0x20, 0x3f, 0x20, 0x4e, 0x75, 0x6d, 0x20, 0x3a, 0x20, 0x31, 0x5d, 0x3b, 0x0a, 0x20, // um ? Num : 1];. + 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, // . thread T + 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, // & operator [] (s + 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, // ize_t pos) threa + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // d. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, // constexpr const + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // thread T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0a, // s) const thread. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // {. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, // turn elements[po + 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, // s];. }. . + 0x20, 0x20, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, // device T& ope + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, // rator [] (size_t + 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, // pos) device. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // {. retur + 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, // n elements[pos]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // . }. const + 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, // expr const devic + 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, // e T& operator [] + 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, 0x6f, // (size_t pos) co + 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, // nst device. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, // . return + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, // elements[pos];. + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, // }. . co + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, // nstexpr const co + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // nstant T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // s) const constan + 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // . threadgroup + 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, // T& operator [] + 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, // (size_t pos) thr + 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // eadgroup. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, // return el + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ements[pos];. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, // }. constexpr + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, // const threadgro + 0x75, 0x70, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, // up T& operator [ + 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, // ] (size_t pos) c + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // onst threadgroup + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, // . {. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, // eturn elements[p + 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // os];. }.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // ams;.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, // {. float4 bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, // x_FragData0 [[co + 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, // lor(0)]];.};..st + 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ruct xlatMtlMain + 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _in.{. float4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // v_color0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, // loat4 v_color1 [ + 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // [user(locn1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // float4 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn2)]];. floa + 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x5b, // t4 v_texcoord1 [ + 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // [user(locn3)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // float4 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord2 [[user(lo + 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, // cn4)]];.};..frag + 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ment xlatMtlMain + 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // _out xlatMtlMain + 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, // (xlatMtlMain_in + 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, // in [[stage_in]], + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, // constant _Globa + 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // l& _mtl_u [[buff + 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // er(0)]], texture + 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, // cube<float> s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // xColor [[texture + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, // (0)]], sampler s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, // [[sampler(0)]]) + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // .{. xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, // in_out out = {}; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x35, 0x36, // . float4 _656 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // ;. do. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x61, 0x6e, 0x79, 0x28, // if (!any( + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x2e, 0x78, // in.v_texcoord1.x + 0x79, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, // yz == float3(0.0 + 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, // ))). {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // float4 + 0x20, 0x5f, 0x35, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // _597 = s_texCol + 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // or.sample(s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, // olorSampler, in. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, // v_texcoord1.xyz) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, // ;. _6 + 0x35, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x35, 0x39, 0x37, // 56 = float4(_597 + 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x35, 0x39, 0x37, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x69, // .xyz, _597.w * i + 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, // n.v_color0.w);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, // break + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // ;. }. + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x61, 0x6e, 0x79, 0x28, 0x69, 0x6e, 0x2e, // if (!any(in. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, // v_texcoord2.xyz + 0x3d, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, // == float3(0.0))) + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // . {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, // float4 _6 + 0x31, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, // 11 = s_texColor. + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // sample(s_texColo + 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, // rSampler, in.v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, // excoord2.xyz);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, // spvUn + 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, // safeArray<float, + 0x20, 0x34, 0x3e, 0x20, 0x5f, 0x33, 0x38, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 4> _389;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x38, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, // _389[0] = + 0x5f, 0x36, 0x31, 0x31, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _611.z;. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x38, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x36, // _389[1] = _6 + 0x31, 0x31, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 11.y;. + 0x20, 0x20, 0x5f, 0x33, 0x38, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x31, 0x31, // _389[2] = _611 + 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .x;. + 0x5f, 0x33, 0x38, 0x39, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x31, 0x31, 0x2e, 0x77, // _389[3] = _611.w + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // ;. fl + 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x37, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, // oat _475 = (leng + 0x74, 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, // th(fwidth(in.v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, // excoord2.xyz)) * + 0x20, 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, 0x37, 0x30, 0x38, 0x33, 0x30, 0x35, 0x33, 0x35, 0x38, // 11.313708305358 + 0x38, 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // 887) * _mtl_u.u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // params.y;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x31, // float _481 + 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // = 0.5 - (_mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x5f, 0x34, // .u_params.w * _4 + 0x37, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 75);. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x34, // float _485 = _4 + 0x37, 0x35, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // 75 * _mtl_u.u_pa + 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // rams.z;. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _656 = float + 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, // 4(in.v_color0.xy + 0x7a, 0x2c, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x5f, 0x34, // z, smoothstep(_4 + 0x38, 0x31, 0x20, 0x2d, 0x20, 0x5f, 0x34, 0x38, 0x35, 0x2c, 0x20, 0x5f, 0x34, 0x38, 0x31, 0x20, // 81 - _485, _481 + 0x2b, 0x20, 0x5f, 0x34, 0x38, 0x35, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x39, 0x5b, 0x69, 0x6e, 0x74, // + _485, _389[int + 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, // ((in.v_texcoord2 + 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, // .w * 4.0) + 0.5) + 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ]) * in.v_color0 + 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .w);. + 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // }. float4 + 0x20, 0x5f, 0x36, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // _620 = s_texCol + 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // or.sample(s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, // olorSampler, in. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, // v_texcoord0.xyz) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x35, // ;. int _5 + 0x31, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, // 14 = int((in.v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, // excoord0.w * 4.0 + 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ) + 0.5);. + 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, // spvUnsafeArray + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x34, 0x3e, 0x20, 0x5f, 0x34, 0x30, 0x30, 0x3b, // <float, 4> _400; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x30, 0x30, 0x5b, 0x30, 0x5d, // . _400[0] + 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, 0x30, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // = _620.z;. + 0x20, 0x20, 0x20, 0x5f, 0x34, 0x30, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, // _400[1] = _62 + 0x30, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x30, // 0.y;. _40 + 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, 0x30, 0x2e, 0x78, 0x3b, 0x0a, 0x20, // 0[2] = _620.x;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x30, 0x30, 0x5b, 0x33, 0x5d, 0x20, 0x3d, // _400[3] = + 0x20, 0x5f, 0x36, 0x32, 0x30, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _620.w;. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x6c, // float _538 = (l + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x69, 0x6e, 0x2e, // ength(fwidth(in. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, // v_texcoord0.xyz) + 0x29, 0x20, 0x2a, 0x20, 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, 0x37, 0x30, 0x38, 0x33, 0x30, 0x35, // ) * 11.313708305 + 0x33, 0x35, 0x38, 0x38, 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // 358887) * _mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, // .u_params.y;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x34, 0x34, 0x20, // float _544 + 0x3d, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // = 0.5 - (_mtl_u. + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x33, // u_params.w * _53 + 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x35, 0x36, // 8);. _656 + 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x69, 0x6e, // = float4(mix(in + 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x69, // .v_color1.xyz, i + 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, // n.v_color0.xyz, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, // float3(smoothste + 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x35, 0x33, 0x38, 0x2c, 0x20, 0x30, 0x2e, // p(0.5 - _538, 0. + 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x35, 0x33, 0x38, 0x2c, 0x20, 0x5f, 0x34, 0x30, 0x30, 0x5b, 0x5f, // 5 + _538, _400[_ + 0x35, 0x31, 0x34, 0x5d, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, // 514]))), smooths + 0x74, 0x65, 0x70, 0x28, 0x5f, 0x35, 0x34, 0x34, 0x20, 0x2d, 0x20, 0x5f, 0x35, 0x33, 0x38, 0x2c, // tep(_544 - _538, + 0x20, 0x5f, 0x35, 0x34, 0x34, 0x20, 0x2b, 0x20, 0x5f, 0x35, 0x33, 0x38, 0x2c, 0x20, 0x5f, 0x34, // _544 + _538, _4 + 0x30, 0x30, 0x5b, 0x5f, 0x35, 0x31, 0x34, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, // 00[_514]) * in.v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _color0.w);. + 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, // break;. } + 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, 0x20, // while(false);. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, // out.bgfx_Frag + 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x35, 0x36, 0x3b, 0x0a, 0x20, 0x20, // Data0 = _656;. + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, // return out;.}. + 0x0a, 0x00, 0x00, 0x30, 0x00, // ...0. +}; +extern const uint8_t* fs_font_distance_field_outline_drop_shadow_image_pssl; +extern const uint32_t fs_font_distance_field_outline_drop_shadow_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_drop_shadow_image.sc b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_drop_shadow_image.sc new file mode 100644 index 00000000000..cd88e2b0ecd --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_drop_shadow_image.sc @@ -0,0 +1,65 @@ +$input v_color0, v_color1, v_texcoord0, v_texcoord1, v_texcoord2 + +#include "../../common/common.sh" + +SAMPLERCUBE(s_texColor, 0); + +uniform vec4 u_dropShadowColor; +uniform vec4 u_params; + +#define u_distanceMultiplier u_params.y +#define u_dropShadowSoftener u_params.z +#define u_outlineWidth u_params.w + +void main() +{ + if (!any(equal(v_texcoord1.xyz, vec3(0.0, 0.0, 0.0)))) + { + vec4 imageColor = textureCube(s_texColor, v_texcoord1.xyz); + gl_FragColor = vec4(imageColor.xyz, imageColor.w * v_color0.w); + return; + } + + if (!any(equal(v_texcoord2.xyz, vec3(0.0, 0.0, 0.0)))) + { + vec4 shadowTexCoord = v_texcoord2; + vec4 shadowDistanceColor = textureCube(s_texColor, shadowTexCoord.xyz); + int index2 = int(shadowTexCoord.w*4.0 + 0.5); + float rgba2[4]; + rgba2[0] = shadowDistanceColor.z; + rgba2[1] = shadowDistanceColor.y; + rgba2[2] = shadowDistanceColor.x; + rgba2[3] = shadowDistanceColor.w; + float shadowDistance = rgba2[index2]; + + float shadowSmoothing = 16.0 * length(fwidth(shadowTexCoord.xyz)) / sqrt(2.0) * u_distanceMultiplier; + + float outlineWidth = u_outlineWidth * shadowSmoothing; + float outerEdgeCenter = 0.5 - outlineWidth; + + shadowSmoothing = shadowSmoothing * u_dropShadowSoftener; + float shadowAlpha = smoothstep(outerEdgeCenter - shadowSmoothing, outerEdgeCenter + shadowSmoothing, shadowDistance); + vec4 shadowColor = vec4(v_color0.xyz, shadowAlpha * v_color0.w); + gl_FragColor = shadowColor; + return; + } + + vec4 color = textureCube(s_texColor, v_texcoord0.xyz); + + int index = int(v_texcoord0.w*4.0 + 0.5); + float rgba[4]; + rgba[0] = color.z; + rgba[1] = color.y; + rgba[2] = color.x; + rgba[3] = color.w; + float distance = rgba[index]; + + float smoothing = 16.0 * length(fwidth(v_texcoord0.xyz)) / sqrt(2.0) * u_distanceMultiplier; + + float outlineWidth = u_outlineWidth * smoothing; + float outerEdgeCenter = 0.5 - outlineWidth; + float alpha = smoothstep(outerEdgeCenter - smoothing, outerEdgeCenter + smoothing, distance); + float border = smoothstep(0.5 - smoothing, 0.5 + smoothing, distance); + vec4 sdfColor = vec4( mix(v_color1.xyz, v_color0.xyz, border), alpha * v_color0.w ); + gl_FragColor = sdfColor; +} diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_image.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_image.bin.h new file mode 100644 index 00000000000..3b4b08a1025 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_image.bin.h @@ -0,0 +1,773 @@ +static const uint8_t fs_font_distance_field_outline_image_glsl[1674] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x06, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ......O...varyin + 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // g vec4 v_color0; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // color1;.varying + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // vec4 v_texcoord0 + 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ;.varying vec4 v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord1;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, // orm samplerCube + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // s_texColor;.unif + 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // orm vec4 u_param + 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, // s;.void main (). + 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, // {. float rgba_1 + 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x6e, 0x79, 0x28, 0x65, // [4];. if (any(e + 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // qual (v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 0.xyz, vec3(0.0, + 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, // 0.0, 0.0)))) {. + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // vec4 tmpvar_ + 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, // 2;. tmpvar_2 + 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, // = textureCube (s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // _texColor, v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // coord1.xyz);. + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, // vec4 tmpvar_3;. + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, // tmpvar_3.xyz + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // = tmpvar_2.xyz; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, // . tmpvar_3.w + 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, // = (tmpvar_2.w * + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // v_color0.w);. + 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // gl_FragColor = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // tmpvar_3;. re + 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, // turn;. };. vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_4;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // pvar_4 = texture + 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // Cube (s_texColor + 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, // , v_texcoord0.xy + 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // z);. int tmpvar + 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, // _5;. tmpvar_5 = + 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // int(((v_texcoor + 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, // d0.w * 4.0) + 0. + 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, // 5));. rgba_1[0] + 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, // = tmpvar_4.z;. + 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // rgba_1[1] = tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // var_4.y;. rgba_ + 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, // 1[2] = tmpvar_4. + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, // x;. rgba_1[3] = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, // tmpvar_4.w;. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, // loat tmpvar_6;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x72, 0x67, 0x62, 0x61, // tmpvar_6 = rgba + 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // _1[tmpvar_5];. + 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // vec3 tmpvar_7;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, // tmpvar_7 = (abs + 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // (dFdx(v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, // 0.xyz)) + abs(dF + 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, // dy(v_texcoord0.x + 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // yz)));. float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_8;. tmpva + 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, // r_8 = (((16.0 * + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, // . sqrt(dot (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // mpvar_7, tmpvar_ + 0x37, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, // 7)). ) / 1.4142 + 0x31, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, // 14) * u_params.y + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // );. float tmpva + 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, // r_9;. tmpvar_9 + 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // = (0.5 - (u_para + 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, // ms.w * tmpvar_8) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // );. float edge0 + 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x20, // _10;. edge0_10 + 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2d, 0x20, 0x74, 0x6d, // = (tmpvar_9 - tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // pvar_8);. float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_11;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, // pvar_11 = clamp + 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x2d, 0x20, 0x65, 0x64, // (((tmpvar_6 - ed + 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // ge0_10) / (. + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_9 + tmpv + 0x61, 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // ar_8). - edge0 + 0x5f, 0x31, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // _10)), 0.0, 1.0) + 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // ;. float edge0_ + 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x32, 0x20, 0x3d, // 12;. edge0_12 = + 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, // (0.5 - tmpvar_8 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // );. float tmpva + 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_13;. tmpvar_1 + 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, // 3 = clamp (((tmp + 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x32, // var_6 - edge0_12 + 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, // ) / (. (0.5 + + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, // tmpvar_8). - + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // edge0_12)), 0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // 1.0);. vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // pvar_14;. tmpva + 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, // r_14.xyz = mix ( + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x5f, // v_color1.xyz, v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x74, 0x6d, 0x70, // color0.xyz, (tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // var_13 * (tmpvar + 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, // _13 * . (3.0 + 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // - (2.0 * tmpvar_ + 0x31, 0x33, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 13)). )));. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, // pvar_14.w = ((tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // pvar_11 * (tmpva + 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, // r_11 * . (3.0 + 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // - (2.0 * tmpvar + 0x5f, 0x31, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, // _11)). )) * v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, // olor0.w);. gl_F + 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ragColor = tmpva + 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r_14;.}... +}; +static const uint8_t fs_font_distance_field_outline_image_essl[1785] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x06, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ighp vec4 v_colo + 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // r1;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // d0;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, // d1;.uniform lowp + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, // samplerCube s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // exColor;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // highp vec4 u_pa + 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // rams;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // ().{. lowp floa + 0x74, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x34, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x69, // t rgba_1[4];. i + 0x66, 0x20, 0x28, 0x61, 0x6e, 0x79, 0x28, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x28, 0x76, 0x5f, // f (any(equal (v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, // texcoord0.xyz, v + 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, // ec3(0.0, 0.0, 0. + 0x30, 0x29, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // 0)))) {. lowp + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // vec4 tmpvar_2;. + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, // tmpvar_2 = t + 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, // extureCube (s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // xColor, v_texcoo + 0x72, 0x64, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, // rd1.xyz);. lo + 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // wp vec4 tmpvar_3 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, // ;. tmpvar_3.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, // yz = tmpvar_2.xy + 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, // z;. tmpvar_3. + 0x77, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, // w = (tmpvar_2.w + 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, // * v_color0.w);. + 0x20, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // gl_FragColor + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // = tmpvar_3;. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // return;. };. l + 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec4 tmpvar_ + 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, // 4;. tmpvar_4 = + 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, // textureCube (s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // exColor, v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, // ord0.xyz);. hig + 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, // hp int tmpvar_5; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, // . tmpvar_5 = in + 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // t(((v_texcoord0. + 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, // w * 4.0) + 0.5)) + 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, // ;. rgba_1[0] = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, // tmpvar_4.z;. rg + 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ba_1[1] = tmpvar + 0x5f, 0x34, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, // _4.y;. rgba_1[2 + 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x3b, 0x0a, // ] = tmpvar_4.x;. + 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, // rgba_1[3] = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // pvar_4.w;. lowp + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, // float tmpvar_6; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x72, 0x67, // . tmpvar_6 = rg + 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x5d, 0x3b, 0x0a, // ba_1[tmpvar_5];. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // highp vec3 tmp + 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_7;. tmpvar_ + 0x37, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, // 7 = (abs(dFdx(v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, // texcoord0.xyz)) + 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // + abs(dFdy(v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // coord0.xyz)));. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // highp float tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_8;. tmpvar_ + 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x0a, 0x20, // 8 = (((16.0 * . + 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, // sqrt(dot (tmp + 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x29, // var_7, tmpvar_7) + 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2f, 0x20, 0x31, 0x2e, 0x34, 0x31, 0x34, 0x32, 0x31, 0x34, // ). ) / 1.414214 + 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x3b, // ) * u_params.y); + 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // . highp float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_9;. tmpva + 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x28, 0x75, 0x5f, // r_9 = (0.5 - (u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // params.w * tmpva + 0x72, 0x5f, 0x38, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, // r_8));. highp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, // loat edge0_10;. + 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, // edge0_10 = (tmp + 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, // var_9 - tmpvar_8 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // );. lowp float + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_11;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, // var_11 = clamp ( + 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, // ((tmpvar_6 - edg + 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, // e0_10) / (. ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // tmpvar_9 + tmpva + 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // r_8). - edge0_ + 0x31, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // 10)), 0.0, 1.0); + 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // . highp float e + 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // dge0_12;. edge0 + 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, // _12 = (0.5 - tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // var_8);. lowp f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, // loat tmpvar_13;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6c, // tmpvar_13 = cl + 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, // amp (((tmpvar_6 + 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x32, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, // - edge0_12) / (. + 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // (0.5 + tmpva + 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // r_8). - edge0_ + 0x31, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // 12)), 0.0, 1.0); + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // . lowp vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // var_14;. tmpvar + 0x5f, 0x31, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x76, // _14.xyz = mix (v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x76, 0x5f, 0x63, // _color1.xyz, v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // olor0.xyz, (tmpv + 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_13 * (tmpvar_ + 0x31, 0x33, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, // 13 * . (3.0 - + 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // (2.0 * tmpvar_1 + 0x33, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 3)). )));. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, // var_14.w = ((tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // var_11 * (tmpvar + 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, // _11 * . (3.0 + 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // - (2.0 * tmpvar_ + 0x31, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, // 11)). )) * v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // lor0.w);. gl_Fr + 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar + 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _14;.}... +}; +static const uint8_t fs_font_distance_field_outline_image_spv[2962] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH....n.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, // ..s_texColor0... + 0x00, 0x00, 0x00, 0x04, 0x1a, 0x00, 0x54, 0x0b, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, // ......T.....#... + 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, // ................ + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, // ..............GL + 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // SL.std.450...... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x00, // ......main...... + 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xee, 0x00, // ................ + 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... + 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..2...s_texColor + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x35, 0x00, // Sampler.......5. + 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, // ..s_texColorText + 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xad, 0x00, 0x00, 0x00, 0x55, 0x6e, // ure...........Un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, // iformBlock...... + 0x06, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ..........u_para + 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, // ms.............. + 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // ..........gl_Fra + 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xe5, 0x00, // gCoord.......... + 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... + 0x05, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x00, 0x00, // ......v_color1.. + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ..........v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, 0xee, 0x00, 0x00, 0x00, 0x76, 0x5f, // oord0.........v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, 0x06, 0x00, 0xff, 0x00, // texcoord1....... + 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, // ..bgfx_FragData0 + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...2..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, // ..G...2...!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...5..."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, // ..G...5...!..... + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...........#. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xad, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G......... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G......."..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G.......!..... + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xee, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, // ..G............. + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G............. + 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!..... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, // ................ + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, // ...... ......... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ + 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, // ................ + 0x02, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, // ...... ... ..... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...1..... + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, // ......;...1...2. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...4..... + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, // ......;...4...5. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x20, 0x00, // ..........8... . + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, // ......+...8...9. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......+...8...=. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, // ..........A..... + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......Z..... + 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5a, 0x00, // ..,.......]...Z. + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x6f, 0x00, // ..Z...Z.......o. + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x6f, 0x00, // .. .......+...o. + 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..p.......+..... + 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // .........@+..... + 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x6f, 0x00, // .........?+...o. + 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x8c, 0x00, // ................ + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8d, 0x00, // .......... ..... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x6f, 0x00, // ..........+...o. + 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x38, 0x00, // ..........+...8. + 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x6f, 0x00, // ..........+...o. + 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x38, 0x00, // ..........+...8. + 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xad, 0x00, // ................ + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xae, 0x00, 0x00, 0x00, 0x02, 0x00, // ...... ......... + 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, // ......;......... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x02, 0x00, // ...... ......... + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x01, 0x00, // ...... ......... + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe2, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe5, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe8, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xeb, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xee, 0x00, // ......;......... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x00, // ...... ......... + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xff, 0x00, // ......;......... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc6, 0x01, // ......+......... + 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ....5A6......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, // ................ + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x07, 0x00, // ..;.......&..... + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, // ..=.......3...2. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, // ..=.......6...5. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe5, 0x00, // ..=............. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe8, 0x00, // ..=............. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xeb, 0x00, // ..=............. + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xee, 0x00, // ..=............. + 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, // ................ + 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x32, 0x01, // ......2.......2. + 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0xec, 0x00, // ..O.......5..... + 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x35, 0x01, // ..............5. + 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x37, 0x01, // ..]...........7. + 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, // ..........H..... + 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x37, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x48, 0x01, // ......7...8...H. + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x38, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ......8...O..... + 0x00, 0x00, 0x3b, 0x01, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, // ..;............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x41, 0x00, // ..........V...A. + 0x00, 0x00, 0xa2, 0x01, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x57, 0x00, // ......6...3...W. + 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0xa2, 0x01, 0x00, 0x00, 0x3b, 0x01, // ..............;. + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xa4, 0x01, // ..Q.......@..... + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x42, 0x01, // ......Q.......B. + 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ + 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x51, 0x00, // ..C...@...B...Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, // ......D......... + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0xa4, 0x01, // ..Q.......E..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x46, 0x01, // ......Q.......F. + 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, // ..........P..... + 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x46, 0x01, // ..G...D...E...F. + 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8e, 0x01, 0x00, 0x00, 0xf8, 0x00, // ..C............. + 0x02, 0x00, 0x48, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x4b, 0x01, // ..H...O.......K. + 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0xab, 0x01, // ......V...A..... + 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, // ..6...3...W..... + 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x51, 0x00, // ..........K...Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x03, 0x00, // ......N......... + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, 0x4e, 0x01, // ..........O...N. + 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x50, 0x01, // ..............P. + 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x38, 0x00, // ..O.......n...8. + 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..Q...P...Q..... + 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, // ..S...........A. + 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x3d, 0x00, // .. ...T...&...=. + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x54, 0x01, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0x51, 0x00, // ..>...T...S...Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x01, 0x00, // ......V......... + 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0x26, 0x01, // ..A... ...W...&. + 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x57, 0x01, 0x00, 0x00, 0x56, 0x01, // ..9...>...W...V. + 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0xad, 0x01, // ..Q.......Y..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x5a, 0x01, // ......A... ...Z. + 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5a, 0x01, // ..&.......>...Z. + 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5c, 0x01, // ..Y...Q......... + 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, // ..........A... . + 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..]...&.......>. + 0x03, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, // ..].......A... . + 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x3d, 0x00, // .._...&...Q...=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x4f, 0x00, // ......`..._...O. + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, // ......b......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, // ................ + 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x0c, 0x00, // ......c...b..... + 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, // ......d.......B. + 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x66, 0x01, // ..c...........f. + 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xb0, 0x00, // ..d.......A..... + 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x93, 0x00, // ..g.......=..... + 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x67, 0x01, // ..=.......h...g. + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x66, 0x01, // ..........i...f. + 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x6a, 0x01, // ..h...A.......j. + 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......=...p...=. + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x85, 0x00, // ......k...j..... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x69, 0x01, // ......m...k...i. + 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x88, 0x00, // ..........o..... + 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x72, 0x01, // ..m...........r. + 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, // ..o...i......... + 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x0c, 0x00, // ..u...o...i..... + 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, // ......w.......1. + 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x83, 0x00, // ..r...u...`..... + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x69, 0x01, // ......y.......i. + 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x88, 0x00, // ..........{..... + 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x01, // ..i...........}. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x7b, 0x01, // ......1...y...{. + 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7f, 0x01, // ..`...P......... + 0x00, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x4f, 0x00, // ..}...}...}...O. + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe9, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..............O. + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe6, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................ + 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, // ................ + 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x77, 0x01, // ..............w. + 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x89, 0x01, // ......Q......... + 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... + 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x89, 0x01, // ..P............. + 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0xf9, 0x00, // ................ + 0x02, 0x00, 0x8e, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8e, 0x01, 0x00, 0x00, 0xf5, 0x00, // ................ + 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x38, 0x01, // ..........G...8. + 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xff, 0x00, // ......H...>..... + 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..........8..... + 0x10, 0x00, // .. +}; +static const uint8_t fs_font_distance_field_outline_image_dx9[1147] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, // ....u_params.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, // ......@......... + 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, // ,.CTAB.......... + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, // ..............|. + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, // ..D...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, // ......`......... + 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..l.......s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // olor............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, // ......u_params.. + 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // ..ps_3_0.Microso + 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad + 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, // er Compiler 10.1 + 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, // ..Q..........?.. + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, // .....@...?Q..... + 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, // ................ + 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xf3, 0x04, 0x35, 0x41, 0x00, 0x00, // @.Q.........5A.. + 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, // ....@@...?...... + 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, // ................ + 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, // ................ + 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x03, 0x00, 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x02, 0x00, // ......X......... + 0xe4, 0x9c, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x55, 0xa0, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, // ........U....... + 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x29, 0x00, 0x04, 0x02, 0x00, 0x00, // ..........)..... + 0x00, 0x81, 0x01, 0x00, 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x03, 0x00, // ....U.B......... + 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, // ................ + 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, // ................ + 0xff, 0x90, 0x2a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, // ..*............. + 0xff, 0x90, 0x01, 0x00, 0xaa, 0xa0, 0x01, 0x00, 0xff, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ......X......... + 0x55, 0x81, 0x01, 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, // U...U.....X..... + 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x02, 0x00, // ............U... + 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x58, 0x00, // ..............X. + 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, // ................ + 0x55, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x00, 0x08, // U.B............. + 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xc6, 0x80, 0x00, 0x00, // ................ + 0xe4, 0x80, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x80, 0x02, 0x00, 0x90, 0x90, 0x5c, 0x00, // ..[............. + 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x0e, 0x80, 0x00, 0x00, 0xe4, 0x8b, 0x01, 0x00, 0x90, 0x8b, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x02, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // ....U........... + 0x55, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // U...........U... + 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, // U...........U... + 0x00, 0xa1, 0x03, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x81, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, // ................ + 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x03, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // U............... + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x01, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x00, 0x00, 0xff, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x03, 0x00, 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ....U........... + 0x04, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, // ................ + 0x07, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ + 0xe4, 0x81, 0x00, 0x00, 0xe4, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, // ................ + 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ + 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, // ....U........... + 0x08, 0x80, 0x01, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................ + 0xff, 0xa0, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, 0xff, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ + 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x04, 0x00, // ....U........... + 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x00, 0x00, // ........U....... + 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, // ............U... + 0xf4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x05, 0x00, // ................ + 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, // ........U....... + 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, // ................ + 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x03, 0x00, // ............U... + 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // ............U... + 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ + 0xff, 0x90, 0x2b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, // ..+........ +}; +static const uint8_t fs_font_distance_field_outline_image_dx11[1799] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x75, // FSH....n.......u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // _params......... + 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, // ..s_texColor0... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x06, 0x00, 0x00, 0x44, // r0.............D + 0x58, 0x42, 0x43, 0x5e, 0xe4, 0x19, 0x72, 0x85, 0x68, 0x9d, 0x02, 0x8d, 0xb2, 0x00, 0xf7, 0x75, // XBC^..r.h......u + 0x7c, 0x41, 0x99, 0x01, 0x00, 0x00, 0x00, 0xb4, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // |A............., + 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x9c, // ...........ISGN. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x07, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x07, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C + 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, // OLOR.TEXCOORD..O + 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET + 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xa8, 0x05, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x6a, // ...SHDR....@...j + 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ...Y...F. ...... + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, // ...Z....`......X + 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, // 0...p......UU..b + 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, // ...........b...r + 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, // .......b........ + 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x65, // ...b...r.......e + 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, // .... ......h.... + 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, // ...i............ + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......r.......F + 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, // ...........<.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ................ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......<........ + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ...*............ + 0x00, 0x00, 0x00, 0x1f, 0x00, 0x04, 0x03, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, // ...............E + 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x04, // ...........F.... + 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, // ...F~.......`... + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // ...8.... ......: + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, // .......:.......6 + 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, // ...r ......F.... + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...>.......E.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, // .......F.......F + 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ~.......`......2 + 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x03, // ...........:.... + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.....@.@... + 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, // ..?............. + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // .......*.......6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, // ....0 .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, // .......6....0 .. + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ...............6 + 0x00, 0x00, 0x06, 0x12, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, // ....0 .........: + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......6........ + 0x00, 0x00, 0x00, 0x0a, 0x30, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, // ....0 .......... + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // ................ + 0x19, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x01, // ...........r.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe2, // ...F............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, // .......V........ + 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x22, // ...........K..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 + 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ..."............ + 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ..... .........8 + 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ...B............ + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x32, 0x00, 0x00, 0x0b, 0x42, // ....@....5A2...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // .......:. .A.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......*........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, 0x00, // @.....?2........ + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......A........ + 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // @....5A*.......2 + 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ...B............ + 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x2a, 0x00, 0x10, 0x00, 0x00, // ....@....5A*.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // .......B.......: + 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // ...A.......*.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // ...............: + 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ...A............ + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // .......B........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // @.....?...?...?. + 0x00, 0x80, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x42, // ..?*.......8 ..B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // .......*.......: + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x82, 0x00, 0x10, 0x00, 0x00, // .......2........ + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, // ...*........@... + 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x42, // ....@....@@8...B + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // .......*.......* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, // .......8...B.... + 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, // ...*.......:.... + 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...2............ + 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xf3, // ...A........@... + 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, 0x22, // .5A.@.....?2..." + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x40, 0x00, 0x00, 0xf3, 0x04, 0x35, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, // @....5A.@.....?. + 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x80, 0x41, // ...2...........A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, // .......F........ + 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, // ..."........@... + 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x1a, // ..?...?...?...?. + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // .......8 ....... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...2..."........ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, // ........@....... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // @....@@8........ + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...8............ + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, // ...r.......F.... + 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, // ...F...A.......2 + 0x00, 0x00, 0x09, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, // ...r ........... + 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, // ...F.......F.... + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // ...8.... ......* + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, // .......:.......> + 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // ....... +}; +static const uint8_t fs_font_distance_field_outline_image_mtl[2630] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x94, 0xf7, 0xae, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH....n.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, // .......u_params. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..........s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x09, // olor............ + 0x00, 0x00, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, // ..#pragma clang + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, // diagnostic ignor + 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x70, 0x72, // ed "-Wmissing-pr + 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, // ototypes".#pragm + 0x61, 0x20, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, // a clang diagnost + 0x69, 0x63, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x22, 0x2d, 0x57, 0x6d, 0x69, // ic ignored "-Wmi + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x23, // ssing-braces"..# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x3c, // etal;..template< + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, // typename T, size + 0x5f, 0x74, 0x20, 0x4e, 0x75, 0x6d, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, // _t Num>.struct s + 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x7b, 0x0a, // pvUnsafeArray.{. + 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x4e, // T elements[N + 0x75, 0x6d, 0x20, 0x3f, 0x20, 0x4e, 0x75, 0x6d, 0x20, 0x3a, 0x20, 0x31, 0x5d, 0x3b, 0x0a, 0x20, // um ? Num : 1];. + 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, // . thread T + 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, // & operator [] (s + 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, // ize_t pos) threa + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // d. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, // constexpr const + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // thread T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0a, // s) const thread. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // {. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, // turn elements[po + 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, // s];. }. . + 0x20, 0x20, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, // device T& ope + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, // rator [] (size_t + 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, // pos) device. + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // {. retur + 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, // n elements[pos]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // . }. const + 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, // expr const devic + 0x65, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, // e T& operator [] + 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, 0x6f, // (size_t pos) co + 0x6e, 0x73, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, // nst device. { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, // . return + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, // elements[pos];. + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, // }. . co + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, // nstexpr const co + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, // nstant T& operat + 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, // or [] (size_t po + 0x73, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // s) const constan + 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t. {. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, // return elements[ + 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // pos];. }. + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // . threadgroup + 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, 0x5d, 0x20, // T& operator [] + 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x74, 0x68, 0x72, // (size_t pos) thr + 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, // eadgroup. {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, // return el + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // ements[pos];. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, // }. constexpr + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, // const threadgro + 0x75, 0x70, 0x20, 0x54, 0x26, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x5b, // up T& operator [ + 0x5d, 0x20, 0x28, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x29, 0x20, 0x63, // ] (size_t pos) c + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, // onst threadgroup + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, // . {. r + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x70, // eturn elements[p + 0x6f, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, // os];. }.};..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, // float4 u_par + 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // ams;.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, // {. float4 bgf + 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, // x_FragData0 [[co + 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, // lor(0)]];.};..st + 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ruct xlatMtlMain + 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _in.{. float4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // v_color0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, // loat4 v_color1 [ + 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // [user(locn1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // float4 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn2)]];. floa + 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x5b, // t4 v_texcoord1 [ + 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // [user(locn3)]];. + 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // };..fragment xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // tMtlMain_out xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // tMtlMain(xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, // Main_in in [[sta + 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // ge_in]], constan + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // t _Global& _mtl_ + 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, // u [[buffer(0)]], + 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, // texturecube<flo + 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, // at> s_texColor [ + 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, // [texture(0)]], s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // ampler s_texColo + 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, // rSampler [[sampl + 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, // er(0)]]).{. x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, // latMtlMain_out o + 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ut = {};. flo + 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, // at4 _455;. do + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, // . {. i + 0x66, 0x20, 0x28, 0x61, 0x6e, 0x79, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // f (any(in.v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x66, 0x6c, 0x6f, // oord0.xyz == flo + 0x61, 0x74, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // at3(0.0))). + 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x73, // float4 _420 = s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // _texColor.sample + 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, // (s_texColorSampl + 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // er, in.v_texcoor + 0x64, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // d1.xyz);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, // _455 = floa + 0x74, 0x34, 0x28, 0x5f, 0x34, 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x5f, 0x34, 0x32, // t4(_420.xyz, _42 + 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // 0.w * in.v_color + 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 0.w);. + 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // break;. + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // }. float + 0x34, 0x20, 0x5f, 0x34, 0x32, 0x39, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // 4 _429 = s_texCo + 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, // lor.sample(s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, // ColorSampler, in + 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, // .v_texcoord0.xyz + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, // );. int _ + 0x33, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, // 337 = int((in.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, // texcoord0.w * 4. + 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 0) + 0.5);. + 0x20, 0x20, 0x20, 0x73, 0x70, 0x76, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x41, 0x72, 0x72, 0x61, // spvUnsafeArra + 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x34, 0x3e, 0x20, 0x5f, 0x32, 0x39, 0x34, // y<float, 4> _294 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x39, 0x34, 0x5b, 0x30, // ;. _294[0 + 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x32, 0x39, 0x2e, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // ] = _429.z;. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x39, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, // _294[1] = _4 + 0x32, 0x39, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, // 29.y;. _2 + 0x39, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x32, 0x39, 0x2e, 0x78, 0x3b, 0x0a, // 94[2] = _429.x;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x39, 0x34, 0x5b, 0x33, 0x5d, 0x20, // _294[3] + 0x3d, 0x20, 0x5f, 0x34, 0x32, 0x39, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = _429.w;. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x28, // float _361 = ( + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x69, 0x6e, // length(fwidth(in + 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, // .v_texcoord0.xyz + 0x29, 0x29, 0x20, 0x2a, 0x20, 0x31, 0x31, 0x2e, 0x33, 0x31, 0x33, 0x37, 0x30, 0x38, 0x33, 0x30, // )) * 11.31370830 + 0x35, 0x33, 0x35, 0x38, 0x38, 0x38, 0x37, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // 5358887) * _mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x3b, 0x0a, 0x20, 0x20, // u.u_params.y;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x37, // float _367 + 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // = 0.5 - (_mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x5f, 0x33, // .u_params.w * _3 + 0x36, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x35, // 61);. _45 + 0x35, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x69, // 5 = float4(mix(i + 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, // n.v_color1.xyz, + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2c, // in.v_color0.xyz, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, // float3(smoothst + 0x65, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x33, 0x36, 0x31, 0x2c, 0x20, 0x30, // ep(0.5 - _361, 0 + 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x36, 0x31, 0x2c, 0x20, 0x5f, 0x32, 0x39, 0x34, 0x5b, // .5 + _361, _294[ + 0x5f, 0x33, 0x33, 0x37, 0x5d, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, // _337]))), smooth + 0x73, 0x74, 0x65, 0x70, 0x28, 0x5f, 0x33, 0x36, 0x37, 0x20, 0x2d, 0x20, 0x5f, 0x33, 0x36, 0x31, // step(_367 - _361 + 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x37, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x36, 0x31, 0x2c, 0x20, 0x5f, // , _367 + _361, _ + 0x32, 0x39, 0x34, 0x5b, 0x5f, 0x33, 0x33, 0x37, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, // 294[_337]) * in. + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // v_color0.w);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // break;. + 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0a, // } while(false);. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, // out.bgfx_Fra + 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x35, 0x3b, 0x0a, 0x20, // gData0 = _455;. + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, // return out;.} + 0x0a, 0x0a, 0x00, 0x00, 0x30, 0x00, // ....0. +}; +extern const uint8_t* fs_font_distance_field_outline_image_pssl; +extern const uint32_t fs_font_distance_field_outline_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_image.sc b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_image.sc new file mode 100644 index 00000000000..5453cd32c60 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_outline_image.sc @@ -0,0 +1,41 @@ +$input v_color0, v_color1, v_texcoord0, v_texcoord1 + +#include "../../common/common.sh" + +SAMPLERCUBE(s_texColor, 0); + +uniform vec4 u_dropShadowColor; +uniform vec4 u_params; + +#define u_distanceMultiplier u_params.y +#define u_dropShadowSoftener u_params.z +#define u_outlineWidth u_params.w + +void main() +{ + if (any(equal(v_texcoord0.xyz, vec3(0.0, 0.0, 0.0)))) + { + vec4 imageColor = textureCube(s_texColor, v_texcoord1.xyz); + gl_FragColor = vec4(imageColor.xyz, imageColor.w * v_color0.w); + return; + } + + vec4 color = textureCube(s_texColor, v_texcoord0.xyz); + + int index = int(v_texcoord0.w*4.0 + 0.5); + float rgba[4]; + rgba[0] = color.z; + rgba[1] = color.y; + rgba[2] = color.x; + rgba[3] = color.w; + float distance = rgba[index]; + + float smoothing = 16.0 * length(fwidth(v_texcoord0.xyz)) / sqrt(2.0) * u_distanceMultiplier; + + float outlineWidth = u_outlineWidth * smoothing; + float outerEdgeCenter = 0.5 - outlineWidth; + float alpha = smoothstep(outerEdgeCenter - smoothing, outerEdgeCenter + smoothing, distance); + float border = smoothstep(0.5 - smoothing, 0.5 + smoothing, distance); + vec4 sdfColor = vec4( mix(v_color1.xyz, v_color0.xyz, border), alpha * v_color0.w ); + gl_FragColor = sdfColor; +} diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h index 97029e0735b..bc8960134f5 100644 --- a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h @@ -1,466 +1,508 @@ -static const uint8_t fs_font_distance_field_subpixel_glsl[1268] = +static const uint8_t fs_font_distance_field_subpixel_glsl[1150] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x76, // Color..........v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary - 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // orm lowp sampler - 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // Cube s_texColor; - 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. - 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp int tmpv - 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // ar_1;. tmpvar_1 - 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // = int(((v_texco - 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, // ord0.w * 4.0) + - 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // 0.5));. highp v - 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ec3 tmpvar_2;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, // tmpvar_2 = dFdx( + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x56, 0x04, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, // ...V...varying v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // rying vec4 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // coord0;.uniform + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, // samplerCube s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // xColor;.void mai + 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, // n ().{. int tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ + 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // 1 = int(((v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, // oord0.w * 4.0) + + 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, // 0.5));. vec3 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_2;. tmpva + 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // r_2 = dFdx(v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, // coord0.xyz);. v + 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, // ec3 tmpvar_3;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x79, 0x28, // tmpvar_3 = dFdy( 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, // v_texcoord0.xyz) - 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, // ;. highp vec3 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_3;. tmpva - 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // r_3 = dFdy(v_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, // coord0.xyz);. h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec3 tmpvar - 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, // _4;. tmpvar_4 = - 0x20, 0x28, 0x30, 0x2e, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // (0.166667 * tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // var_2);. lowp f - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, // loat tmpvar_5;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // tmpvar_5 = text + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ;. vec3 tmpvar_ + 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, // 4;. tmpvar_4 = + 0x28, 0x30, 0x2e, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // (0.166667 * tmpv + 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // ar_2);. float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_5;. tmpva + 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, // r_5 = textureCub + 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, // e (s_texColor, ( + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, // v_texcoord0.xyz + 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, // - tmpvar_4)).zyx + 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, // w[tmpvar_1];. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, // loat tmpvar_6;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // tmpvar_6 = text 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // ureCube (s_texCo 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // lor, (v_texcoord - 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // 0.xyz - tmpvar_4 + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // 0.xyz + tmpvar_4 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // )).zyxw[tmpvar_1 - 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // ];. lowp float - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_6;. tmpv - 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, // ar_6 = textureCu - 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, // be (s_texColor, - 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord0.xyz - 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, // + tmpvar_4)).zy - 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // xw[tmpvar_1];. - 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // lowp float tmpva + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ];. float tmpva 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, // r_7;. tmpvar_7 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = (0.5 * (tmpvar 0x5f, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x3b, // _5 + tmpvar_6)); - 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // . highp float t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_8;. tmpva - 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, // r_8 = (8.0 * (sq - 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, // rt(. dot (tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // var_2, tmpvar_2) - 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, // . ) + sqrt(. - 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2c, 0x20, // dot (tmpvar_3, - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, // tmpvar_3). ))); - 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, // . lowp vec3 tmp - 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_9;. tmpvar_ - 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, // 9.x = tmpvar_5;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, // tmpvar_9.y = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_7;. tmpva - 0x72, 0x5f, 0x39, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // r_9.z = tmpvar_6 - 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, // ;. lowp vec3 tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // pvar_10;. highp - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x31, 0x3b, // float edge0_11; - 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x30, // . edge0_11 = (0 - 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x3b, 0x0a, // .5 - tmpvar_8);. - 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // lowp vec3 tmpv - 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_12;. tmpvar_ - 0x31, 0x32, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, // 12 = clamp (((tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, // pvar_9 - edge0_1 - 0x31, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // 1) / (. (0.5 - 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, // + tmpvar_8). - - 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, // edge0_11)), 0.0 - 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // , 1.0);. tmpvar - 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // _10 = (tmpvar_12 - 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x2a, 0x20, // * (tmpvar_12 * - 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x32, 0x2e, 0x30, // (3.0 - . (2.0 - 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, // * tmpvar_12). - 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // )));. gl_FragCo - 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // lor.xyz = (tmpva - 0x72, 0x5f, 0x31, 0x30, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // r_10 * v_color0. - 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // w);. gl_FragCol - 0x6f, 0x72, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // or.w = (tmpvar_7 - 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, // * v_color0.w);. - 0x7d, 0x0a, 0x0a, 0x00, // }... + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . float tmpvar_ + 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, // 8;. tmpvar_8 = + 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, // (8.0 * (sqrt(. + 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, // dot (tmpvar_2, + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, // tmpvar_2). ) + + 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, // sqrt(. dot ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // tmpvar_3, tmpvar + 0x5f, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, // _3). )));. vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 3 tmpvar_9;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // pvar_9.x = tmpva + 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, // r_5;. tmpvar_9. + 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, // y = tmpvar_7;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // tmpvar_9.z = tmp + 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // var_6;. float e + 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // dge0_10;. edge0 + 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, // _10 = (0.5 - tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, // var_8);. vec3 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // mpvar_11;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, // ar_11 = clamp (( + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, // (tmpvar_9 - edge + 0x30, 0x5f, 0x31, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, // 0_10) / (. (0 + 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, // .5 + tmpvar_8). + 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x29, 0x2c, 0x20, // - edge0_10)), + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // 0.0, 1.0);. gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // FragColor.xyz = + 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x28, 0x74, // ((tmpvar_11 * (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, // mpvar_11 * . + 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (3.0 - (2.0 * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, // pvar_11)). )) * + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, // v_color0.w);. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x20, 0x3d, // gl_FragColor.w = + 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, // (tmpvar_7 * v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // olor0.w);.}... +}; +static const uint8_t fs_font_distance_field_subpixel_essl[1276] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // .......varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ighp vec4 v_colo + 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // r0;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, // d0;.uniform lowp + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, // samplerCube s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // exColor;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // in ().{. highp + 0x69, 0x6e, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, // int tmpvar_1;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, // tmpvar_1 = int(( + 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, // (v_texcoord0.w * + 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, // 4.0) + 0.5));. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp vec3 tmpv + 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_2;. tmpvar_2 + 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // = dFdx(v_texcoo + 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // rd0.xyz);. high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, // p vec3 tmpvar_3; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x64, 0x46, // . tmpvar_3 = dF + 0x64, 0x79, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, // dy(v_texcoord0.x + 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // yz);. highp vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 3 tmpvar_4;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x31, 0x36, 0x36, 0x36, // pvar_4 = (0.1666 + 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, // 67 * tmpvar_2);. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // lowp float tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_5;. tmpvar_ + 0x35, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, // 5 = textureCube + 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x76, 0x5f, // (s_texColor, (v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, // texcoord0.xyz - + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, 0x77, 0x5b, // tmpvar_4)).zyxw[ + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, // tmpvar_1];. low + 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // p float tmpvar_6 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x74, // ;. tmpvar_6 = t + 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, // extureCube (s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // xColor, (v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ord0.xyz + tmpva + 0x72, 0x5f, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_4)).zyxw[tmpva + 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, // r_1];. lowp flo + 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, // at tmpvar_7;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2a, // mpvar_7 = (0.5 * + 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, // (tmpvar_5 + tmp + 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // var_6));. highp + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, // float tmpvar_8; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x38, // . tmpvar_8 = (8 + 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // .0 * (sqrt(. + 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, 0x20, 0x74, // dot (tmpvar_2, t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, // mpvar_2). ) + s + 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, // qrt(. dot (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // pvar_3, tmpvar_3 + 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // ). )));. lowp + 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, // vec3 tmpvar_9;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, // tmpvar_9.x = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_5;. tmpvar + 0x5f, 0x39, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, // _9.y = tmpvar_7; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x7a, 0x20, 0x3d, 0x20, // . tmpvar_9.z = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // tmpvar_6;. lowp + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, // vec3 tmpvar_10; + 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // . highp float e + 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // dge0_11;. edge0 + 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, // _11 = (0.5 - tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, // var_8);. lowp v + 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, // ec3 tmpvar_12;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, // tmpvar_12 = cla + 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2d, // mp (((tmpvar_9 - + 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x31, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, // edge0_11) / (. + 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // (0.5 + tmpvar + 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, // _8). - edge0_1 + 0x31, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // 1)), 0.0, 1.0);. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x74, // tmpvar_10 = (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // mpvar_12 * (tmpv + 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x2a, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x0a, // ar_12 * (3.0 - . + 0x20, 0x20, 0x20, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // (2.0 * tmpva + 0x72, 0x5f, 0x31, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, // r_12). )));. g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, // l_FragColor.xyz + 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x2a, 0x20, 0x76, // = (tmpvar_10 * v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // _color0.w);. gl + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, // _FragColor.w = ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // tmpvar_7 * v_col + 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0.w);.}... }; -static const uint8_t fs_font_distance_field_subpixel_spv[2022] = +static const uint8_t fs_font_distance_field_subpixel_spv[1855] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xd4, 0x07, 0x00, 0x00, 0x03, 0x02, // FSH............. - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, // #.........?..... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x10, 0x00, // ................ - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, // in............Bg - 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x00, 0x06, 0x00, // fxSamplerCube... - 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, // ..........m_samp - 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, // ler............. - 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..m_texture..... - 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // .. ...s_texColor - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......"...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... - 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..%...s_texColor - 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xa0, 0x00, // Texture......... - 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... - 0x05, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ......v_texcoord - 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xae, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 0.........bgfx_F - 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ragData0..G...%. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ..".......G...%. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, // ..!.......G..... - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa3, 0x00, // ..........G..... - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xae, 0x00, // ..........G..... - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. - 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ......... - 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, // ......;....... . - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ...!..... - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, // ......;...!...". - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...$..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......;...$...%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, // ..........(... . - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, // ..........1..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......H..... - 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, // .@+.......J..... - 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xc1, 0xaa, // .?+.......W..... - 0x2a, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, // *>+............. - 0x00, 0x41, 0x20, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, // .A ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;............. - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;............. - 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x36, 0x00, // ..........>...6. - 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..........=..... - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..#..."...=..... - 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, // ..&...%...P..... - 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..'...#...&...>. - 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // .. ...'...=..... - 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..........=..... - 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x48, 0x00, // ..............H. - 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, // ................ - 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0xda, 0x00, // ..J...n...(..... - 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xdc, 0x00, // ......O......... - 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xdd, 0x00, // ................ - 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xdf, 0x00, // ......O......... - 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe0, 0x00, // ................ - 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe1, 0x00, // ................ - 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe3, 0x00, // ................ - 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, // ......W...O..... - 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, // ................ - 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..............O. - 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x81, 0x00, // ................ - 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, // ................ - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x20, 0x00, // ..=........... . - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0xec, 0x00, // ..Q.......2..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x33, 0x01, // ......Q.......3. - 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, // ..........V...1. - 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x57, 0x00, // ..%...3...2...W. - 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0xe7, 0x00, // ......'...%..... - 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x27, 0x01, // ..O...........'. - 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ..'............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, // ......M......... - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, // ..........=..... - 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ...... ...Q..... - 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..6...........Q. - 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x01, 0x00, // ......7......... - 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x37, 0x01, // ..V...1...-...7. - 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x2f, 0x01, // ..6...W......./. - 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, // ..-.......O..... - 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x02, 0x00, // ....../.../..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x4d, 0x00, // ..............M. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xda, 0x00, // ................ - 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf1, 0x00, // ................ - 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfb, 0x00, // ................ - 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, // ..J............. - 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xdd, 0x00, // ..........B..... - 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, // ..B............. - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x01, // ................ - 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x4a, 0x00, // ..............J. - 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x01, // ......P......... - 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x81, 0x00, // ................ - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x03, 0x01, // ..........J..... - 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x08, 0x01, // ..P............. - 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, // ..........P..... - 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xf7, 0x00, // ................ - 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x0d, 0x01, // ..1............. - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0xa1, 0x00, // ..Q............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x12, 0x01, // ................ - 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, // ..........O..... - 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x04, 0x00, // ......>......... - 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0xfb, 0x00, // ................ - 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3c, 0x01, // ......R.......<. - 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. - 0x03, 0x00, 0xae, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ......<.......8. - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // _texColor0...... + 0x04, 0x1a, 0x00, 0x14, 0x07, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, // .........#...... + 0x00, 0x08, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, // ...L............ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, // ...........GLSL. + 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, // std.450......... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa4, // ...main......... + 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, // ................ + 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x23, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // .......#...s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, // ColorSampler.... + 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // ...&...s_texColo + 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xa1, // rTexture........ + 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ...........v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x76, // or0............v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xb4, // _texcoord0...... + 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...#...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...#...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...&...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G...&...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G............ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ..."...........; + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ..."...#....... + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...%...........; + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, // ...%...&........ + 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1b, // ...)... ........ + 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...2.......+.... + 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...I......@+.... + 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...K......?+.... + 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0xc1, 0xaa, 0x2a, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...X.....*>+.... + 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x04, 0x00, 0xa0, // ..........A .... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xa0, // ...........;.... + 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xa0, // ...........;.... + 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xa0, // ...........;.... + 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb3, // ........... .... + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb3, // ...........;.... + 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x0d, // ................ + 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // ...K...6........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, // ...=.......$...# + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, // ...=.......'...& + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa4, // ...=............ + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, // ...=............ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xa8, // ...Q............ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe2, // ................ + 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, // .......I........ + 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x6e, // ...........K...n + 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x4f, // ...)...........O + 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xcf, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x4f, // ...............O + 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xd0, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x8e, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x58, // ...............X + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xa8, // ...O............ + 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xef, // ................ + 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf3, // .......O........ + 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xf5, // ................ + 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x32, // ...........V...2 + 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x57, // ...1...'...$...W + 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0xf1, // .......3...1.... + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x33, // ...O...........3 + 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...3............ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfb, // .......M........ + 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x32, // ...........V...2 + 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x57, // ...:...'...$...W + 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0xf5, // .......<...:.... + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3c, // ...O...........< + 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...<............ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, // .......M........ + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x85, // ................ + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x04, // ...........K.... + 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, // ...B............ + 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xeb, // ...........B.... + 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x07, // ................ + 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0d, // ................ + 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x50, // .......K.......P + 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0f, // ................ + 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, // ................ + 0x01, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, // ...K.......P.... + 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x12, // ................ + 0x01, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0xfb, // ...P............ + 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, // ................ + 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x10, // ...........1.... + 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, // ................ + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x1b, // ................ + 0x01, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x4b, // ...O...........K + 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x21, // .......Q.......! + 0x01, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x52, // ...".......!...R + 0x00, 0x06, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x1e, // .......I...".... + 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x49, // .......>.......I + 0x01, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // .......8....... }; -static const uint8_t fs_font_distance_field_subpixel_dx9[896] = +static const uint8_t fs_font_distance_field_subpixel_dx9[904] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, // Color0.....`.... - 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ...L...0........ - 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...<.......s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, // 10.1..Q........ - 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x51, // ..@...?.......?Q - 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, // ................ - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, // .....@.Q........ - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, // .....@@........Q - 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xc1, 0xaa, 0x2a, 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, // .........*>...A. - 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // ..?............. - 0x00, 0x08, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x55, 0xa0, 0x13, // .............U.. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, // ...........X.... - 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xff, 0xa0, 0x02, // .....U.......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x58, // .............U.X - 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, // ................ - 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // ................ - 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, // .U.............. - 0x00, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x00, // ...X............ - 0x00, 0xff, 0xa0, 0x00, 0x00, 0xaa, 0xa0, 0x5b, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x01, // .......[........ - 0x00, 0xe4, 0x90, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x03, // ................ - 0x00, 0x00, 0xa1, 0x01, 0x00, 0xe4, 0x90, 0x42, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, // .......B........ - 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x02, // ................ - 0x00, 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x03, 0x00, 0x07, 0x80, 0x01, // ................ - 0x00, 0xe4, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xe4, 0x90, 0x08, 0x00, 0x00, 0x03, 0x01, // ................ - 0x00, 0x01, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x02, 0x01, // ................ - 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x01, // ................ - 0x00, 0x00, 0x80, 0x42, 0x00, 0x00, 0x03, 0x03, 0x00, 0x0f, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x00, // ...B............ - 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x03, 0x00, 0xc6, 0x80, 0x00, // ................ - 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x02, // ................ - 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // ................ - 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x91, 0x5c, // .U.............. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, // ................ - 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, // ................ - 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, // ................ - 0x00, 0x55, 0xa1, 0x03, 0x00, 0xaa, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, // .U.............. - 0x00, 0x00, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x03, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, // .....U.......... - 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // .....U.......... - 0x00, 0x0e, 0x80, 0x00, 0x00, 0x55, 0x81, 0x02, 0x00, 0x90, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // .....U.......... - 0x08, 0x08, 0x80, 0x02, 0x00, 0x55, 0x80, 0x00, 0x00, 0xff, 0x90, 0x06, 0x00, 0x00, 0x02, 0x00, // .....U.......... - 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x17, 0x80, 0x00, // ................ - 0x00, 0x00, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x00, // ................ - 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // .........U...... - 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ - 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xff, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ................ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, // ...`......... .C + 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, // TAB....S........ + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, // ...........L...0 + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, // ...........<.... + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, // ...............p + 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, // s_3_0.Microsoft + 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, // (R) HLSL Shader + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, // Compiler 10.1..Q + 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, // ..........@...?. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, // ......?Q........ + 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x51, // .............@.Q + 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x40, 0x00, // .............@@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0, 0xc1, // .......Q........ + 0xaa, 0x2a, 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, // .*>...A...?..... + 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, // ................ + 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, // ................ + 0x08, 0x0f, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x90, 0x00, // ................ + 0x00, 0x00, 0xa0, 0x00, 0x00, 0x55, 0xa0, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, // .....U.......... + 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, // ...X.........U.. + 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, // ................ + 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x81, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, // .....U.X........ + 0x00, 0x00, 0x80, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // .........U...... + 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x58, 0x00, 0x00, 0x04, 0x00, // ...........X.... + 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x8c, 0x00, 0x00, 0xff, 0xa0, 0x00, 0x00, 0xaa, 0xa0, 0x5b, // ...............[ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x04, 0x00, 0x00, 0x04, 0x02, // ................ + 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x03, 0x00, 0x00, 0xa1, 0x01, 0x00, 0xe4, 0x90, 0x42, // ...............B + 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x09, // ................ + 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x02, 0x00, 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x04, // ................ + 0x00, 0x00, 0x04, 0x03, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x03, 0x00, 0x00, 0xa0, 0x01, // ................ + 0x00, 0xe4, 0x90, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x06, // ................ + 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80, 0x42, 0x00, 0x00, 0x03, 0x03, // ...........B.... + 0x00, 0x0f, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x02, // ................ + 0x00, 0x04, 0x80, 0x03, 0x00, 0xc6, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x01, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, // ................ + 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, // .........U...... + 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x91, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x06, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, // ................ + 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x55, 0xa1, 0x03, 0x00, 0xaa, 0xa0, 0x04, // .........U...... + 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x55, 0xa0, 0x03, // .............U.. + 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x81, 0x00, // .............U.. + 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0e, 0x80, 0x00, 0x00, 0x55, 0x81, 0x02, // .............U.. + 0x00, 0x90, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x02, 0x00, 0x55, 0x80, 0x00, // .............U.. + 0x00, 0xff, 0x90, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x17, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x04, // ................ + 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x02, // ................ + 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // .U.............. + 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ................ + 0x00, 0xff, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ........ }; -static const uint8_t fs_font_distance_field_subpixel_dx11[1307] = +static const uint8_t fs_font_distance_field_subpixel_dx11[1336] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x44, // Color0.........D - 0x58, 0x42, 0x43, 0x72, 0x17, 0x00, 0xad, 0x3a, 0xed, 0x4a, 0x16, 0x14, 0x58, 0xdb, 0x06, 0xdf, // XBCr...:.J..X... - 0x01, 0x0f, 0x39, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..9............, - 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, // ...........ISGNl - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x08, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, // ...........b.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C - 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, // OLOR.TEXCOORD..O - 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET - 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x1c, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x07, // ...SHDR....@.... - 0x01, 0x00, 0x00, 0x35, 0x18, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, // ...5..........?. + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, // ....s_texColor0. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0x72, 0x17, 0x00, 0xad, 0x3a, 0xed, 0x4a, 0x16, 0x14, 0x58, 0xdb, 0x06, 0xdf, 0x01, 0x0f, 0x39, // r...:.J..X.....9 + 0x01, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // ........ISGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x08, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, // R.TEXCOORD..OSGN + 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ,........... ... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, // ....SV_TARGET... + 0x53, 0x48, 0x44, 0x52, 0x1c, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, // SHDR....@....... + 0x35, 0x18, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, // 5..........?.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // ...............? 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..?............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......?......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x5a, 0x00, 0x00, 0x03, 0x00, // ..........?Z.... - 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, // `......X0...p... - 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x82, 0x10, 0x10, 0x00, 0x01, // ...UU..b........ - 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, // ...b...........e - 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x03, // .... ......h.... - 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, // ...2...........: - 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, // ........@.....@. - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, // @.....?......... - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, // ................ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, // ...............2 - 0x00, 0x00, 0x0d, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x80, 0x41, // ...r...........A - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xc1, 0xaa, 0x2a, 0x3e, 0xc1, // ........@....*>. - 0xaa, 0x2a, 0x3e, 0xc1, 0xaa, 0x2a, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, // .*>..*>....F.... - 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // ...E...........F - 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F~....... - 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x01, // `............... - 0x00, 0x00, 0x00, 0x66, 0x0c, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x9e, 0x90, 0x00, 0x0a, // ...f.......F.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0x72, 0x00, 0x10, 0x00, 0x02, // .......2...r.... - 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xc1, // ............@... - 0xaa, 0x2a, 0x3e, 0xc1, 0xaa, 0x2a, 0x3e, 0xc1, 0xaa, 0x2a, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x46, // .*>..*>..*>....F - 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, // ...........".... - 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, // ...E...........F - 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F~....... - 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x01, // `..........B.... - 0x00, 0x00, 0x00, 0x66, 0x0c, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x9e, 0x90, 0x00, 0x0a, // ...f.......F.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, // ...*............ - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, // ...8..."........ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, // ........@.....?6 - 0x00, 0x00, 0x06, 0xd2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x80, 0x41, // ...............A - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0xd2, 0x00, 0x10, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x06, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x12, // ................ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, // ................ - 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, 0x00, // .......K...2.... - 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, // ...F............ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ................ - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, // .......2...".... - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......A........ - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, // @.....A.@.....?2 - 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.....A.@... - 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ..?............. - 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ...A............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, // ...............V - 0x05, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x01, // ...A............ - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...8.... ....... - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, // .......:........ - 0x00, 0x00, 0x0a, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, // ............@... - 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x0a, // ..?...?...?...?. - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, // .......8 ..r.... - 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // ...2...r.......F - 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, // ........@....... - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, // ............@... - 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x38, // .@@..@@..@@....8 - 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, // ...r.......F.... - 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, // ...F.......8...r - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x20, 0x10, 0x00, 0x00, // .......8...r ... - 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x1f, 0x10, 0x00, 0x01, // ...F............ - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...>....... + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, // .......?Z....`.. + 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....X0...p...... + 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x82, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // UU..b........... + 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // b...........e... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, // . ......h....... + 0x32, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, // 2...........:... + 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0x40, 0x00, 0x00, // .....@.....@.@.. + 0x00, 0x00, 0x00, 0x3f, 0x1b, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?............ + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0xe2, 0x00, 0x10, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0d, // ............2... + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, // r...........A... + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xc1, 0xaa, 0x2a, 0x3e, 0xc1, 0xaa, 0x2a, 0x3e, // .....@....*>..*> + 0xc1, 0xaa, 0x2a, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ..*>....F....... + 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // E...........F... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, // ....F~.......`.. + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x66, 0x0c, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x9e, 0x90, 0x00, 0x0a, 0x00, 0x10, 0x00, // f.......F....... + 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....2...r....... + 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xc1, 0xaa, 0x2a, 0x3e, // .........@....*> + 0xc1, 0xaa, 0x2a, 0x3e, 0xc1, 0xaa, 0x2a, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, // ..*>..*>....F... + 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........"....... + 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // E...........F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, // ....F~.......`.. + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........B....... + 0x66, 0x0c, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x9e, 0x90, 0x00, 0x0a, 0x00, 0x10, 0x00, // f.......F....... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x2a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // *............... + 0x38, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, // 8..."........... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x00, 0x00, 0x06, // .....@.....?6... + 0xd2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, // ............A... + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0xd2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x06, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x86, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x03, 0x10, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....K...2....... + 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, // F............... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2..."....... + 0x0a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // ....A........@.. + 0x00, 0x00, 0x00, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x09, // ...A.@.....?2... + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, // .@.....A.@.....? + 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, // ................ + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // A............... + 0x00, 0x00, 0x00, 0x08, 0xe2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x80, // ............V... + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // A............... + 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 8.... .......... + 0x01, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, // ....:........... + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // .........@.....? + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x0a, 0x00, 0x10, 0x00, // ...?...?...?.... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8 ..r....... + 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x32, 0x00, 0x00, 0x0f, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 2...r.......F... + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, // .....@.......... + 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, // .........@....@@ + 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // ..@@..@@....8... + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r.......F....... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, // F.......8...r... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....F.......F... + 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8...r ...... + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x1f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // F............... + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // >....... }; -static const uint8_t fs_font_distance_field_subpixel_mtl[1654] = +static const uint8_t fs_font_distance_field_subpixel_mtl[1262] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x67, 0x06, 0x00, 0x00, 0x75, 0x73, // FSH.......g...us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, // r0;. float4 v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // excoord0;.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // rOutput {. floa - 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // t4 gl_FragColor; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // {.};.fragment xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, // uffer(0)]]. , - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, // texturecube<flo - 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, // at> s_texColor [ - 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, // [texture(0)]], s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, // ampler _mtlsmp_s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, // _texColor [[samp - 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, // ler(0)]]).{. xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, // t _mtl_o;. int - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_1 = 0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, // tmpvar_1 = int(( - 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (_mtl_i.v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, // rd0.w * 4.0) + 0 - 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, // .5));. float3 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // mpvar_2 = 0;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, 0x66, 0x64, 0x78, 0x28, 0x5f, // mpvar_2 = dfdx(_ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.v_texcoord - 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // 0.xyz);. float3 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_3 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x64, 0x66, 0x64, 0x79, // tmpvar_3 = dfdy - 0x28, 0x2d, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // (-_mtl_i.v_texco - 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ord0.xyz);. flo - 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x30, // at3 tmpvar_4 = 0 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x28, // ;. tmpvar_4 = ( - 0x30, 0x2e, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 0.166667 * tmpva - 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // r_2);. float tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // pvar_5 = 0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // pvar_5 = s_texCo - 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, // lor.sample(_mtls - 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, // mp_s_texColor, ( - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // float3)((_mtl_i. - 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, // v_texcoord0.xyz - 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x29, 0x2e, 0x7a, 0x79, // - tmpvar_4))).zy - 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // xw[tmpvar_1];. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, // float tmpvar_6 = - 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, // 0;. tmpvar_6 = - 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, // s_texColor.samp - 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, // le(_mtlsmp_s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, // Color, (float3)( - 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (_mtl_i.v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // rd0.xyz + tmpvar - 0x5f, 0x34, 0x29, 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, // _4))).zyxw[tmpva - 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // r_1];. float tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // pvar_7 = 0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2a, 0x20, // pvar_7 = (0.5 * - 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_5 + tmpv - 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // ar_6));. float - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_8 = 0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, // tmpvar_8 = (8.0 - 0x2a, 0x20, 0x28, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, // * (sqrt(. dot - 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_2, tmpv - 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, // ar_2). ) + sqrt - 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // (. dot (tmpva - 0x72, 0x5f, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x0a, 0x20, // r_3, tmpvar_3). - 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, // )));. float3 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // mpvar_9 = 0;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // mpvar_9.x = tmpv - 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, // ar_5;. tmpvar_9 - 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // .y = tmpvar_7;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, // tmpvar_9.z = tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // pvar_6;. float - 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // edge0_10 = 0;. - 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // edge0_10 = (0.5 - 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, // - tmpvar_8);. f - 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, // loat3 tmpvar_11 - 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, // = 0;. tmpvar_11 - 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // = clamp (((tmpv - 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, // ar_9 - edge0_10) - 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, // / (. (0.5 + - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, // tmpvar_8). - e - 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, // dge0_10)), 0.0, - 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // 1.0);. _mtl_o.g - 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, // l_FragColor.xyz - 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, // = ((tmpvar_11 * - 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, // (tmpvar_11 * . - 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, // (3.0 - (2.0 * - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // tmpvar_11)). )) - 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // * _mtl_i.v_colo - 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // r0.w);. _mtl_o. - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x20, 0x3d, // gl_FragColor.w = - 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, // (tmpvar_7 * _mt - 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, // l_i.v_color0.w); - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x04, 0x00, 0x00, 0x23, // r..............# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // etal;..constant + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x7b, 0x7d, // float4 _328 = {} + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // ;..struct xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // lMain_out.{. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, // float4 bgfx_Frag + 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, // Data0 [[color(0) + 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // ]];.};..struct x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, // latMtlMain_in.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // float4 v_col + 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, // or0 [[user(locn0 + 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // )]];. float4 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, // v_texcoord0 [[us + 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, // er(locn1)]];.};. + 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // .fragment xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // lMain_out xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // lMain(xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, // n_in in [[stage_ + 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, // in]], texturecub + 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // e<float> s_texCo + 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, // lor [[texture(0) + 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, // ]], sampler s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, // xColorSampler [[ + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, // sampler(0)]]).{. + 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // out out = {};. + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, // int _225 = int + 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // ((in.v_texcoord0 + 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, // .w * 4.0) + 0.5) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x32, 0x32, // ;. float3 _22 + 0x38, 0x20, 0x3d, 0x20, 0x64, 0x66, 0x64, 0x78, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, // 8 = dfdx(in.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord0.xyz);. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x32, 0x33, 0x34, 0x20, 0x3d, 0x20, // float3 _234 = + 0x5f, 0x32, 0x32, 0x38, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x31, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, // _228 * 0.1666669 + 0x39, 0x39, 0x34, 0x35, 0x39, 0x32, 0x36, 0x36, 0x36, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 9945926666;. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, // float _248 = s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, // exColor.sample(s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // , (in.v_texcoord + 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x33, 0x34, 0x29, 0x29, 0x2e, 0x7a, // 0.xyz - _234)).z + 0x79, 0x78, 0x77, 0x5b, 0x5f, 0x32, 0x32, 0x35, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // yxw[_225];. f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, // loat _254 = s_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, // xColor.sample(s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, // texColorSampler, + 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // (in.v_texcoord0 + 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x33, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, // .xyz + _234)).zy + 0x78, 0x77, 0x5b, 0x5f, 0x32, 0x32, 0x35, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // xw[_225];. fl + 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x2a, // oat _258 = 0.5 * + 0x20, 0x28, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x29, 0x3b, 0x0a, // (_248 + _254);. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x36, 0x20, 0x3d, // float _266 = + 0x20, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x5f, // 8.0 * (length(_ + 0x32, 0x32, 0x38, 0x29, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x64, 0x66, // 228) + length(df + 0x64, 0x79, 0x28, 0x2d, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // dy(-in.v_texcoor + 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // d0.xyz)));. f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x6d, 0x6f, // loat3 _281 = smo + 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x30, // othstep(float3(0 + 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x36, 0x36, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, // .5 - _266), floa + 0x74, 0x33, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x36, 0x36, 0x29, 0x2c, 0x20, // t3(0.5 + _266), + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x5f, 0x32, 0x34, 0x38, 0x2c, 0x20, 0x5f, 0x32, 0x35, // float3(_248, _25 + 0x38, 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, // 8, _254)) * in.v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // _color0.w;. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, // loat4 _326 = flo + 0x61, 0x74, 0x34, 0x28, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, // at4(_281.x, _281 + 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x7a, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, // .y, _281.z, _328 + 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x32, 0x36, 0x2e, 0x77, 0x20, // .w);. _326.w + 0x3d, 0x20, 0x5f, 0x32, 0x35, 0x38, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // = _258 * in.v_co + 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // lor0.w;. out. + 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, // bgfx_FragData0 = + 0x20, 0x5f, 0x33, 0x32, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // _326;. retur + 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x20, 0x00, // n out;.}.... . }; extern const uint8_t* fs_font_distance_field_subpixel_pssl; extern const uint32_t fs_font_distance_field_subpixel_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/makefile b/3rdparty/bgfx/examples/common/font/makefile index 9dd5826c317..554063e5829 100644 --- a/3rdparty/bgfx/examples/common/font/makefile +++ b/3rdparty/bgfx/examples/common/font/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # include ../../../scripts/shader-embeded.mk diff --git a/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp b/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp index c231a87c507..77498cbf9c6 100644 --- a/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp +++ b/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "../common.h" @@ -21,6 +21,16 @@ #include "fs_font_distance_field.bin.h" #include "vs_font_distance_field_subpixel.bin.h" #include "fs_font_distance_field_subpixel.bin.h" +#include "vs_font_distance_field_outline.bin.h" +#include "fs_font_distance_field_outline.bin.h" +#include "vs_font_distance_field_outline_image.bin.h" +#include "fs_font_distance_field_outline_image.bin.h" +#include "vs_font_distance_field_drop_shadow.bin.h" +#include "fs_font_distance_field_drop_shadow.bin.h" +#include "vs_font_distance_field_drop_shadow_image.bin.h" +#include "fs_font_distance_field_drop_shadow_image.bin.h" +#include "vs_font_distance_field_outline_drop_shadow_image.bin.h" +#include "fs_font_distance_field_outline_drop_shadow_image.bin.h" static const bgfx::EmbeddedShader s_embeddedShaders[] = { @@ -30,6 +40,16 @@ static const bgfx::EmbeddedShader s_embeddedShaders[] = BGFX_EMBEDDED_SHADER(fs_font_distance_field), BGFX_EMBEDDED_SHADER(vs_font_distance_field_subpixel), BGFX_EMBEDDED_SHADER(fs_font_distance_field_subpixel), + BGFX_EMBEDDED_SHADER(vs_font_distance_field_outline), + BGFX_EMBEDDED_SHADER(fs_font_distance_field_outline), + BGFX_EMBEDDED_SHADER(vs_font_distance_field_outline_image), + BGFX_EMBEDDED_SHADER(fs_font_distance_field_outline_image), + BGFX_EMBEDDED_SHADER(vs_font_distance_field_drop_shadow), + BGFX_EMBEDDED_SHADER(fs_font_distance_field_drop_shadow), + BGFX_EMBEDDED_SHADER(vs_font_distance_field_drop_shadow_image), + BGFX_EMBEDDED_SHADER(fs_font_distance_field_drop_shadow_image), + BGFX_EMBEDDED_SHADER(vs_font_distance_field_outline_drop_shadow_image), + BGFX_EMBEDDED_SHADER(fs_font_distance_field_outline_drop_shadow_image), BGFX_EMBEDDED_SHADER_END() }; @@ -45,6 +65,36 @@ public: TextBuffer(FontManager* _fontManager); ~TextBuffer(); + uint32_t getOutlineColor() + { + return m_outlineColor; + } + + float getOutlineWidth() + { + return m_outlineWidth; + } + + uint32_t getDropShadowColor() + { + return m_dropShadowColor; + } + + float getDropShadowOffsetU() + { + return m_dropShadowOffset[0]; + } + + float getDropShadowOffsetV() + { + return m_dropShadowOffset[1]; + } + + float getDropShadowSoftener() + { + return m_dropShadowSoftener; + } + void setStyle(uint32_t _flags = STYLE_NORMAL) { m_styleFlags = _flags; @@ -75,6 +125,39 @@ public: m_strikeThroughColor = toABGR(_rgba); } + void setOutlineColor(uint32_t _rgba = 0x000000FF) + { + m_outlineColor = toABGR(_rgba); + } + + void setOutlineWidth(float _outlineWidth = 3.0f) + { + m_outlineWidth = _outlineWidth; + } + + void setDropShadowColor(uint32_t _rgba = 0x000000FF) + { + m_dropShadowColor = toABGR(_rgba); + } + + /* + void setDropShadowWidth(float _dropShadowWidth = 3.0f) + { + m_dropShadowWidth = _dropShadowWidth; + } + */ + + void setDropShadowOffset(float u, float v) + { + m_dropShadowOffset[0] = u; + m_dropShadowOffset[1] = v; + } + + void setDropShadowSoftener(float smoother) + { + m_dropShadowSoftener = smoother; + } + void setPenPosition(float _x, float _y) { m_penX = _x; m_penY = _y; @@ -142,7 +225,7 @@ public: } private: - void appendGlyph(FontHandle _handle, CodePoint _codePoint); + void appendGlyph(FontHandle _handle, CodePoint _codePoint, bool shadow); void verticalCenterLastLine(float _txtDecalY, float _top, float _bottom); static uint32_t toABGR(uint32_t _rgba) @@ -154,6 +237,29 @@ private: ; } + void setVertex(uint32_t _i, float _x, float _y, uint32_t _rgba, uint8_t _style = STYLE_NORMAL) + { + m_vertexBuffer[_i].x = _x; + m_vertexBuffer[_i].y = _y; + m_vertexBuffer[_i].rgba = _rgba; + m_styleBuffer[_i] = _style; + } + + void setOutlineColor(uint32_t _i, uint32_t _rgbaOutline) + { + m_vertexBuffer[_i].rgbaOutline = _rgbaOutline; + } + + struct TextVertex + { + float x, y; + int16_t u, v, w, t; + int16_t u1, v1, w1, t1; + int16_t u2, v2, w2, t2; + uint32_t rgba; + uint32_t rgbaOutline; + }; + uint32_t m_styleFlags; // color states @@ -164,6 +270,15 @@ private: uint32_t m_underlineColor; uint32_t m_strikeThroughColor; + // outline state + float m_outlineWidth; + uint32_t m_outlineColor; + + // drop shadow state + float m_dropShadowOffset[2]; + uint32_t m_dropShadowColor; + float m_dropShadowSoftener; + //position states float m_penX; float m_penY; @@ -175,24 +290,11 @@ private: float m_lineDescender; float m_lineGap; + CodePoint m_previousCodePoint; + TextRectangle m_rectangle; FontManager* m_fontManager; - void setVertex(uint32_t _i, float _x, float _y, uint32_t _rgba, uint8_t _style = STYLE_NORMAL) - { - m_vertexBuffer[_i].x = _x; - m_vertexBuffer[_i].y = _y; - m_vertexBuffer[_i].rgba = _rgba; - m_styleBuffer[_i] = _style; - } - - struct TextVertex - { - float x, y; - int16_t u, v, w, t; - uint32_t rgba; - }; - TextVertex* m_vertexBuffer; uint16_t* m_indexBuffer; uint8_t* m_styleBuffer; @@ -204,11 +306,15 @@ private: TextBuffer::TextBuffer(FontManager* _fontManager) : m_styleFlags(STYLE_NORMAL) - , m_textColor(0xffffffff) - , m_backgroundColor(0xffffffff) - , m_overlineColor(0xffffffff) - , m_underlineColor(0xffffffff) - , m_strikeThroughColor(0xffffffff) + , m_textColor(UINT32_MAX) + , m_backgroundColor(UINT32_MAX) + , m_overlineColor(UINT32_MAX) + , m_underlineColor(UINT32_MAX) + , m_strikeThroughColor(UINT32_MAX) + , m_outlineWidth(3.0f) + , m_outlineColor(0x000000ff) + , m_dropShadowColor(0x0000005a) + , m_dropShadowSoftener(1.0f) , m_penX(0) , m_penY(0) , m_originX(0) @@ -216,6 +322,7 @@ TextBuffer::TextBuffer(FontManager* _fontManager) , m_lineAscender(0) , m_lineDescender(0) , m_lineGap(0) + , m_previousCodePoint(0) , m_fontManager(_fontManager) , m_vertexBuffer(new TextVertex[MAX_BUFFERED_CHARACTERS * 4]) , m_indexBuffer(new uint16_t[MAX_BUFFERED_CHARACTERS * 6]) @@ -226,6 +333,8 @@ TextBuffer::TextBuffer(FontManager* _fontManager) { m_rectangle.width = 0; m_rectangle.height = 0; + m_dropShadowOffset[0] = 0.00f; + m_dropShadowOffset[1] = 0.00f; } TextBuffer::~TextBuffer() @@ -244,6 +353,7 @@ void TextBuffer::appendText(FontHandle _fontHandle, const char* _string, const c m_lineDescender = 0; m_lineAscender = 0; m_lineGap = 0; + m_previousCodePoint = 0; } CodePoint codepoint = 0; @@ -253,17 +363,41 @@ void TextBuffer::appendText(FontHandle _fontHandle, const char* _string, const c { _end = _string + bx::strLen(_string); } - BX_CHECK(_end >= _string); + BX_ASSERT(_end >= _string, ""); + + const FontInfo& font = m_fontManager->getFontInfo(_fontHandle); + if (font.fontType & FONT_TYPE_MASK_DISTANCE_DROP_SHADOW) + { + float savePenX = m_penX; + float savePenY = m_penY; + CodePoint savePreviousCodePoint = m_previousCodePoint; + TextRectangle saveRectangle = m_rectangle; + + const char* origString = _string; + for (; *_string && _string < _end ; ++_string) + { + if (utf8_decode(&state, (uint32_t*)&codepoint, *_string) == UTF8_ACCEPT ) + { + appendGlyph(_fontHandle, codepoint, true); + } + } + _string = origString; + + m_penX = savePenX; + m_penY = savePenY; + m_previousCodePoint = savePreviousCodePoint; + m_rectangle = saveRectangle; + } for (; *_string && _string < _end ; ++_string) { if (utf8_decode(&state, (uint32_t*)&codepoint, *_string) == UTF8_ACCEPT ) { - appendGlyph(_fontHandle, codepoint); + appendGlyph(_fontHandle, codepoint, false); } } - BX_CHECK(state == UTF8_ACCEPT, "The string is not well-formed"); + BX_ASSERT(state == UTF8_ACCEPT, "The string is not well-formed"); } void TextBuffer::appendText(FontHandle _fontHandle, const wchar_t* _string, const wchar_t* _end) @@ -275,18 +409,39 @@ void TextBuffer::appendText(FontHandle _fontHandle, const wchar_t* _string, cons m_lineDescender = 0; m_lineAscender = 0; m_lineGap = 0; + m_previousCodePoint = 0; } if (_end == NULL) { _end = _string + wcslen(_string); } - BX_CHECK(_end >= _string); + BX_ASSERT(_end >= _string, ""); + + const FontInfo& font = m_fontManager->getFontInfo(_fontHandle); + if (font.fontType & FONT_TYPE_MASK_DISTANCE_DROP_SHADOW) + { + float savePenX = m_penX; + float savePenY = m_penY; + CodePoint savePreviousCodePoint = m_previousCodePoint; + TextRectangle saveRectangle = m_rectangle; + + for (const wchar_t* _current = _string; _current < _end; ++_current) + { + uint32_t _codePoint = *_current; + appendGlyph(_fontHandle, _codePoint, true); + } + + m_penX = savePenX; + m_penY = savePenY; + m_previousCodePoint = savePreviousCodePoint; + m_rectangle = saveRectangle; + } for (const wchar_t* _current = _string; _current < _end; ++_current) { uint32_t _codePoint = *_current; - appendGlyph(_fontHandle, _codePoint); + appendGlyph(_fontHandle, _codePoint, false); } } @@ -336,17 +491,18 @@ void TextBuffer::clearTextBuffer() m_lineAscender = 0; m_lineDescender = 0; m_lineGap = 0; + m_previousCodePoint = 0; m_rectangle.width = 0; m_rectangle.height = 0; } -void TextBuffer::appendGlyph(FontHandle _handle, CodePoint _codePoint) +void TextBuffer::appendGlyph(FontHandle _handle, CodePoint _codePoint, bool shadow) { if (_codePoint == L'\t') { for (uint32_t ii = 0; ii < 4; ++ii) { - appendGlyph(_handle, L' '); + appendGlyph(_handle, L' ', shadow); } return; } @@ -355,11 +511,13 @@ void TextBuffer::appendGlyph(FontHandle _handle, CodePoint _codePoint) BX_WARN(NULL != glyph, "Glyph not found (font handle %d, code point %d)", _handle.idx, _codePoint); if (NULL == glyph) { + m_previousCodePoint = 0; return; } if( m_vertexCount/4 >= MAX_BUFFERED_CHARACTERS) { + m_previousCodePoint = 0; return; } @@ -373,6 +531,7 @@ void TextBuffer::appendGlyph(FontHandle _handle, CodePoint _codePoint) m_lineDescender = font.descender; m_lineAscender = font.ascender; m_lineStartIndex = m_vertexCount; + m_previousCodePoint = 0; return; } @@ -392,11 +551,64 @@ void TextBuffer::appendGlyph(FontHandle _handle, CodePoint _codePoint) verticalCenterLastLine( (txtDecals), (m_penY - m_lineAscender), (m_penY + m_lineAscender - m_lineDescender + m_lineGap) ); } - float kerning = 0 * font.scale; + float kerning = m_fontManager->getKerning(_handle, m_previousCodePoint, _codePoint); m_penX += kerning; const GlyphInfo& blackGlyph = m_fontManager->getBlackGlyph(); const Atlas* atlas = m_fontManager->getAtlas(); + const AtlasRegion& atlasRegion = atlas->getRegion(glyph->regionIndex); + + if (shadow) + { + if (atlasRegion.getType() != AtlasRegion::TYPE_BGRA8) + { + float extraXOffset = m_dropShadowOffset[0]; + float extraYOffset = m_dropShadowOffset[1]; + + float x0 = m_penX + (glyph->offset_x) + extraXOffset; + float y0 = (m_penY + m_lineAscender + (glyph->offset_y) + extraYOffset ); + float x1 = (x0 + glyph->width); + float y1 = (y0 + glyph->height); + + bx::memSet(&m_vertexBuffer[m_vertexCount], 0, sizeof(TextVertex) * 4); + + atlas->packUV(glyph->regionIndex + , (uint8_t*)m_vertexBuffer + , sizeof(TextVertex) * m_vertexCount + offsetof(TextVertex, u2) + , sizeof(TextVertex) + ); + + uint32_t adjustedDropShadowColor = ((((m_dropShadowColor & 0xff000000) >> 8) * (m_textColor >> 24)) & 0xff000000) | (m_dropShadowColor & 0x00ffffff); + setVertex(m_vertexCount + 0, x0, y0, adjustedDropShadowColor); + setVertex(m_vertexCount + 1, x0, y1, adjustedDropShadowColor); + setVertex(m_vertexCount + 2, x1, y1, adjustedDropShadowColor); + setVertex(m_vertexCount + 3, x1, y0, adjustedDropShadowColor); + + m_indexBuffer[m_indexCount + 0] = m_vertexCount + 0; + m_indexBuffer[m_indexCount + 1] = m_vertexCount + 1; + m_indexBuffer[m_indexCount + 2] = m_vertexCount + 2; + m_indexBuffer[m_indexCount + 3] = m_vertexCount + 0; + m_indexBuffer[m_indexCount + 4] = m_vertexCount + 2; + m_indexBuffer[m_indexCount + 5] = m_vertexCount + 3; + m_vertexCount += 4; + m_indexCount += 6; + } + + m_penX += glyph->advance_x; + if (m_penX > m_rectangle.width) + { + m_rectangle.width = m_penX; + } + + if ( (m_penY +m_lineAscender - m_lineDescender+m_lineGap) > m_rectangle.height) + { + m_rectangle.height = (m_penY +m_lineAscender - m_lineDescender+m_lineGap); + } + + m_previousCodePoint = _codePoint; + + return; + } if (m_styleFlags & STYLE_BACKGROUND && m_backgroundColor & 0xff000000) @@ -515,21 +727,54 @@ void TextBuffer::appendGlyph(FontHandle _handle, CodePoint _codePoint) m_indexCount += 6; } - float x0 = m_penX + (glyph->offset_x); - float y0 = (m_penY + m_lineAscender + (glyph->offset_y) ); - float x1 = (x0 + glyph->width); - float y1 = (y0 + glyph->height); + if (!shadow && atlasRegion.getType() == AtlasRegion::TYPE_BGRA8) + { + bx::memSet(&m_vertexBuffer[m_vertexCount], 0, sizeof(TextVertex) * 4); - atlas->packUV(glyph->regionIndex - , (uint8_t*)m_vertexBuffer - , sizeof(TextVertex) * m_vertexCount + offsetof(TextVertex, u) - , sizeof(TextVertex) - ); + atlas->packUV(glyph->regionIndex + , (uint8_t*)m_vertexBuffer + , sizeof(TextVertex) * m_vertexCount + offsetof(TextVertex, u1) + , sizeof(TextVertex) + ); + + float glyphScale = glyph->bitmapScale; + float glyphWidth = glyph->width * glyphScale; + float glyphHeight = glyph->height * glyphScale; + float x0 = m_penX + (glyph->offset_x); + float y0 = (m_penY + (font.ascender + -font.descender - glyphHeight) / 2); + float x1 = (x0 + glyphWidth); + float y1 = (y0 + glyphHeight); + + setVertex(m_vertexCount + 0, x0, y0, m_textColor); + setVertex(m_vertexCount + 1, x0, y1, m_textColor); + setVertex(m_vertexCount + 2, x1, y1, m_textColor); + setVertex(m_vertexCount + 3, x1, y0, m_textColor); + } + else if (!shadow) + { + bx::memSet(&m_vertexBuffer[m_vertexCount], 0, sizeof(TextVertex) * 4); - setVertex(m_vertexCount + 0, x0, y0, m_textColor); - setVertex(m_vertexCount + 1, x0, y1, m_textColor); - setVertex(m_vertexCount + 2, x1, y1, m_textColor); - setVertex(m_vertexCount + 3, x1, y0, m_textColor); + atlas->packUV(glyph->regionIndex + , (uint8_t*)m_vertexBuffer + , sizeof(TextVertex) * m_vertexCount + offsetof(TextVertex, u) + , sizeof(TextVertex) + ); + + float x0 = m_penX + (glyph->offset_x); + float y0 = (m_penY + m_lineAscender + (glyph->offset_y) ); + float x1 = (x0 + glyph->width); + float y1 = (y0 + glyph->height); + + setVertex(m_vertexCount + 0, x0, y0, m_textColor); + setVertex(m_vertexCount + 1, x0, y1, m_textColor); + setVertex(m_vertexCount + 2, x1, y1, m_textColor); + setVertex(m_vertexCount + 3, x1, y0, m_textColor); + + setOutlineColor(m_vertexCount + 0, m_outlineColor); + setOutlineColor(m_vertexCount + 1, m_outlineColor); + setOutlineColor(m_vertexCount + 2, m_outlineColor); + setOutlineColor(m_vertexCount + 3, m_outlineColor); + } m_indexBuffer[m_indexCount + 0] = m_vertexCount + 0; m_indexBuffer[m_indexCount + 1] = m_vertexCount + 1; @@ -550,6 +795,8 @@ void TextBuffer::appendGlyph(FontHandle _handle, CodePoint _codePoint) { m_rectangle.height = (m_penY +m_lineAscender - m_lineDescender+m_lineGap); } + + m_previousCodePoint = _codePoint; } void TextBuffer::verticalCenterLastLine(float _dy, float _top, float _bottom) @@ -598,26 +845,72 @@ TextBufferManager::TextBufferManager(FontManager* _fontManager) , true ); - m_vertexDecl + m_distanceDropShadowProgram = bgfx::createProgram( + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_distance_field_drop_shadow") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_distance_field_drop_shadow") + , true + ); + + m_distanceDropShadowImageProgram = bgfx::createProgram( + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_distance_field_drop_shadow_image") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_distance_field_drop_shadow_image") + , true + ); + + m_distanceOutlineProgram = bgfx::createProgram( + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_distance_field_outline") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_distance_field_outline") + , true + ); + + m_distanceOutlineImageProgram = bgfx::createProgram( + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_distance_field_outline_image") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_distance_field_outline_image") + , true + ); + + m_distanceOutlineDropShadowImageProgram = bgfx::createProgram( + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_distance_field_outline_drop_shadow_image") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_distance_field_outline_drop_shadow_image") + , true + ); + + m_vertexLayout .begin() .add(bgfx::Attrib::Position, 2, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 4, bgfx::AttribType::Int16, true) + .add(bgfx::Attrib::TexCoord1, 4, bgfx::AttribType::Int16, true) + .add(bgfx::Attrib::TexCoord2, 4, bgfx::AttribType::Int16, true) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) + .add(bgfx::Attrib::Color1, 4, bgfx::AttribType::Uint8, true) .end(); - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); + u_dropShadowColor = bgfx::createUniform("u_dropShadowColor", bgfx::UniformType::Vec4); + u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4); } TextBufferManager::~TextBufferManager() { - BX_CHECK(m_textBufferHandles.getNumHandles() == 0, "All the text buffers must be destroyed before destroying the manager"); + BX_ASSERT( + m_textBufferHandles.getNumHandles() == 0 + , "All the text buffers must be destroyed before destroying the manager" + ); delete [] m_textBuffers; + bgfx::destroy(u_params); + + bgfx::destroy(u_dropShadowColor); bgfx::destroy(s_texColor); bgfx::destroy(m_basicProgram); bgfx::destroy(m_distanceProgram); bgfx::destroy(m_distanceSubpixelProgram); + bgfx::destroy(m_distanceOutlineProgram); + bgfx::destroy(m_distanceOutlineImageProgram); + bgfx::destroy(m_distanceDropShadowProgram); + bgfx::destroy(m_distanceDropShadowImageProgram); + bgfx::destroy(m_distanceOutlineDropShadowImageProgram); } TextBufferHandle TextBufferManager::createTextBuffer(uint32_t _type, BufferType::Enum _bufferType) @@ -637,7 +930,7 @@ TextBufferHandle TextBufferManager::createTextBuffer(uint32_t _type, BufferType: void TextBufferManager::destroyTextBuffer(TextBufferHandle _handle) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; m_textBufferHandles.free(_handle.idx); @@ -680,7 +973,7 @@ void TextBufferManager::destroyTextBuffer(TextBufferHandle _handle) void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, bgfx::ViewId _id, int32_t _depth) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; @@ -706,12 +999,17 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, bgfx::ViewId break; case FONT_TYPE_DISTANCE: + { program = m_distanceProgram; bgfx::setState(0 | BGFX_STATE_WRITE_RGB | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) ); + + float params[4] = { 0.0f, (float)m_fontManager->getAtlas()->getTextureSize() / 512.0f, 0.0f, 0.0f }; + bgfx::setUniform(u_params, ¶ms); break; + } case FONT_TYPE_DISTANCE_SUBPIXEL: program = m_distanceSubpixelProgram; @@ -721,6 +1019,84 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, bgfx::ViewId , bc.textBuffer->getTextColor() ); break; + + case FONT_TYPE_DISTANCE_OUTLINE: + { + program = m_distanceOutlineProgram; + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) + ); + + float params[4] = { 0.0f, (float)m_fontManager->getAtlas()->getTextureSize() / 512.0f, 0.0f, bc.textBuffer->getOutlineWidth() }; + bgfx::setUniform(u_params, ¶ms); + break; + } + + case FONT_TYPE_DISTANCE_OUTLINE_IMAGE: + { + program = m_distanceOutlineImageProgram; + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) + ); + + float params[4] = { 0.0f, (float)m_fontManager->getAtlas()->getTextureSize() / 512.0f, 0.0f, bc.textBuffer->getOutlineWidth() }; + bgfx::setUniform(u_params, ¶ms); + break; + } + + case FONT_TYPE_DISTANCE_DROP_SHADOW: + { + program = m_distanceDropShadowProgram; + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) + ); + + uint32_t dropShadowColor = bc.textBuffer->getDropShadowColor(); + float dropShadowColorVec[4] = { ((dropShadowColor >> 16) & 0xff) / 255.0f, ((dropShadowColor >> 8) & 0xff) / 255.0f, (dropShadowColor & 0xff) / 255.0f, (dropShadowColor >> 24) / 255.0f }; + bgfx::setUniform(u_dropShadowColor, &dropShadowColorVec); + + float params[4] = { 0.0f, (float)m_fontManager->getAtlas()->getTextureSize() / 512.0f, bc.textBuffer->getDropShadowSoftener(), 0.0 }; + bgfx::setUniform(u_params, ¶ms); + break; + } + + case FONT_TYPE_DISTANCE_DROP_SHADOW_IMAGE: + { + program = m_distanceDropShadowImageProgram; + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) + ); + + uint32_t dropShadowColor = bc.textBuffer->getDropShadowColor(); + float dropShadowColorVec[4] = { ((dropShadowColor >> 16) & 0xff) / 255.0f, ((dropShadowColor >> 8) & 0xff) / 255.0f, (dropShadowColor & 0xff) / 255.0f, (dropShadowColor >> 24) / 255.0f }; + bgfx::setUniform(u_dropShadowColor, &dropShadowColorVec); + + float params[4] = { 0.0f, (float)m_fontManager->getAtlas()->getTextureSize() / 512.0f, bc.textBuffer->getDropShadowSoftener(), 0.0 }; + bgfx::setUniform(u_params, ¶ms); + break; + } + + case FONT_TYPE_DISTANCE_OUTLINE_DROP_SHADOW_IMAGE: + { + program = m_distanceOutlineDropShadowImageProgram; + bgfx::setState(0 + | BGFX_STATE_WRITE_RGB + | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) + ); + + uint32_t dropShadowColor = bc.textBuffer->getDropShadowColor(); + float dropShadowColorVec[4] = { ((dropShadowColor >> 16) & 0xff) / 255.0f, ((dropShadowColor >> 8) & 0xff) / 255.0f, (dropShadowColor & 0xff) / 255.0f, (dropShadowColor >> 24) / 255.0f }; + bgfx::setUniform(u_dropShadowColor, &dropShadowColorVec); + + float params[4] = { 0.0f, (float)m_fontManager->getAtlas()->getTextureSize() / 512.0f, bc.textBuffer->getDropShadowSoftener(), bc.textBuffer->getOutlineWidth() }; + bgfx::setUniform(u_params, ¶ms); + break; + } + } switch (bc.bufferType) @@ -738,7 +1114,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, bgfx::ViewId vbh = bgfx::createVertexBuffer( bgfx::copy(bc.textBuffer->getVertexBuffer(), vertexSize) - , m_vertexDecl + , m_vertexLayout ); bc.vertexBufferHandleIdx = vbh.idx; @@ -768,7 +1144,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, bgfx::ViewId vbh = bgfx::createDynamicVertexBuffer( bgfx::copy(bc.textBuffer->getVertexBuffer(), vertexSize) - , m_vertexDecl + , m_vertexLayout ); bc.indexBufferHandleIdx = ibh.idx; @@ -802,7 +1178,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, bgfx::ViewId bgfx::TransientIndexBuffer tib; bgfx::TransientVertexBuffer tvb; bgfx::allocTransientIndexBuffer(&tib, bc.textBuffer->getIndexCount() ); - bgfx::allocTransientVertexBuffer(&tvb, bc.textBuffer->getVertexCount(), m_vertexDecl); + bgfx::allocTransientVertexBuffer(&tvb, bc.textBuffer->getVertexCount(), m_vertexLayout); bx::memCopy(tib.data, bc.textBuffer->getIndexBuffer(), indexSize); bx::memCopy(tvb.data, bc.textBuffer->getVertexBuffer(), vertexSize); bgfx::setVertexBuffer(0, &tvb, 0, bc.textBuffer->getVertexCount() ); @@ -816,84 +1192,119 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, bgfx::ViewId void TextBufferManager::setStyle(TextBufferHandle _handle, uint32_t _flags) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->setStyle(_flags); } void TextBufferManager::setTextColor(TextBufferHandle _handle, uint32_t _rgba) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->setTextColor(_rgba); } void TextBufferManager::setBackgroundColor(TextBufferHandle _handle, uint32_t _rgba) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->setBackgroundColor(_rgba); } void TextBufferManager::setOverlineColor(TextBufferHandle _handle, uint32_t _rgba) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->setOverlineColor(_rgba); } void TextBufferManager::setUnderlineColor(TextBufferHandle _handle, uint32_t _rgba) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->setUnderlineColor(_rgba); } void TextBufferManager::setStrikeThroughColor(TextBufferHandle _handle, uint32_t _rgba) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->setStrikeThroughColor(_rgba); } +void TextBufferManager::setOutlineColor(TextBufferHandle _handle, uint32_t _rgba) +{ + BX_ASSERT(isValid(_handle), "Invalid handle used"); + BufferCache& bc = m_textBuffers[_handle.idx]; + bc.textBuffer->setOutlineColor(_rgba); +} + +void TextBufferManager::setOutlineWidth(TextBufferHandle _handle, float _outlineWidth) +{ + BX_ASSERT(isValid(_handle), "Invalid handle used"); + BufferCache& bc = m_textBuffers[_handle.idx]; + bc.textBuffer->setOutlineWidth(_outlineWidth); +} + +void TextBufferManager::setDropShadowColor(TextBufferHandle _handle, uint32_t _rgba) +{ + BX_ASSERT(isValid(_handle), "Invalid handle used"); + BufferCache& bc = m_textBuffers[_handle.idx]; + bc.textBuffer->setDropShadowColor(_rgba); +} + +void TextBufferManager::setDropShadowOffset(TextBufferHandle _handle, float _u, float _v) +{ + BX_ASSERT(isValid(_handle), "Invalid handle used"); + BufferCache& bc = m_textBuffers[_handle.idx]; + bc.textBuffer->setDropShadowOffset(_u, _v); +} + +void TextBufferManager::setDropShadowSoftener(TextBufferHandle _handle, float smoother) +{ + BX_ASSERT(isValid(_handle), "Invalid handle used"); + BufferCache& bc = m_textBuffers[_handle.idx]; + bc.textBuffer->setDropShadowSoftener(smoother); +} + void TextBufferManager::setPenPosition(TextBufferHandle _handle, float _x, float _y) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->setPenPosition(_x, _y); } void TextBufferManager::appendText(TextBufferHandle _handle, FontHandle _fontHandle, const char* _string, const char* _end) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->appendText(_fontHandle, _string, _end); } void TextBufferManager::appendText(TextBufferHandle _handle, FontHandle _fontHandle, const wchar_t* _string, const wchar_t* _end) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->appendText(_fontHandle, _string, _end); } void TextBufferManager::appendAtlasFace(TextBufferHandle _handle, uint16_t _faceIndex) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->appendAtlasFace(_faceIndex); } void TextBufferManager::clearTextBuffer(TextBufferHandle _handle) { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; bc.textBuffer->clearTextBuffer(); } TextRectangle TextBufferManager::getRectangle(TextBufferHandle _handle) const { - BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); + BX_ASSERT(isValid(_handle), "Invalid handle used"); BufferCache& bc = m_textBuffers[_handle.idx]; return bc.textBuffer->getRectangle(); } diff --git a/3rdparty/bgfx/examples/common/font/text_buffer_manager.h b/3rdparty/bgfx/examples/common/font/text_buffer_manager.h index 788fba800ca..6e20080e3cd 100644 --- a/3rdparty/bgfx/examples/common/font/text_buffer_manager.h +++ b/3rdparty/bgfx/examples/common/font/text_buffer_manager.h @@ -1,6 +1,6 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef TEXT_BUFFER_MANAGER_H_HEADER_GUARD @@ -8,7 +8,7 @@ #include "font_manager.h" -BGFX_HANDLE(TextBufferHandle); +BGFX_HANDLE(TextBufferHandle) #define MAX_TEXT_BUFFER_COUNT 64 @@ -57,6 +57,13 @@ public: void setUnderlineColor(TextBufferHandle _handle, uint32_t _rgba = 0x000000FF); void setStrikeThroughColor(TextBufferHandle _handle, uint32_t _rgba = 0x000000FF); + void setOutlineWidth(TextBufferHandle _handle, float _outlineWidth = 3.0f); + void setOutlineColor(TextBufferHandle _handle, uint32_t _rgba = 0x000000FF); + + void setDropShadowOffset(TextBufferHandle _handle, float _u, float _v); + void setDropShadowColor(TextBufferHandle _handle, uint32_t _rgba = 0x000000FF); + void setDropShadowSoftener(TextBufferHandle _handle, float smoother = 1.0f); + void setPenPosition(TextBufferHandle _handle, float _x, float _y); /// Append an ASCII/utf-8 string to the buffer using current pen position and color. @@ -87,11 +94,18 @@ private: BufferCache* m_textBuffers; bx::HandleAllocT<MAX_TEXT_BUFFER_COUNT> m_textBufferHandles; FontManager* m_fontManager; - bgfx::VertexDecl m_vertexDecl; + bgfx::VertexLayout m_vertexLayout; bgfx::UniformHandle s_texColor; + bgfx::UniformHandle u_dropShadowColor; + bgfx::UniformHandle u_params; bgfx::ProgramHandle m_basicProgram; bgfx::ProgramHandle m_distanceProgram; bgfx::ProgramHandle m_distanceSubpixelProgram; + bgfx::ProgramHandle m_distanceOutlineProgram; + bgfx::ProgramHandle m_distanceOutlineImageProgram; + bgfx::ProgramHandle m_distanceDropShadowProgram; + bgfx::ProgramHandle m_distanceDropShadowImageProgram; + bgfx::ProgramHandle m_distanceOutlineDropShadowImageProgram; }; #endif // TEXT_BUFFER_MANAGER_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/font/text_metrics.cpp b/3rdparty/bgfx/examples/common/font/text_metrics.cpp index 835c9e14187..ac71b79d5b0 100644 --- a/3rdparty/bgfx/examples/common/font/text_metrics.cpp +++ b/3rdparty/bgfx/examples/common/font/text_metrics.cpp @@ -1,10 +1,8 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ -#include <wchar.h> // wcslen - #include "text_metrics.h" #include "utf8.h" @@ -47,9 +45,9 @@ void TextMetrics::appendText(FontHandle _fontHandle, const char* _string) { if (codepoint == L'\n') { - m_height += m_lineGap + font.ascender - font.descender; + m_height += m_lineGap + font.ascender - font.descender; m_lineGap = font.lineGap; - m_lineHeight = font.ascender - font.descender; + m_lineHeight = font.ascender - font.descender; m_x = 0; } @@ -61,55 +59,12 @@ void TextMetrics::appendText(FontHandle _fontHandle, const char* _string) } else { - BX_CHECK(false, "Glyph not found"); + BX_ASSERT(false, "Glyph not found"); } } } - BX_CHECK(state == UTF8_ACCEPT, "The string is not well-formed"); -} - -void TextMetrics::appendText(FontHandle _fontHandle, const wchar_t* _string) -{ - const FontInfo& font = m_fontManager->getFontInfo(_fontHandle); - - if (font.lineGap > m_lineGap) - { - m_lineGap = font.lineGap; - } - - if ( (font.ascender - font.descender) > m_lineHeight) - { - m_height -= m_lineHeight; - m_lineHeight = font.ascender - font.descender; - m_height += m_lineHeight; - } - - for (uint32_t ii = 0, end = (uint32_t)wcslen(_string); ii < end; ++ii) - { - uint32_t codepoint = _string[ii]; - const GlyphInfo* glyph = m_fontManager->getGlyphInfo(_fontHandle, codepoint); - if (NULL != glyph) - { - if (codepoint == L'\n') - { - m_height += m_lineGap + font.ascender - font.descender; - m_lineGap = font.lineGap; - m_lineHeight = font.ascender - font.descender; - m_x = 0; - } - - m_x += glyph->advance_x; - if(m_x > m_width) - { - m_width = m_x; - } - } - else - { - BX_CHECK(false, "Glyph not found"); - } - } + BX_ASSERT(state == UTF8_ACCEPT, "The string is not well-formed"); } TextLineMetrics::TextLineMetrics(const FontInfo& _fontInfo) @@ -117,198 +72,72 @@ TextLineMetrics::TextLineMetrics(const FontInfo& _fontInfo) m_lineHeight = _fontInfo.ascender - _fontInfo.descender + _fontInfo.lineGap; } -uint32_t TextLineMetrics::getLineCount(const char* _string) const +uint32_t TextLineMetrics::getLineCount(const bx::StringView& _str) const { CodePoint codepoint = 0; uint32_t state = 0; uint32_t lineCount = 1; - for (; *_string; ++_string) + for (const char* ptr = _str.getPtr(); ptr != _str.getTerm(); ++ptr) { - if (utf8_decode(&state, (uint32_t*)&codepoint, *_string) == UTF8_ACCEPT) + if (utf8_decode(&state, (uint32_t*)&codepoint, *ptr) == UTF8_ACCEPT) { - if(codepoint == L'\n') - { + if (codepoint == L'\n') + { ++lineCount; } } } - BX_CHECK(state == UTF8_ACCEPT, "The string is not well-formed"); - return lineCount; -} - -uint32_t TextLineMetrics::getLineCount(const wchar_t* _string) const -{ - uint32_t lineCount = 1; - for ( ;*_string != L'\0'; ++_string) - { - if(*_string == L'\n') - { - ++lineCount; - } - } + BX_ASSERT(state == UTF8_ACCEPT, "The string is not well-formed"); return lineCount; } - -void TextLineMetrics::getSubText(const char* _string, uint32_t _firstLine, uint32_t _lastLine, const char*& _begin, const char*& _end) +void TextLineMetrics::getSubText(const bx::StringView& _str, uint32_t _firstLine, uint32_t _lastLine, const char*& _begin, const char*& _end) { CodePoint codepoint = 0; uint32_t state = 0; // y is bottom of a text line uint32_t currentLine = 0; - while(*_string && (currentLine < _firstLine) ) - { - for (; *_string; ++_string) - { - if (utf8_decode(&state, (uint32_t*)&codepoint, *_string) == UTF8_ACCEPT) - { - if (codepoint == L'\n') - { - ++currentLine; - ++_string; - break; - } - } - } - } - BX_CHECK(state == UTF8_ACCEPT, "The string is not well-formed"); - _begin = _string; + const char* ptr = _str.getPtr(); - while ( (*_string) && (currentLine < _lastLine) ) + while (ptr != _str.getTerm() + && (currentLine < _firstLine) ) { - for (; *_string; ++_string) - { - if(utf8_decode(&state, (uint32_t*)&codepoint, *_string) == UTF8_ACCEPT) + for (; ptr != _str.getTerm(); ++ptr) + { + if (utf8_decode(&state, (uint32_t*)&codepoint, *ptr) == UTF8_ACCEPT) { - if(codepoint == L'\n') + if (codepoint == L'\n') { ++currentLine; - ++_string; + ++ptr; break; } } } } - BX_CHECK(state == UTF8_ACCEPT, "The string is not well-formed"); - _end = _string; -} - -void TextLineMetrics::getSubText(const wchar_t* _string, uint32_t _firstLine, uint32_t _lastLine, const wchar_t*& _begin, const wchar_t*& _end) -{ - uint32_t currentLine = 0; - while ( (*_string != L'\0') && (currentLine < _firstLine) ) - { - for ( ;*_string != L'\0'; ++_string) - { - if(*_string == L'\n') - { - ++currentLine; - ++_string; - break; - } - } - } - _begin = _string; - - while ( (*_string != L'\0') && (currentLine < _lastLine) ) - { - for ( ;*_string != L'\0'; ++_string) - { - if(*_string == L'\n') - { - ++currentLine; - ++_string; - break; - } - } - } - _end = _string; -} + BX_ASSERT(state == UTF8_ACCEPT, "The string is not well-formed"); + _begin = ptr; -void TextLineMetrics::getVisibleText(const char* _string, float _top, float _bottom, const char*& _begin, const char*& _end) -{ - CodePoint codepoint = 0; - uint32_t state = 0; - // y is bottom of a text line - float y = m_lineHeight; - while (*_string && (y < _top) ) + while (ptr != _str.getTerm() + && (currentLine < _lastLine) ) { - for (; *_string; ++_string) - { - if(utf8_decode(&state, (uint32_t*)&codepoint, *_string) == UTF8_ACCEPT) - { - if(codepoint == L'\n') - { - y += m_lineHeight; - ++_string; - break; - } - } - } - } - - BX_CHECK(state == UTF8_ACCEPT, "The string is not well-formed"); - _begin = _string; - - // y is now top of a text line - y -= m_lineHeight; - while ( (*_string) && (y < _bottom) ) - { - for (; *_string; ++_string) - { - if(utf8_decode(&state, (uint32_t*)&codepoint, *_string) == UTF8_ACCEPT) + for (; ptr != _str.getTerm(); ++ptr) + { + if(utf8_decode(&state, (uint32_t*)&codepoint, *ptr) == UTF8_ACCEPT) { if(codepoint == L'\n') { - y += m_lineHeight; - ++_string; + ++currentLine; + ++ptr; break; } } } } - BX_CHECK(state == UTF8_ACCEPT, "The string is not well-formed"); - _end = _string; -} - -void TextLineMetrics::getVisibleText(const wchar_t* _string, float _top, float _bottom, const wchar_t*& _begin, const wchar_t*& _end) -{ - // y is bottom of a text line - float y = m_lineHeight; - - const wchar_t* _textEnd = _string + wcslen(_string); - - while (y < _top) - { - for (const wchar_t* _current = _string; _current < _textEnd; ++_current) - { - if(*_current == L'\n') - { - y += m_lineHeight; - ++_string; - break; - } - } - } - _begin = _string; - - // y is now top of a text line - y -= m_lineHeight; - while (y < _bottom ) - { - for (const wchar_t* _current = _string; _current < _textEnd; ++_current) - { - if(*_current == L'\n') - { - y += m_lineHeight; - ++_string; - break; - } - } - } - _end = _string; + BX_ASSERT(state == UTF8_ACCEPT, "The string is not well-formed"); + _end = ptr; } diff --git a/3rdparty/bgfx/examples/common/font/text_metrics.h b/3rdparty/bgfx/examples/common/font/text_metrics.h index 48c9323580e..40203646b67 100644 --- a/3rdparty/bgfx/examples/common/font/text_metrics.h +++ b/3rdparty/bgfx/examples/common/font/text_metrics.h @@ -1,6 +1,6 @@ /* * Copyright 2013 Jeremie Roy. All rights reserved. -* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef TEXT_METRICS_H_HEADER_GUARD @@ -47,22 +47,10 @@ public: float getLineHeight() const { return m_lineHeight; } /// Return the number of text line in the given text. - uint32_t getLineCount(const char* _string) const; - - /// Return the number of text line in the given text. - uint32_t getLineCount(const wchar_t* _string) const; - - /// Return the first and last character visible in the [_firstLine, _lastLine] range. - void getSubText(const char* _string, uint32_t _firstLine, uint32_t _lastLine, const char*& _begin, const char*& _end); + uint32_t getLineCount(const bx::StringView& _string) const; /// Return the first and last character visible in the [_firstLine, _lastLine] range. - void getSubText(const wchar_t* _string, uint32_t _firstLine, uint32_t _lastLine, const wchar_t*& _begin, const wchar_t*& _end); - - /// Return the first and last character visible in the [_top, _bottom] range, - void getVisibleText(const char* _string, float _top, float _bottom, const char*& _begin, const char*& _end); - - /// Return the first and last character visible in the [_top, _bottom] range, - void getVisibleText(const wchar_t* _string, float _top, float _bottom, const wchar_t*& _begin, const wchar_t*& _end); + void getSubText(const bx::StringView& _str, uint32_t _firstLine, uint32_t _lastLine, const char*& _begin, const char*& _end); private: float m_lineHeight; diff --git a/3rdparty/bgfx/examples/common/font/varying.def.sc b/3rdparty/bgfx/examples/common/font/varying.def.sc index 595b21dc77d..b84d11353cf 100644 --- a/3rdparty/bgfx/examples/common/font/varying.def.sc +++ b/3rdparty/bgfx/examples/common/font/varying.def.sc @@ -1,8 +1,14 @@ vec2 a_position : POSITION; vec4 a_color0 : COLOR0; +vec4 a_color1 : COLOR1; vec4 a_texcoord0 : TEXCOORD0; +vec4 a_texcoord1 : TEXCOORD1; +vec4 a_texcoord2 : TEXCOORD2; vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec4 v_color1 : COLOR1 = vec4(1.0, 0.0, 0.0, 1.0); vec4 v_texcoord0 : TEXCOORD0 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); vec4 v_sampleLeft : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); vec4 v_sampleRight : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); diff --git a/3rdparty/bgfx/examples/common/font/vs_font_basic.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_basic.bin.h index 083c2f1a82a..e064cae3a10 100644 --- a/3rdparty/bgfx/examples/common/font/vs_font_basic.bin.h +++ b/3rdparty/bgfx/examples/common/font/vs_font_basic.bin.h @@ -1,71 +1,102 @@ -static const uint8_t vs_font_basic_glsl[431] = +static const uint8_t vs_font_basic_glsl[397] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x8a, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ....attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec2 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // on;.attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ghp vec4 a_texco - 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // ord0;.varying hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 v_color - 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.varying highp - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec4 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, // mpvar_1.zw = vec - 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, // 2(0.0, 1.0);. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, // mpvar_1.xy = a_p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // osition;. gl_Po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // sition = (u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // lViewProj * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ar_1);. v_texco - 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // ord0 = a_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // d0;. v_color0 = - 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........`...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec2 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // attribute vec4 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.varying vec4 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, // var_1.zw = vec2( + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 0.0, 1.0);. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // var_1.xy = a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, // ition;. gl_Posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // tion = (u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // iewProj * tmpvar + 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _1);. v_texcoor + 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // d0 = a_texcoord0 + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, // ;. v_color0 = a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... }; -static const uint8_t vs_font_basic_spv[1246] = +static const uint8_t vs_font_basic_essl[439] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xb0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // main....;...?... - 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, // B...M...P...S... - 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ....main........ - 0x23, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, // #...$Global..... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // bute highp vec2 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = a_position; + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // (u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // _texcoord0;. v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color0 = a_color + 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0;.}... +}; +static const uint8_t vs_font_basic_spv[1218] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........l....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x34, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // 4...8...;...F... + 0x49, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // I...L........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........#...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // #.......u_modelV 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, // iewProj.....%... - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........;...a_co - 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, // lor0........?... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........4...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, // lor0........8... 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... - 0x42, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // B...a_texcoord0. - 0x05, 0x00, 0x0a, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....M...@entryPo + 0x3b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // ;...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....F...@entryPo 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x50, 0x00, 0x00, 0x00, // ition.......P... + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x49, 0x00, 0x00, 0x00, // ition.......I... 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // t.v_color0...... - 0x53, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // S...@entryPointO + 0x4c, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // L...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...#....... 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...#....... 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, // #.......H...#... 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // #.......G...%... - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ".......G...;... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, // ........G...?... - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, // ........G...B... - 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // ........G...M... - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, // ........G...P... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, // ........G...S... + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // ".......G...%... + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, // !.......G...4... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, // ........G...8... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ........G...;... + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, // ........G...F... + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, // ........G...I... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, // ........G...L... 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... @@ -79,152 +110,153 @@ static const uint8_t vs_font_basic_spv[1246] = 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // "... ...$....... 0x23, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // #...;...$...%... 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...&....... - 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // "... ...:....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....;...:...;... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...>....... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // ....;...>...?... - 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // ....;...:...B... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...L....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // ....;...L...M... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // ....;...L...P... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, // ....;...L...S... + 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // "... ...3....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // ....;...3...4... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...7....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // ....;...7...8... + 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....;...3...;... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...E....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // ....;...E...F... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // ....;...E...I... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, // ....;...E...L... 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // =.......5...4... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // =.......9...8... 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // =.......<...;... - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // =.......@...?... - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // =.......C...B... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // Q.......k...@... - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // ....Q.......l... - 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // @.......P....... - 0x6d, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, // m...k...l....... - 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, // ....A...&...n... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // Q.......f...9... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, // ....Q.......g... + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // 9.......P....... + 0x68, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, // h...f...g....... + 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, // ....A...&...i... 0x25, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, // %.......=..."... - 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // o...n........... - 0x70, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // p...m...o...Q... - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....w...p....... - 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // ........x...w... - 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // R...........x... - 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, // p.......>...M... - 0x96, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....>...P...<... - 0x3e, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...S...C....... - 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // 8...........@. + 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // j...i........... + 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // k...h...j...>... + 0x46, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x49, 0x00, 0x00, 0x00, // F...k...>...I... + 0x35, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // 5...>...L...<... + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....8........... + 0x40, 0x00, // @. }; -static const uint8_t vs_font_basic_dx9[329] = +static const uint8_t vs_font_basic_dx9[337] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // $.........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ - 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, // ................ - 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, // ................ - 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........$....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................ + 0x00, // . }; -static const uint8_t vs_font_basic_dx11[582] = +static const uint8_t vs_font_basic_dx11[590] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xe3, 0x5d, 0xf0, 0xa8, 0xb3, 0x95, 0xec, 0x3a, // ....DXBC.].....: - 0x48, 0x51, 0xb3, 0xab, 0xaf, 0x69, 0xf9, 0x66, 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, // HQ...i.f........ - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, // ....,........... - 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNh........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........V....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ - 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // _............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. - 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNl........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO - 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // RD..SHDR....@... - 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // @...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _...2......._... - 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // ........g.... .. - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e.... ...... - 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... - 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... - 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... - 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... - 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... - 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... - 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // F.......>....... - 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0xe3, 0x5d, 0xf0, 0xa8, 0xb3, 0x95, 0xec, 0x3a, 0x48, 0x51, 0xb3, 0xab, 0xaf, 0x69, 0xf9, 0x66, // .].....:HQ...i.f + 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...@...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // ........_...2... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._........... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // . ......F....... + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // >...........@. }; -static const uint8_t vs_font_basic_mtl[790] = +static const uint8_t vs_font_basic_mtl[847] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0xf1, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at2 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // . float4 a_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // oord0 [[attribut - 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // e(2)]];.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // utput {. float4 - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, // gl_Position [[p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // osition]];. flo - 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // at4 v_color0;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // float4 v_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // d0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, // atMtlShaderUnifo - 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // rm {. float4x4 - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; - 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.vertex xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, // tmpvar_1.zw = - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // float2(0.0, 1.0) - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, // ;. tmpvar_1.xy - 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // = _mtl_i.a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, // ion;. _mtl_o.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, // _Position = (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // l_u.u_modelViewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // . _mtl_o.v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // oord0 = _mtl_i.a - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // _texcoord0;. _m - 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // tl_o.v_color0 = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // _mtl_i.a_color0; - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // . float4 gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi + 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // on]];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, // xlatMtlMain_in. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, // {. float4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // olor0 [[attribut + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e(0)]];. floa + 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // t2 a_position [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float4 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord0 [[attribu + 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(2)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, // .a_position, 0.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // , 1.0);. out. + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // _entryPointOutpu + 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // t_v_color0 = in. + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, // a_color0;. ou + 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // t._entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // = in.a_texcoord0 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, // ;. return out + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ;.}..........@. }; extern const uint8_t* vs_font_basic_pssl; extern const uint32_t vs_font_basic_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_distance_field.bin.h index 7cb91536ad6..9cf12044867 100644 --- a/3rdparty/bgfx/examples/common/font/vs_font_distance_field.bin.h +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field.bin.h @@ -1,71 +1,102 @@ -static const uint8_t vs_font_distance_field_glsl[431] = +static const uint8_t vs_font_distance_field_glsl[397] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x8a, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ....attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec2 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // on;.attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ghp vec4 a_texco - 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // ord0;.varying hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 v_color - 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.varying highp - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec4 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, // mpvar_1.zw = vec - 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, // 2(0.0, 1.0);. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, // mpvar_1.xy = a_p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // osition;. gl_Po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // sition = (u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // lViewProj * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ar_1);. v_texco - 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // ord0 = a_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // d0;. v_color0 = - 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........`...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec2 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // attribute vec4 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.varying vec4 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, // var_1.zw = vec2( + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 0.0, 1.0);. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // var_1.xy = a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, // ition;. gl_Posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // tion = (u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // iewProj * tmpvar + 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _1);. v_texcoor + 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // d0 = a_texcoord0 + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, // ;. v_color0 = a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... }; -static const uint8_t vs_font_distance_field_spv[1246] = +static const uint8_t vs_font_distance_field_essl[439] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xb0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // main....;...?... - 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, // B...M...P...S... - 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ....main........ - 0x23, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, // #...$Global..... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // bute highp vec2 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = a_position; + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // (u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // _texcoord0;. v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color0 = a_color + 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0;.}... +}; +static const uint8_t vs_font_distance_field_spv[1218] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........l....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x34, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // 4...8...;...F... + 0x49, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // I...L........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........#...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // #.......u_modelV 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, // iewProj.....%... - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........;...a_co - 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, // lor0........?... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........4...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, // lor0........8... 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... - 0x42, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // B...a_texcoord0. - 0x05, 0x00, 0x0a, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....M...@entryPo + 0x3b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // ;...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....F...@entryPo 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x50, 0x00, 0x00, 0x00, // ition.......P... + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x49, 0x00, 0x00, 0x00, // ition.......I... 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // t.v_color0...... - 0x53, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // S...@entryPointO + 0x4c, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // L...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...#....... 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...#....... 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, // #.......H...#... 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // #.......G...%... - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ".......G...;... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, // ........G...?... - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, // ........G...B... - 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // ........G...M... - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, // ........G...P... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, // ........G...S... + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // ".......G...%... + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, // !.......G...4... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, // ........G...8... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ........G...;... + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, // ........G...F... + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, // ........G...I... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, // ........G...L... 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... @@ -79,152 +110,153 @@ static const uint8_t vs_font_distance_field_spv[1246] = 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // "... ...$....... 0x23, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // #...;...$...%... 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...&....... - 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // "... ...:....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....;...:...;... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...>....... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // ....;...>...?... - 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // ....;...:...B... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...L....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // ....;...L...M... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // ....;...L...P... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, // ....;...L...S... + 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // "... ...3....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // ....;...3...4... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...7....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // ....;...7...8... + 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....;...3...;... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...E....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // ....;...E...F... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // ....;...E...I... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, // ....;...E...L... 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // =.......5...4... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // =.......9...8... 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // =.......<...;... - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // =.......@...?... - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // =.......C...B... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // Q.......k...@... - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // ....Q.......l... - 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // @.......P....... - 0x6d, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, // m...k...l....... - 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, // ....A...&...n... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // Q.......f...9... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, // ....Q.......g... + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // 9.......P....... + 0x68, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, // h...f...g....... + 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, // ....A...&...i... 0x25, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, // %.......=..."... - 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // o...n........... - 0x70, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // p...m...o...Q... - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....w...p....... - 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // ........x...w... - 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // R...........x... - 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, // p.......>...M... - 0x96, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....>...P...<... - 0x3e, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...S...C....... - 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // 8...........@. + 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // j...i........... + 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // k...h...j...>... + 0x46, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x49, 0x00, 0x00, 0x00, // F...k...>...I... + 0x35, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // 5...>...L...<... + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....8........... + 0x40, 0x00, // @. }; -static const uint8_t vs_font_distance_field_dx9[329] = +static const uint8_t vs_font_distance_field_dx9[337] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // $.........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ - 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, // ................ - 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, // ................ - 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........$....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................ + 0x00, // . }; -static const uint8_t vs_font_distance_field_dx11[582] = +static const uint8_t vs_font_distance_field_dx11[590] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xe3, 0x5d, 0xf0, 0xa8, 0xb3, 0x95, 0xec, 0x3a, // ....DXBC.].....: - 0x48, 0x51, 0xb3, 0xab, 0xaf, 0x69, 0xf9, 0x66, 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, // HQ...i.f........ - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, // ....,........... - 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNh........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........V....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ - 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // _............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. - 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNl........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO - 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // RD..SHDR....@... - 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // @...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _...2......._... - 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // ........g.... .. - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e.... ...... - 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... - 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... - 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... - 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... - 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... - 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... - 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // F.......>....... - 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0xe3, 0x5d, 0xf0, 0xa8, 0xb3, 0x95, 0xec, 0x3a, 0x48, 0x51, 0xb3, 0xab, 0xaf, 0x69, 0xf9, 0x66, // .].....:HQ...i.f + 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...@...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // ........_...2... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._........... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // . ......F....... + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // >...........@. }; -static const uint8_t vs_font_distance_field_mtl[790] = +static const uint8_t vs_font_distance_field_mtl[847] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0xf1, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at2 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // . float4 a_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // oord0 [[attribut - 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // e(2)]];.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // utput {. float4 - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, // gl_Position [[p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // osition]];. flo - 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // at4 v_color0;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // float4 v_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // d0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, // atMtlShaderUnifo - 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // rm {. float4x4 - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; - 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.vertex xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, // tmpvar_1.zw = - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // float2(0.0, 1.0) - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, // ;. tmpvar_1.xy - 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // = _mtl_i.a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, // ion;. _mtl_o.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, // _Position = (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // l_u.u_modelViewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // . _mtl_o.v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // oord0 = _mtl_i.a - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // _texcoord0;. _m - 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // tl_o.v_color0 = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // _mtl_i.a_color0; - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // . float4 gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi + 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // on]];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, // xlatMtlMain_in. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, // {. float4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // olor0 [[attribut + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e(0)]];. floa + 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // t2 a_position [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float4 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord0 [[attribu + 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(2)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, // .a_position, 0.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // , 1.0);. out. + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // _entryPointOutpu + 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // t_v_color0 = in. + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, // a_color0;. ou + 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // t._entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // = in.a_texcoord0 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, // ;. return out + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ;.}..........@. }; extern const uint8_t* vs_font_distance_field_pssl; extern const uint32_t vs_font_distance_field_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow.bin.h new file mode 100644 index 00000000000..7c89d282bb0 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow.bin.h @@ -0,0 +1,377 @@ +static const uint8_t vs_font_distance_field_drop_shadow_glsl[634] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........M...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, // ec4 a_color1;.at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, // tribute vec2 a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // osition;.attribu + 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // te vec4 a_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // rd0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, // ec4 a_texcoord1; + 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // .attribute vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x76, 0x61, 0x72, // a_texcoord2;.var + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ying vec4 v_colo + 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, // r0;.varying vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color1;.varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec4 v_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // rd0;.varying vec + 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, // 4 v_texcoord1;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord2;.uniform + 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ + 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // n;. gl_Position + 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // = (u_modelViewP + 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, // . v_texcoord0 = + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, // a_texcoord0;. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, // v_texcoord1 = a_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, // texcoord1;. v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // excoord2 = a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // coord2;. v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, // r0 = a_color0;. + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, // v_color1 = a_co + 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // lor1;.}... +}; +static const uint8_t vs_font_distance_field_drop_shadow_essl[712] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // a_color1;.attrib + 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // ute highp vec2 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // _position;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, // a_texcoord0;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x61, // 4 a_texcoord1;.a + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, // ec4 a_texcoord2; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // .varying highp v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color1;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord1;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord2;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = a_position; + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // (u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // _texcoord0;. v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, // texcoord1 = a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // xcoord1;. v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // coord2 = a_texco + 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ord2;. v_color0 + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, // = a_color0;. v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // _color1 = a_colo + 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r1;.}... +}; +static const uint8_t vs_font_distance_field_drop_shadow_spv[1700] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ........h.....#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x11, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // C...F...J...M... + 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, // P...S...d...g... + 0x6a, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, // j...m...p...s... + 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, // ....main........ + 0x2c, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, // ,...UniformBlock + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........,....... + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. + 0x05, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ................ + 0x43, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // C...a_color0.... + 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, // ....F...a_color1 + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, // ........J...a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, // sition......M... + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, // a_texcoord0..... + 0x50, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, // P...a_texcoord1. + 0x05, 0x00, 0x05, 0x00, 0x53, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....S...a_texcoo + 0x72, 0x64, 0x32, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x64, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // rd2.....d...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... + 0x67, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // g...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // utput.v_color0.. + 0x05, 0x00, 0x09, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....j...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput.v_colo + 0x72, 0x31, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // r1......m...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // texcoord0....... + 0x70, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // p...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord + 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x73, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // 1.......s...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, // texcoord2...H... + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ,...........H... + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ,.......#....... + 0x48, 0x00, 0x05, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // H...,........... + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....G...,....... + 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G......."....... + 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G.......!....... + 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...C........... + 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G...F........... + 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // G...J........... + 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // G...M........... + 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // G...P........... + 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, // G...S........... + 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...d........... + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...g........... + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G...j........... + 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // G...m........... + 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // G...p........... + 0x47, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // G...s........... + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // ........!....... + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ............ ... + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ + 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x15, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........ ....... + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // +..............? + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +............... + 0x2b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +.......&....... + 0x18, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....+........... + 0x1e, 0x00, 0x03, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // ....,...+... ... + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // -.......,...;... + 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // -........... ... + 0x2f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // /.......+... ... + 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...........;... + 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...C.......;... + 0x42, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // B...F....... ... + 0x49, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // I...........;... + 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // I...J.......;... + 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...M.......;... + 0x42, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...P.......;... + 0x42, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // B...S....... ... + 0x63, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...........;... + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...d.......;... + 0x63, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...g.......;... + 0x63, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...j.......;... + 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...m.......;... + 0x63, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...p.......;... + 0x63, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, // c...s.......6... + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // ........=....... + 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // D...C...=....... + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // G...F...=....... + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // K...J...=....... + 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // N...M...=....... + 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // Q...P...=....... + 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // T...S...Q....... + 0x90, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....K.......Q... + 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........K....... + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, // P............... + 0x91, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ............A... + 0x2f, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, // /...........&... + 0x3d, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, // =...+........... + 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, // ................ + 0x94, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, // ....>...d....... + 0x3e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...g...D...>... + 0x6a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x6d, 0x00, 0x00, 0x00, // j...G...>...m... + 0x4e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, // N...>...p...Q... + 0x3e, 0x00, 0x03, 0x00, 0x73, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...s...T....... + 0x38, 0x00, 0x01, 0x00, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, // 8............... + 0x12, 0x00, 0x40, 0x00, // ..@. +}; +static const uint8_t vs_font_distance_field_drop_shadow_dx9[445] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ................ + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, // ................ + 0x04, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x02, 0x80, 0x05, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, // ................ + 0x02, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0xe0, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x04, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x02, 0x80, 0x05, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ + 0x01, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... + 0x00, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, // ................ + 0x01, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0f, 0xe0, 0x03, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x0f, 0xe0, 0x04, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............. +}; +static const uint8_t vs_font_distance_field_drop_shadow_dx11[872] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x03, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........,...DXBC + 0x52, 0xfc, 0x6d, 0x4d, 0x40, 0xd5, 0x3b, 0x61, 0x1a, 0x9e, 0xf4, 0x2b, 0xde, 0x55, 0xa6, 0x76, // R.mM@.;a...+.U.v + 0x01, 0x00, 0x00, 0x00, 0x2c, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....,.......,... + 0xe4, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0xb0, 0x00, 0x00, 0x00, // ........ISGN.... + 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ + 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0xa7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x05, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. + 0x4f, 0x53, 0x47, 0x4e, 0xb4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGN............ + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0xa4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0xaa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x84, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...a...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...2....... + 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _..........._... + 0xf2, 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x05, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e.... ...... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // . ......e.... .. + 0x04, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... + 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... + 0x06, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... + 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // F.......6.... .. + 0x03, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, // . ......F....... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x05, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, // ....>........... + 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x40, 0x00, // ......@. +}; +static const uint8_t vs_font_distance_field_drop_shadow_mtl[1306] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x04, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x75, // put_v_color1 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn1)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, // float4 _entryP + 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, // ointOutput_v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn2)]];. floa + 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // t4 _entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // tput_v_texcoord1 + 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, // [[user(locn3)]] + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, // ;. float4 _en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, // _texcoord2 [[use + 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // r(locn4)]];. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // float4 gl_Positi + 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, // on [[position]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // .};..struct xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // MtlMain_in.{. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // float4 a_color0 + 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, // [[attribute(0)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ];. float4 a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color1 [[attribu + 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // te(1)]];. flo + 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at2 a_position [ + 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(2)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, // . float4 a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // xcoord0 [[attrib + 0x75, 0x74, 0x65, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // ute(3)]];. fl + 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // oat4 a_texcoord1 + 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x34, 0x29, 0x5d, // [[attribute(4)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ];. float4 a_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // texcoord2 [[attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x35, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // ibute(5)]];.};.. + 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // vertex xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // in_out xlatMtlMa + 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // in(xlatMtlMain_i + 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, // n in [[stage_in] + 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, // ], constant _Glo + 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, // bal& _mtl_u [[bu + 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // ffer(0)]]).{. + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // out = {};. o + 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // ut.gl_Position = + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // _mtl_u.u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // iewProj * float4 + 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, // (in.a_position, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // 0.0, 1.0);. o + 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // ut._entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // tput_v_color0 = + 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // in.a_color0;. + 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // out._entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, // Output_v_color1 + 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x20, // = in.a_color1;. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // out._entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ntOutput_v_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // ord0 = in.a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, // oord0;. out._ + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // entryPointOutput + 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x69, // _v_texcoord1 = i + 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, // n.a_texcoord1;. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // out._entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ntOutput_v_texco + 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // ord2 = in.a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // oord2;. retur + 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, // n out;.}........ + 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x40, 0x00, // ........@. +}; +extern const uint8_t* vs_font_distance_field_drop_shadow_pssl; +extern const uint32_t vs_font_distance_field_drop_shadow_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow.sc b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow.sc new file mode 100644 index 00000000000..b4615adf0d5 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow.sc @@ -0,0 +1,14 @@ +$input a_position, a_color0, a_color1, a_texcoord0, a_texcoord1, a_texcoord2 +$output v_color0, v_color1, v_texcoord0, v_texcoord1, v_texcoord2 + +#include "../../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 0.0, 1.0) ); + v_texcoord0 = a_texcoord0; + v_texcoord1 = a_texcoord1; + v_texcoord2 = a_texcoord2; + v_color0 = a_color0; + v_color1 = a_color1; +} diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow_image.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow_image.bin.h new file mode 100644 index 00000000000..1f05ed8a637 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow_image.bin.h @@ -0,0 +1,377 @@ +static const uint8_t vs_font_distance_field_drop_shadow_image_glsl[634] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........M...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, // ec4 a_color1;.at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, // tribute vec2 a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // osition;.attribu + 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // te vec4 a_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // rd0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, // ec4 a_texcoord1; + 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // .attribute vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x76, 0x61, 0x72, // a_texcoord2;.var + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ying vec4 v_colo + 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, // r0;.varying vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color1;.varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec4 v_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // rd0;.varying vec + 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, // 4 v_texcoord1;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord2;.uniform + 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ + 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // n;. gl_Position + 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // = (u_modelViewP + 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, // . v_texcoord0 = + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, // a_texcoord0;. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, // v_texcoord1 = a_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, // texcoord1;. v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // excoord2 = a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // coord2;. v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, // r0 = a_color0;. + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, // v_color1 = a_co + 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // lor1;.}... +}; +static const uint8_t vs_font_distance_field_drop_shadow_image_essl[712] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // a_color1;.attrib + 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // ute highp vec2 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // _position;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, // a_texcoord0;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x61, // 4 a_texcoord1;.a + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, // ec4 a_texcoord2; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // .varying highp v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color1;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord1;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord2;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = a_position; + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // (u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // _texcoord0;. v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, // texcoord1 = a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // xcoord1;. v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // coord2 = a_texco + 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ord2;. v_color0 + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, // = a_color0;. v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // _color1 = a_colo + 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r1;.}... +}; +static const uint8_t vs_font_distance_field_drop_shadow_image_spv[1700] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ........h.....#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x11, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // C...F...J...M... + 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, // P...S...d...g... + 0x6a, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, // j...m...p...s... + 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, // ....main........ + 0x2c, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, // ,...UniformBlock + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........,....... + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. + 0x05, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ................ + 0x43, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // C...a_color0.... + 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, // ....F...a_color1 + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, // ........J...a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, // sition......M... + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, // a_texcoord0..... + 0x50, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, // P...a_texcoord1. + 0x05, 0x00, 0x05, 0x00, 0x53, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....S...a_texcoo + 0x72, 0x64, 0x32, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x64, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // rd2.....d...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... + 0x67, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // g...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // utput.v_color0.. + 0x05, 0x00, 0x09, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....j...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput.v_colo + 0x72, 0x31, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // r1......m...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // texcoord0....... + 0x70, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // p...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord + 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x73, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // 1.......s...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, // texcoord2...H... + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ,...........H... + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ,.......#....... + 0x48, 0x00, 0x05, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // H...,........... + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....G...,....... + 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G......."....... + 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G.......!....... + 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...C........... + 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G...F........... + 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // G...J........... + 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // G...M........... + 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // G...P........... + 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, // G...S........... + 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...d........... + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...g........... + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G...j........... + 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // G...m........... + 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // G...p........... + 0x47, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // G...s........... + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // ........!....... + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ............ ... + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ + 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x15, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........ ....... + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // +..............? + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +............... + 0x2b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +.......&....... + 0x18, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....+........... + 0x1e, 0x00, 0x03, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // ....,...+... ... + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // -.......,...;... + 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // -........... ... + 0x2f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // /.......+... ... + 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...........;... + 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...C.......;... + 0x42, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // B...F....... ... + 0x49, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // I...........;... + 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // I...J.......;... + 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...M.......;... + 0x42, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...P.......;... + 0x42, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // B...S....... ... + 0x63, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...........;... + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...d.......;... + 0x63, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...g.......;... + 0x63, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...j.......;... + 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...m.......;... + 0x63, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...p.......;... + 0x63, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, // c...s.......6... + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // ........=....... + 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // D...C...=....... + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // G...F...=....... + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // K...J...=....... + 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // N...M...=....... + 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // Q...P...=....... + 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // T...S...Q....... + 0x90, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....K.......Q... + 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........K....... + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, // P............... + 0x91, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ............A... + 0x2f, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, // /...........&... + 0x3d, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, // =...+........... + 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, // ................ + 0x94, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, // ....>...d....... + 0x3e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...g...D...>... + 0x6a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x6d, 0x00, 0x00, 0x00, // j...G...>...m... + 0x4e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, // N...>...p...Q... + 0x3e, 0x00, 0x03, 0x00, 0x73, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...s...T....... + 0x38, 0x00, 0x01, 0x00, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, // 8............... + 0x12, 0x00, 0x40, 0x00, // ..@. +}; +static const uint8_t vs_font_distance_field_drop_shadow_image_dx9[445] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ................ + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, // ................ + 0x04, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x02, 0x80, 0x05, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, // ................ + 0x02, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0xe0, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x04, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x02, 0x80, 0x05, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ + 0x01, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... + 0x00, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, // ................ + 0x01, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0f, 0xe0, 0x03, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x0f, 0xe0, 0x04, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............. +}; +static const uint8_t vs_font_distance_field_drop_shadow_image_dx11[872] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x03, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........,...DXBC + 0x52, 0xfc, 0x6d, 0x4d, 0x40, 0xd5, 0x3b, 0x61, 0x1a, 0x9e, 0xf4, 0x2b, 0xde, 0x55, 0xa6, 0x76, // R.mM@.;a...+.U.v + 0x01, 0x00, 0x00, 0x00, 0x2c, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....,.......,... + 0xe4, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0xb0, 0x00, 0x00, 0x00, // ........ISGN.... + 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ + 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0xa7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x05, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. + 0x4f, 0x53, 0x47, 0x4e, 0xb4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGN............ + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0xa4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0xaa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x84, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...a...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...2....... + 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _..........._... + 0xf2, 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x05, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e.... ...... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // . ......e.... .. + 0x04, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... + 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... + 0x06, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... + 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // F.......6.... .. + 0x03, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, // . ......F....... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x05, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, // ....>........... + 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x40, 0x00, // ......@. +}; +static const uint8_t vs_font_distance_field_drop_shadow_image_mtl[1306] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x04, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x75, // put_v_color1 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn1)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, // float4 _entryP + 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, // ointOutput_v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn2)]];. floa + 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // t4 _entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // tput_v_texcoord1 + 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, // [[user(locn3)]] + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, // ;. float4 _en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, // _texcoord2 [[use + 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // r(locn4)]];. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // float4 gl_Positi + 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, // on [[position]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // .};..struct xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // MtlMain_in.{. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // float4 a_color0 + 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, // [[attribute(0)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ];. float4 a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color1 [[attribu + 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // te(1)]];. flo + 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at2 a_position [ + 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(2)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, // . float4 a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // xcoord0 [[attrib + 0x75, 0x74, 0x65, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // ute(3)]];. fl + 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // oat4 a_texcoord1 + 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x34, 0x29, 0x5d, // [[attribute(4)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ];. float4 a_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // texcoord2 [[attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x35, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // ibute(5)]];.};.. + 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // vertex xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // in_out xlatMtlMa + 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // in(xlatMtlMain_i + 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, // n in [[stage_in] + 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, // ], constant _Glo + 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, // bal& _mtl_u [[bu + 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // ffer(0)]]).{. + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // out = {};. o + 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // ut.gl_Position = + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // _mtl_u.u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // iewProj * float4 + 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, // (in.a_position, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // 0.0, 1.0);. o + 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // ut._entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // tput_v_color0 = + 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // in.a_color0;. + 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // out._entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, // Output_v_color1 + 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x20, // = in.a_color1;. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // out._entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ntOutput_v_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // ord0 = in.a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, // oord0;. out._ + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // entryPointOutput + 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x69, // _v_texcoord1 = i + 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, // n.a_texcoord1;. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // out._entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ntOutput_v_texco + 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // ord2 = in.a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // oord2;. retur + 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, // n out;.}........ + 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x40, 0x00, // ........@. +}; +extern const uint8_t* vs_font_distance_field_drop_shadow_image_pssl; +extern const uint32_t vs_font_distance_field_drop_shadow_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow_image.sc b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow_image.sc new file mode 100644 index 00000000000..b4615adf0d5 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_drop_shadow_image.sc @@ -0,0 +1,14 @@ +$input a_position, a_color0, a_color1, a_texcoord0, a_texcoord1, a_texcoord2 +$output v_color0, v_color1, v_texcoord0, v_texcoord1, v_texcoord2 + +#include "../../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 0.0, 1.0) ); + v_texcoord0 = a_texcoord0; + v_texcoord1 = a_texcoord1; + v_texcoord2 = a_texcoord2; + v_color0 = a_color0; + v_color1 = a_color1; +} diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline.bin.h new file mode 100644 index 00000000000..5ac1118fe73 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline.bin.h @@ -0,0 +1,338 @@ +static const uint8_t vs_font_distance_field_outline_glsl[551] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, // ec4 a_color1;.at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, // tribute vec2 a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // osition;.attribu + 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // te vec4 a_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // rd0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, // ec4 a_texcoord1; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // color0;.varying + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, // vec4 v_color1;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // xcoord0;.varying + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec4 v_texcoord + 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // 1;.uniform mat4 + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; + 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, // . tmpvar_1.zw = + 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // vec2(0.0, 1.0); + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy = + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, // a_position;. g + 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // l_Position = (u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, // modelViewProj * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, // tmpvar_1);. v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // excoord0 = a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // coord0;. v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // oord1 = a_texcoo + 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, // rd1;. v_color0 + 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // = a_color0;. v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color1 = a_color + 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 1;.}... +}; +static const uint8_t vs_font_distance_field_outline_essl[617] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........<...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // a_color1;.attrib + 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // ute highp vec2 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // _position;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, // a_texcoord0;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, // 4 a_texcoord1;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color1;.varying + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // highp vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // xcoord0;.varying + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // highp vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord1;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, // highp mat4 u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // delViewProj;.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, // d main ().{. hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, // 1;. tmpvar_1.zw + 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // = vec2(0.0, 1.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // );. tmpvar_1.xy + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, // = a_position;. + 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, // gl_Position = ( + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, // u_modelViewProj + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, // * tmpvar_1);. v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, // _texcoord0 = a_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, // excoord0;. v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // xcoord1 = a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // oord1;. v_color + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // 0 = a_color0;. + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // v_color1 = a_col + 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or1;.}... +}; +static const uint8_t vs_font_distance_field_outline_spv[1538] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, // >...A...E...H... + 0x4b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, // K...Z...]...`... + 0x63, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // c...f........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........)...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // ).......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, // iewProj.....+... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........>...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, // lor0........A... + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_color1........ + 0x45, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // E...a_position.. + 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....H...a_texcoo + 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, // rd0.....K...a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x5a, 0x00, 0x00, 0x00, // xcoord1.....Z... + 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu + 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // t.gl_Position... + 0x05, 0x00, 0x09, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....]...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput.v_colo + 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // r0......`...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x63, 0x00, 0x00, 0x00, // color1......c... + 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu + 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, // t.v_texcoord0... + 0x05, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....f...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // intOutput.v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, // oord1...H...)... + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, // ........H...)... + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ....#.......H... + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // )............... + 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...).......G... + 0x2b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // +...".......G... + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // +...!.......G... + 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // >...........G... + 0x41, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // A...........G... + 0x45, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // E...........G... + 0x48, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // H...........G... + 0x4b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // K...........G... + 0x5a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // Z...........G... + 0x5d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // ]...........G... + 0x60, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // `...........G... + 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // c...........G... + 0x66, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, // f............... + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....!........... + 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ........ ....... + 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ + 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, // ................ + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // .... .......+... + 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, // ...........?+... + 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // ............+... + 0x16, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, // ....#........... + 0x28, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, // (............... + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, // )...(... ...*... + 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, // ....)...;...*... + 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, // +....... ...,... + 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // ....(... ...=... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // ........;...=... + 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // >.......;...=... + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, // A....... ...D... + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, // ........;...D... + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // E.......;...=... + 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // H.......;...=... + 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // K....... ...Y... + 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // ........;...Y... + 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // Z.......;...Y... + 0x5d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // ].......;...Y... + 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // `.......;...Y... + 0x63, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // c.......;...Y... + 0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, // f.......6....... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // ................ + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // ....=.......?... + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // >...=.......B... + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // A...=.......F... + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // E...=.......I... + 0x48, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, // H...=.......L... + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, // K...Q........... + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // F.......Q....... + 0x83, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // ....F.......P... + 0x07, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, // ................ + 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2c, 0x00, 0x00, 0x00, // ........A...,... + 0x85, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....+...#...=... + 0x28, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // (............... + 0x07, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, // ................ + 0x3e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...Z.......>... + 0x5d, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, // ]...?...>...`... + 0x42, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // B...>...c...I... + 0x3e, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...f...L....... + 0x38, 0x00, 0x01, 0x00, 0x00, 0x05, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, // 8............... + 0x40, 0x00, // @. +}; +static const uint8_t vs_font_distance_field_outline_dx9[409] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........l....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, // ................ + 0x04, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x0a, 0x00, 0x01, 0x80, 0x02, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ + 0x03, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x04, 0x00, 0x0f, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, 0x01, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ + 0x03, 0x00, 0x0f, 0xe0, 0x03, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x0f, 0xe0, // ................ + 0x04, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... +}; +static const uint8_t vs_font_distance_field_outline_dx11[778] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0xb8, 0x03, 0xd3, 0x5a, 0xf9, 0xd3, 0xa7, 0x53, 0x66, 0x63, 0x68, 0xf0, 0xf4, 0x8f, 0xe4, 0x7e, // ...Z...Sfch....~ + 0x01, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0xcc, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x98, 0x00, 0x00, 0x00, // ....p...ISGN.... + 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x9c, 0x00, 0x00, 0x00, // EXCOORD.OSGN.... + 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x58, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // X...@...V...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...2....... + 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _..........._... + 0xf2, 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // ........g.... .. + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e.... ...... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // . ......F....... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6.... ...... + 0x46, 0x1e, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x05, 0x05, 0x00, // F.......>....... + 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x40, 0x00, // ........@. +}; +static const uint8_t vs_font_distance_field_outline_mtl[1149] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x04, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ........C...#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x75, // put_v_color1 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn1)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, // float4 _entryP + 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, // ointOutput_v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn2)]];. floa + 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // t4 _entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // tput_v_texcoord1 + 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, // [[user(locn3)]] + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // ;. float4 gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, // Position [[posit + 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ion]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // .{. float4 a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color0 [[attribu + 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // te(0)]];. flo + 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x61, // at4 a_color1 [[a + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(1)]];. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // float2 a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // tion [[attribute + 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // (2)]];. float + 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, // 4 a_texcoord0 [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(3)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float4 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord1 [[attribu + 0x74, 0x65, 0x28, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(4)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, // .a_position, 0.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // , 1.0);. out. + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // _entryPointOutpu + 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // t_v_color0 = in. + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, // a_color0;. ou + 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // t._entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x69, // put_v_color1 = i + 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // n.a_color1;. + 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // out._entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput_v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // 0 = in.a_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, // d0;. out._ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, // ryPointOutput_v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, // texcoord1 = in.a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _texcoord1;. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // return out;.}... + 0x05, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x40, 0x00, // ...........@. +}; +extern const uint8_t* vs_font_distance_field_outline_pssl; +extern const uint32_t vs_font_distance_field_outline_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline.sc b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline.sc new file mode 100644 index 00000000000..e97b7e4d1b7 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline.sc @@ -0,0 +1,13 @@ +$input a_position, a_color0, a_color1, a_texcoord0, a_texcoord1 +$output v_color0, v_color1, v_texcoord0, v_texcoord1 + +#include "../../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 0.0, 1.0) ); + v_texcoord0 = a_texcoord0; + v_texcoord1 = a_texcoord1; + v_color0 = a_color0; + v_color1 = a_color1; +} diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_drop_shadow_image.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_drop_shadow_image.bin.h new file mode 100644 index 00000000000..d3138b586f5 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_drop_shadow_image.bin.h @@ -0,0 +1,377 @@ +static const uint8_t vs_font_distance_field_outline_drop_shadow_image_glsl[634] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........M...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, // ec4 a_color1;.at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, // tribute vec2 a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // osition;.attribu + 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // te vec4 a_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // rd0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, // ec4 a_texcoord1; + 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // .attribute vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x76, 0x61, 0x72, // a_texcoord2;.var + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ying vec4 v_colo + 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, // r0;.varying vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color1;.varyi + 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec4 v_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // rd0;.varying vec + 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, // 4 v_texcoord1;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord2;.uniform + 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ + 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // n;. gl_Position + 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // = (u_modelViewP + 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, // . v_texcoord0 = + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, // a_texcoord0;. + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, // v_texcoord1 = a_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, // texcoord1;. v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // excoord2 = a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // coord2;. v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, // r0 = a_color0;. + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, // v_color1 = a_co + 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // lor1;.}... +}; +static const uint8_t vs_font_distance_field_outline_drop_shadow_image_essl[712] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // a_color1;.attrib + 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // ute highp vec2 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // _position;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, // a_texcoord0;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x61, // 4 a_texcoord1;.a + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, // ec4 a_texcoord2; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // .varying highp v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color1;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // texcoord1;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord2;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = a_position; + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // (u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // _texcoord0;. v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, // texcoord1 = a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // xcoord1;. v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // coord2 = a_texco + 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ord2;. v_color0 + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, // = a_color0;. v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // _color1 = a_colo + 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r1;.}... +}; +static const uint8_t vs_font_distance_field_outline_drop_shadow_image_spv[1700] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x06, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ........h.....#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x11, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // C...F...J...M... + 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, // P...S...d...g... + 0x6a, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, // j...m...p...s... + 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, // ....main........ + 0x2c, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, // ,...UniformBlock + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........,....... + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. + 0x05, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ................ + 0x43, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // C...a_color0.... + 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, // ....F...a_color1 + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, // ........J...a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, // sition......M... + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, // a_texcoord0..... + 0x50, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, // P...a_texcoord1. + 0x05, 0x00, 0x05, 0x00, 0x53, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....S...a_texcoo + 0x72, 0x64, 0x32, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x64, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // rd2.....d...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... + 0x67, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // g...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // utput.v_color0.. + 0x05, 0x00, 0x09, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....j...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput.v_colo + 0x72, 0x31, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // r1......m...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // texcoord0....... + 0x70, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // p...@entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord + 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x73, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // 1.......s...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, // texcoord2...H... + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ,...........H... + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ,.......#....... + 0x48, 0x00, 0x05, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // H...,........... + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....G...,....... + 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G......."....... + 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G.......!....... + 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...C........... + 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G...F........... + 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // G...J........... + 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // G...M........... + 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // G...P........... + 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, // G...S........... + 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...d........... + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...g........... + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G...j........... + 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // G...m........... + 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // G...p........... + 0x47, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // G...s........... + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // ........!....... + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ............ ... + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ + 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x15, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........ ....... + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // +..............? + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +............... + 0x2b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +.......&....... + 0x18, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....+........... + 0x1e, 0x00, 0x03, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // ....,...+... ... + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // -.......,...;... + 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // -........... ... + 0x2f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // /.......+... ... + 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...........;... + 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...C.......;... + 0x42, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // B...F....... ... + 0x49, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // I...........;... + 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // I...J.......;... + 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...M.......;... + 0x42, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // B...P.......;... + 0x42, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // B...S....... ... + 0x63, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...........;... + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...d.......;... + 0x63, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...g.......;... + 0x63, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...j.......;... + 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...m.......;... + 0x63, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // c...p.......;... + 0x63, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, // c...s.......6... + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // ........=....... + 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // D...C...=....... + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // G...F...=....... + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // K...J...=....... + 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // N...M...=....... + 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // Q...P...=....... + 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // T...S...Q....... + 0x90, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....K.......Q... + 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........K....... + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, // P............... + 0x91, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ............A... + 0x2f, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, // /...........&... + 0x3d, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, // =...+........... + 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, // ................ + 0x94, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, // ....>...d....... + 0x3e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...g...D...>... + 0x6a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x6d, 0x00, 0x00, 0x00, // j...G...>...m... + 0x4e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, // N...>...p...Q... + 0x3e, 0x00, 0x03, 0x00, 0x73, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...s...T....... + 0x38, 0x00, 0x01, 0x00, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, // 8............... + 0x12, 0x00, 0x40, 0x00, // ..@. +}; +static const uint8_t vs_font_distance_field_outline_drop_shadow_image_dx9[445] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ................ + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, // ................ + 0x04, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x02, 0x80, 0x05, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, // ................ + 0x02, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0xe0, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x04, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x02, 0x80, 0x05, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ + 0x01, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... + 0x00, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, // ................ + 0x01, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0f, 0xe0, 0x03, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x0f, 0xe0, 0x04, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............. +}; +static const uint8_t vs_font_distance_field_outline_drop_shadow_image_dx11[872] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x03, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........,...DXBC + 0x52, 0xfc, 0x6d, 0x4d, 0x40, 0xd5, 0x3b, 0x61, 0x1a, 0x9e, 0xf4, 0x2b, 0xde, 0x55, 0xa6, 0x76, // R.mM@.;a...+.U.v + 0x01, 0x00, 0x00, 0x00, 0x2c, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....,.......,... + 0xe4, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0xb0, 0x00, 0x00, 0x00, // ........ISGN.... + 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ + 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0xa7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x05, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. + 0x4f, 0x53, 0x47, 0x4e, 0xb4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGN............ + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0xa4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0xaa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x84, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...a...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...2....... + 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _..........._... + 0xf2, 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x05, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e.... ...... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // . ......e.... .. + 0x04, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... + 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... + 0x06, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... + 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // F.......6.... .. + 0x03, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, // . ......F....... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x05, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, // ....>........... + 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x40, 0x00, // ......@. +}; +static const uint8_t vs_font_distance_field_outline_drop_shadow_image_mtl[1306] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x67, 0x7a, 0xc3, 0x01, 0x00, 0x0f, 0x75, // VSH......gz....u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x04, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x75, // put_v_color1 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn1)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, // float4 _entryP + 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, // ointOutput_v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn2)]];. floa + 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // t4 _entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // tput_v_texcoord1 + 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, // [[user(locn3)]] + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, // ;. float4 _en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, // _texcoord2 [[use + 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // r(locn4)]];. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // float4 gl_Positi + 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, // on [[position]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // .};..struct xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // MtlMain_in.{. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // float4 a_color0 + 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, // [[attribute(0)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ];. float4 a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color1 [[attribu + 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // te(1)]];. flo + 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at2 a_position [ + 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(2)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, // . float4 a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // xcoord0 [[attrib + 0x75, 0x74, 0x65, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // ute(3)]];. fl + 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // oat4 a_texcoord1 + 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x34, 0x29, 0x5d, // [[attribute(4)] + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ];. float4 a_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // texcoord2 [[attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x35, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // ibute(5)]];.};.. + 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // vertex xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // in_out xlatMtlMa + 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // in(xlatMtlMain_i + 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, // n in [[stage_in] + 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, // ], constant _Glo + 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, // bal& _mtl_u [[bu + 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, // ffer(0)]]).{. + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, // xlatMtlMain_out + 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // out = {};. o + 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // ut.gl_Position = + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // _mtl_u.u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // iewProj * float4 + 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, // (in.a_position, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, // 0.0, 1.0);. o + 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // ut._entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // tput_v_color0 = + 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // in.a_color0;. + 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // out._entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, // Output_v_color1 + 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x20, // = in.a_color1;. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // out._entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ntOutput_v_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // ord0 = in.a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, // oord0;. out._ + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // entryPointOutput + 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x69, // _v_texcoord1 = i + 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, // n.a_texcoord1;. + 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // out._entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ntOutput_v_texco + 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // ord2 = in.a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // oord2;. retur + 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x06, 0x05, 0x00, 0x06, 0x00, // n out;.}........ + 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x40, 0x00, // ........@. +}; +extern const uint8_t* vs_font_distance_field_outline_drop_shadow_image_pssl; +extern const uint32_t vs_font_distance_field_outline_drop_shadow_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_drop_shadow_image.sc b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_drop_shadow_image.sc new file mode 100644 index 00000000000..b4615adf0d5 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_drop_shadow_image.sc @@ -0,0 +1,14 @@ +$input a_position, a_color0, a_color1, a_texcoord0, a_texcoord1, a_texcoord2 +$output v_color0, v_color1, v_texcoord0, v_texcoord1, v_texcoord2 + +#include "../../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 0.0, 1.0) ); + v_texcoord0 = a_texcoord0; + v_texcoord1 = a_texcoord1; + v_texcoord2 = a_texcoord2; + v_color0 = a_color0; + v_color1 = a_color1; +} diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_image.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_image.bin.h new file mode 100644 index 00000000000..852171c9f79 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_image.bin.h @@ -0,0 +1,338 @@ +static const uint8_t vs_font_distance_field_outline_image_glsl[551] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, // ec4 a_color1;.at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, // tribute vec2 a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // osition;.attribu + 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // te vec4 a_texcoo + 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // rd0;.attribute v + 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, // ec4 a_texcoord1; + 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // .varying vec4 v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // color0;.varying + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, // vec4 v_color1;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // xcoord0;.varying + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec4 v_texcoord + 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // 1;.uniform mat4 + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; + 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, // . tmpvar_1.zw = + 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // vec2(0.0, 1.0); + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy = + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, // a_position;. g + 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // l_Position = (u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, // modelViewProj * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, // tmpvar_1);. v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // excoord0 = a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // coord0;. v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // oord1 = a_texcoo + 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, // rd1;. v_color0 + 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // = a_color0;. v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color1 = a_color + 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 1;.}... +}; +static const uint8_t vs_font_distance_field_outline_image_essl[617] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........<...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // a_color1;.attrib + 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // ute highp vec2 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // _position;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // bute highp vec4 + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, // a_texcoord0;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x76, // 4 a_texcoord1;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color1;.varying + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // highp vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // xcoord0;.varying + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // highp vec4 v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord1;.uniform + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, // highp mat4 u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // delViewProj;.voi + 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, // d main ().{. hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, // 1;. tmpvar_1.zw + 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // = vec2(0.0, 1.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // );. tmpvar_1.xy + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, // = a_position;. + 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, // gl_Position = ( + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, // u_modelViewProj + 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, // * tmpvar_1);. v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, // _texcoord0 = a_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, // excoord0;. v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // xcoord1 = a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // oord1;. v_color + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // 0 = a_color0;. + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // v_color1 = a_col + 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or1;.}... +}; +static const uint8_t vs_font_distance_field_outline_image_spv[1538] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, // >...A...E...H... + 0x4b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, // K...Z...]...`... + 0x63, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // c...f........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........)...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // ).......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, // iewProj.....+... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........>...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, // lor0........A... + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_color1........ + 0x45, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // E...a_position.. + 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....H...a_texcoo + 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, // rd0.....K...a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x5a, 0x00, 0x00, 0x00, // xcoord1.....Z... + 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu + 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // t.gl_Position... + 0x05, 0x00, 0x09, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....]...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput.v_colo + 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // r0......`...@ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x63, 0x00, 0x00, 0x00, // color1......c... + 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu + 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, // t.v_texcoord0... + 0x05, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....f...@entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // intOutput.v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, // oord1...H...)... + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, // ........H...)... + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ....#.......H... + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // )............... + 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...).......G... + 0x2b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // +...".......G... + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // +...!.......G... + 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // >...........G... + 0x41, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // A...........G... + 0x45, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // E...........G... + 0x48, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // H...........G... + 0x4b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // K...........G... + 0x5a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // Z...........G... + 0x5d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // ]...........G... + 0x60, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // `...........G... + 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // c...........G... + 0x66, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, // f............... + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....!........... + 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ........ ....... + 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ + 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, // ................ + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // .... .......+... + 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, // ...........?+... + 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // ............+... + 0x16, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, // ....#........... + 0x28, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, // (............... + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, // )...(... ...*... + 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, // ....)...;...*... + 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, // +....... ...,... + 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // ....(... ...=... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // ........;...=... + 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // >.......;...=... + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, // A....... ...D... + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, // ........;...D... + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // E.......;...=... + 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, // H.......;...=... + 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // K....... ...Y... + 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // ........;...Y... + 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // Z.......;...Y... + 0x5d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // ].......;...Y... + 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // `.......;...Y... + 0x63, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, // c.......;...Y... + 0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, // f.......6....... + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // ................ + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // ....=.......?... + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // >...=.......B... + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // A...=.......F... + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // E...=.......I... + 0x48, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, // H...=.......L... + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, // K...Q........... + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // F.......Q....... + 0x83, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // ....F.......P... + 0x07, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, // ................ + 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x2c, 0x00, 0x00, 0x00, // ........A...,... + 0x85, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....+...#...=... + 0x28, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // (............... + 0x07, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, // ................ + 0x3e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...Z.......>... + 0x5d, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, // ]...?...>...`... + 0x42, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // B...>...c...I... + 0x3e, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...f...L....... + 0x38, 0x00, 0x01, 0x00, 0x00, 0x05, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, // 8............... + 0x40, 0x00, // @. +}; +static const uint8_t vs_font_distance_field_outline_image_dx9[409] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........l....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x01, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, // ................ + 0x04, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x0a, 0x00, 0x01, 0x80, 0x02, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ + 0x03, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x04, 0x00, 0x0f, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, 0x01, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ + 0x03, 0x00, 0x0f, 0xe0, 0x03, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x0f, 0xe0, // ................ + 0x04, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... +}; +static const uint8_t vs_font_distance_field_outline_image_dx11[778] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0xb8, 0x03, 0xd3, 0x5a, 0xf9, 0xd3, 0xa7, 0x53, 0x66, 0x63, 0x68, 0xf0, 0xf4, 0x8f, 0xe4, 0x7e, // ...Z...Sfch....~ + 0x01, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0xcc, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x98, 0x00, 0x00, 0x00, // ....p...ISGN.... + 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x9c, 0x00, 0x00, 0x00, // EXCOORD.OSGN.... + 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x58, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x56, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // X...@...V...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, // ........_....... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._...2....... + 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _..........._... + 0xf2, 0x10, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // ........g.... .. + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e.... ...... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // . ......F....... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6.... ...... + 0x46, 0x1e, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x05, 0x05, 0x00, // F.......>....... + 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x40, 0x00, // ........@. +}; +static const uint8_t vs_font_distance_field_outline_image_mtl[1149] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf7, 0xae, 0x6e, 0x01, 0x00, 0x0f, 0x75, // VSH........n...u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x04, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ........C...#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x75, // put_v_color1 [[u + 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // ser(locn1)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, // float4 _entryP + 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, // ointOutput_v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, // coord0 [[user(lo + 0x63, 0x6e, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // cn2)]];. floa + 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // t4 _entryPointOu + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, // tput_v_texcoord1 + 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x33, 0x29, 0x5d, 0x5d, // [[user(locn3)]] + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // ;. float4 gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, // Position [[posit + 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ion]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // .{. float4 a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color0 [[attribu + 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // te(0)]];. flo + 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x5b, 0x5b, 0x61, // at4 a_color1 [[a + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(1)]];. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // float2 a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // tion [[attribute + 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // (2)]];. float + 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, // 4 a_texcoord0 [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(3)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float4 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord1 [[attribu + 0x74, 0x65, 0x28, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(4)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, // .a_position, 0.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // , 1.0);. out. + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // _entryPointOutpu + 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // t_v_color0 = in. + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, // a_color0;. ou + 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // t._entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x69, // put_v_color1 = i + 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // n.a_color1;. + 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // out._entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput_v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // 0 = in.a_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, // d0;. out._ent + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, // ryPointOutput_v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, // texcoord1 = in.a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _texcoord1;. + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // return out;.}... + 0x05, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x40, 0x00, // ...........@. +}; +extern const uint8_t* vs_font_distance_field_outline_image_pssl; +extern const uint32_t vs_font_distance_field_outline_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_image.sc b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_image.sc new file mode 100644 index 00000000000..e97b7e4d1b7 --- /dev/null +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_outline_image.sc @@ -0,0 +1,13 @@ +$input a_position, a_color0, a_color1, a_texcoord0, a_texcoord1 +$output v_color0, v_color1, v_texcoord0, v_texcoord1 + +#include "../../common/common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 0.0, 1.0) ); + v_texcoord0 = a_texcoord0; + v_texcoord1 = a_texcoord1; + v_color0 = a_color0; + v_color1 = a_color1; +} diff --git a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_subpixel.bin.h b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_subpixel.bin.h index 0d0ce67d86d..66ff9924c8a 100644 --- a/3rdparty/bgfx/examples/common/font/vs_font_distance_field_subpixel.bin.h +++ b/3rdparty/bgfx/examples/common/font/vs_font_distance_field_subpixel.bin.h @@ -1,71 +1,102 @@ -static const uint8_t vs_font_distance_field_subpixel_glsl[431] = +static const uint8_t vs_font_distance_field_subpixel_glsl[397] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x8a, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ....attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec2 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // on;.attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ghp vec4 a_texco - 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // ord0;.varying hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 v_color - 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.varying highp - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec4 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, // mpvar_1.zw = vec - 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, // 2(0.0, 1.0);. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, // mpvar_1.xy = a_p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // osition;. gl_Po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // sition = (u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // lViewProj * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ar_1);. v_texco - 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // ord0 = a_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // d0;. v_color0 = - 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........`...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec2 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // attribute vec4 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.varying vec4 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, // var_1.zw = vec2( + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 0.0, 1.0);. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // var_1.xy = a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, // ition;. gl_Posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // tion = (u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // iewProj * tmpvar + 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _1);. v_texcoor + 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // d0 = a_texcoord0 + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, // ;. v_color0 = a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... }; -static const uint8_t vs_font_distance_field_subpixel_spv[1246] = +static const uint8_t vs_font_distance_field_subpixel_essl[439] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xb0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // main....;...?... - 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, // B...M...P...S... - 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ....main........ - 0x23, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, // #...$Global..... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // bute highp vec2 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = a_position; + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // (u_modelViewPro + 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // _texcoord0;. v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color0 = a_color + 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0;.}... +}; +static const uint8_t vs_font_distance_field_subpixel_spv[1218] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........l....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x34, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // 4...8...;...F... + 0x49, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // I...L........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........#...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // #.......u_modelV 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, // iewProj.....%... - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........;...a_co - 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, // lor0........?... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x34, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........4...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, // lor0........8... 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... - 0x42, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // B...a_texcoord0. - 0x05, 0x00, 0x0a, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....M...@entryPo + 0x3b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // ;...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....F...@entryPo 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x50, 0x00, 0x00, 0x00, // ition.......P... + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x49, 0x00, 0x00, 0x00, // ition.......I... 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // t.v_color0...... - 0x53, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // S...@entryPointO + 0x4c, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // L...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...#....... 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...#....... 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, // #.......H...#... 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // #.......G...%... - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ".......G...;... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, // ........G...?... - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, // ........G...B... - 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // ........G...M... - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, // ........G...P... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, // ........G...S... + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // ".......G...%... + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, // !.......G...4... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, // ........G...8... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // ........G...;... + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, // ........G...F... + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, // ........G...I... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, // ........G...L... 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... @@ -79,152 +110,153 @@ static const uint8_t vs_font_distance_field_subpixel_spv[1246] = 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // "... ...$....... 0x23, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // #...;...$...%... 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...&....... - 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // "... ...:....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....;...:...;... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...>....... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // ....;...>...?... - 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // ....;...:...B... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...L....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // ....;...L...M... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // ....;...L...P... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, // ....;...L...S... + 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // "... ...3....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // ....;...3...4... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...7....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // ....;...7...8... + 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // ....;...3...;... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...E....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // ....;...E...F... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // ....;...E...I... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, // ....;...E...L... 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, // =.......5...4... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // =.......9...8... 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // =.......<...;... - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // =.......@...?... - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // =.......C...B... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // Q.......k...@... - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // ....Q.......l... - 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // @.......P....... - 0x6d, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, // m...k...l....... - 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, // ....A...&...n... + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // Q.......f...9... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, // ....Q.......g... + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // 9.......P....... + 0x68, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, // h...f...g....... + 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, // ....A...&...i... 0x25, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, // %.......=..."... - 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // o...n........... - 0x70, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // p...m...o...Q... - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....w...p....... - 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // ........x...w... - 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // R...........x... - 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, // p.......>...M... - 0x96, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....>...P...<... - 0x3e, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...S...C....... - 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // 8...........@. + 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // j...i........... + 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // k...h...j...>... + 0x46, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x49, 0x00, 0x00, 0x00, // F...k...>...I... + 0x35, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // 5...>...L...<... + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....8........... + 0x40, 0x00, // @. }; -static const uint8_t vs_font_distance_field_subpixel_dx9[329] = +static const uint8_t vs_font_distance_field_subpixel_dx9[337] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // $.........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ - 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, // ................ - 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, // ................ - 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........$....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, // ................ + 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................ + 0x00, // . }; -static const uint8_t vs_font_distance_field_subpixel_dx11[582] = +static const uint8_t vs_font_distance_field_subpixel_dx11[590] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xe3, 0x5d, 0xf0, 0xa8, 0xb3, 0x95, 0xec, 0x3a, // ....DXBC.].....: - 0x48, 0x51, 0xb3, 0xab, 0xaf, 0x69, 0xf9, 0x66, 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, // HQ...i.f........ - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, // ....,........... - 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNh........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........V....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ - 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // _............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. - 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNl........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO - 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // RD..SHDR....@... - 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // @...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _...2......._... - 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // ........g.... .. - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e.... ...... - 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... - 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... - 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... - 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... - 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... - 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... - 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // F.......>....... - 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0xe3, 0x5d, 0xf0, 0xa8, 0xb3, 0x95, 0xec, 0x3a, 0x48, 0x51, 0xb3, 0xab, 0xaf, 0x69, 0xf9, 0x66, // .].....:HQ...i.f + 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...@...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // ........_...2... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._........... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // . ......F....... + 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // >...........@. }; -static const uint8_t vs_font_distance_field_subpixel_mtl[790] = +static const uint8_t vs_font_distance_field_subpixel_mtl[847] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0xf1, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at2 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // . float4 a_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // oord0 [[attribut - 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // e(2)]];.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // utput {. float4 - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, // gl_Position [[p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // osition]];. flo - 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // at4 v_color0;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // float4 v_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // d0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, // atMtlShaderUnifo - 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // rm {. float4x4 - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; - 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.vertex xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, // tmpvar_1.zw = - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // float2(0.0, 1.0) - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, // ;. tmpvar_1.xy - 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // = _mtl_i.a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, // ion;. _mtl_o.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, // _Position = (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // l_u.u_modelViewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // . _mtl_o.v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // oord0 = _mtl_i.a - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // _texcoord0;. _m - 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // tl_o.v_color0 = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // _mtl_i.a_color0; - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // . float4 gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi + 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // on]];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, // xlatMtlMain_in. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, // {. float4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // olor0 [[attribut + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e(0)]];. floa + 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // t2 a_position [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float4 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord0 [[attribu + 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(2)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, // .a_position, 0.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // , 1.0);. out. + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // _entryPointOutpu + 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // t_v_color0 = in. + 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, // a_color0;. ou + 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // t._entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // = in.a_texcoord0 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, // ;. return out + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ;.}..........@. }; extern const uint8_t* vs_font_distance_field_subpixel_pssl; extern const uint32_t vs_font_distance_field_subpixel_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_color.bin.h b/3rdparty/bgfx/examples/common/imgui/fs_imgui_color.bin.h deleted file mode 100644 index fc2e222dd71..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_color.bin.h +++ /dev/null @@ -1,101 +0,0 @@ -static const uint8_t fs_imgui_color_glsl[89] = -{ - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x76, 0x61, // FSH....I..J...va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 - 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // v_color0;.void - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, // main ().{. gl_F - 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // ragColor = v_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0;.}... -}; -static const uint8_t fs_imgui_color_spv[402] = -{ - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x02, // FSH....I........ - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, // #.........+..... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, // ..!...*......... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, // ................ - 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ......!...v_colo - 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x62, 0x67, // r0........*...bg - 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, // fx_FragData0..G. - 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..!...........G. - 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, // ..*............. - 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ......!......... - 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, // .......... ..... - 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // .. ...........;. - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .. ...!....... . - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..)...........;. - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ..)...*.......6. - 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..........=..... - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x2a, 0x00, // .."...!...>...*. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..".......8..... - 0x00, 0x00, // .. -}; -static const uint8_t fs_imgui_color_dx9[131] = -{ - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x03, // FSH....I..t..... - 0xff, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, // ......CTAB....#. - 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, // ................ - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......ps_3_0.Mic - 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler - 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, // 10.1............ - 0x0f, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, // ................ - 0x00, 0x00, 0x00, // ... -}; -static const uint8_t fs_imgui_color_dx11[262] = -{ - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x44, 0x58, // FSH....I......DX - 0x42, 0x43, 0xa6, 0x7f, 0x08, 0xe2, 0x95, 0xbd, 0x5f, 0xa3, 0x3f, 0x5b, 0x58, 0x8e, 0x54, 0x0f, // BC......_.?[X.T. - 0x89, 0x67, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, // .g............,. - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, // ..........ISGNL. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........8..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..D............. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, // ..........SV_POS - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x4f, 0x53, // ITION.COLOR...OS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, // ......SV_TARGET. - 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x38, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0e, 0x00, // ..SHDR8...@..... - 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...........e. - 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, // ... ......6.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......F.......>. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...... -}; -static const uint8_t fs_imgui_color_mtl[404] = -{ - 0x46, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x75, 0x73, // FSH....I......us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // r0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // t {. float4 gl_ - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // FragColor;.};.st - 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad - 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, // erUniform {.};.f - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // ragment xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // haderOutput xlat - 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // MtlMain (xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // ShaderInput _mtl - 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, // _i [[stage_in]], - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // constant xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, // lShaderUniform& - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, // _mtl_u [[buffer( - 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // 0)]]).{. xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, // lShaderOutput _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // tl_o;. _mtl_o.g - 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // l_FragColor = _m - 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, // tl_i.v_color0;. - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, // return _mtl_o;. - 0x7d, 0x0a, 0x0a, 0x00, // }... -}; -extern const uint8_t* fs_imgui_color_pssl; -extern const uint32_t fs_imgui_color_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_color.sc b/3rdparty/bgfx/examples/common/imgui/fs_imgui_color.sc deleted file mode 100644 index 0b13177a98c..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_color.sc +++ /dev/null @@ -1,13 +0,0 @@ -$input v_color0 - -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -void main() -{ - gl_FragColor = v_color0; -} diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_cubemap.bin.h b/3rdparty/bgfx/examples/common/imgui/fs_imgui_cubemap.bin.h deleted file mode 100644 index bad9ff03c72..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_cubemap.bin.h +++ /dev/null @@ -1,230 +0,0 @@ -static const uint8_t fs_imgui_cubemap_glsl[363] = -{ - 0x46, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH....e...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... - 0x00, 0x01, 0x00, 0x33, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // ...3...varying h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, // ighp vec3 v_norm - 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, // al;.uniform high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, // p vec4 u_imageLo - 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // dEnabled;.unifor - 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, // m lowp samplerCu - 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, // be s_texColor;.v - 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. - 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec4 tmpvar - 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // _1;. tmpvar_1.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, // yz = textureCube - 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // Lod (s_texCol - 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2c, 0x20, 0x75, 0x5f, // or, v_normal, u_ - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, // imageLodEnabled. - 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // x).xyz;. tmpvar - 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x30, // _1.w = (0.2 + (0 - 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, // .8 * u_imageLodE - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // nabled.y));. gl - 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _FragColor = tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // var_1;.}... -}; -static const uint8_t fs_imgui_cubemap_spv[1446] = -{ - 0x46, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH....e...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x7c, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, // ..|.....#....... - 0x08, 0x00, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, // ..........GLSL.s - 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, // td.450.......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x6c, 0x00, // ..main....c...l. - 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, // ..main.......... - 0x00, 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, // ..BgfxSamplerCub - 0x65, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, // e.............m_ - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, // sampler......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, // ......m_texture. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ...... ...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, // olor......"...s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, // texColorSampler. - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......%...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // olorTexture..... - 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..D...$Global... - 0x08, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // ..D.......u_imag - 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x00, 0x00, 0x00, 0x05, 0x00, // eLodEnabled..... - 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x63, 0x00, // ..F...........c. - 0x00, 0x00, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_normal...... - 0x06, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ..l...bgfx_FragD - 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x22, 0x00, // ata0..G...%...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x21, 0x00, // ......G...%...!. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...D..... - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x44, 0x00, // ..#.......G...D. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, // ......G...F...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...c..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...l..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, // .......... ..... - 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, // ................ - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, // ..;....... ..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, // .. ...!......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x06, 0x00, // ..;...!..."..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // .. ...$......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, // ..;...$...%..... - 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, // ......(... ..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+...(...-..... - 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......1......... - 0x03, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, // ..D....... ...E. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, // ......D...;...E. - 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x4c, 0x00, // ..F...........L. - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, // .. .......+...L. - 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, // ..M....... ...N. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........+..... - 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..T.....L>+..... - 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x4c, 0x00, // ..U.....L?+...L. - 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x62, 0x00, // ..V....... ...b. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x62, 0x00, // ..........;...b. - 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x6b, 0x00, // ..c....... ...k. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x6b, 0x00, // ..........;...k. - 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ..l.......6..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, // ................ - 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, // ......=.......#. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x00, // .."...=.......&. - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00, // ..%...P.......'. - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x20, 0x00, // ..#...&...>... . - 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x64, 0x00, // ..'...=.......d. - 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x88, 0x00, // ..c...=......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, // .. ...Q......... - 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, // ..........Q..... - 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. - 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x2d, 0x00, // ..N.......F...-. - 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8b, 0x00, // ..M...=......... - 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0xa3, 0x00, // ......V...1..... - 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, // ..........X..... - 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x02, 0x00, // ..........d..... - 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x8e, 0x00, // ......A...N..... - 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..F...-...V...=. - 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8f, 0x00, // ..........U..... - 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x54, 0x00, // ..............T. - 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x94, 0x00, // ......Q......... - 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x94, 0x00, // ..P............. - 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. - 0x03, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..l...........8. - 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ...... -}; -static const uint8_t fs_imgui_cubemap_dx9[384] = -{ - 0x46, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH....e...s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, // Color0......u_im - 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, // ageLodEnabled... - 0x00, 0x01, 0x00, 0x48, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x43, // ...H...........C - 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, // TAB............. - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x44, // ...............D - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, // ...`...........t - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo - 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // r............... - 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, // ...u_imageLodEna - 0x62, 0x6c, 0x65, 0x64, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, // bled............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0xcd, // 10.1..Q........ - 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, // .L?..L>......... - 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x00, // ................ - 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, // ..............._ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x01, // ................ - 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x08, 0x80, 0x00, // .....U.......... - 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x55, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // .U.......U...... -}; -static const uint8_t fs_imgui_cubemap_dx11[443] = -{ - 0x46, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH....e...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x00, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, // ...s_texColor0.. - 0x00, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x3a, 0x0c, 0x3f, 0xee, 0x22, // .......DXBC:.?." - 0x31, 0x60, 0x3f, 0x80, 0x4a, 0x2e, 0x3f, 0xcb, 0x18, 0x1c, 0x94, 0x01, 0x00, 0x00, 0x00, 0x80, // 1`?.J.?......... - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, // .......,........ - 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, // ...ISGNL........ - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ...8............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, // ...........D.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, // ................ - 0x07, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x4e, // ...SV_POSITION.N - 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, // ORMAL..OSGN,.... - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....... ........ - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, // ...............S - 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xc4, // V_TARGET...SHDR. - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, // ...@...1...Y...F - 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, // . .........Z.... - 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, // `......X0...p... - 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, // ...UU..b...r.... - 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, // ...e.... ......h - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, // .......H........ - 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, // ...F.......F~... - 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, // ....`........ .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, // .......6...r ... - 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x82, // ...F.......2.... - 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ...... - 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x01, 0x40, 0x00, 0x00, 0xcd, // ....@....L?.@... - 0xcc, 0x4c, 0x3e, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // .L>>....... -}; -static const uint8_t fs_imgui_cubemap_mtl[747] = -{ - 0x46, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH....e...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0xc4, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, // ......using name - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, // space metal;.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // rInput {. float - 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // 3 v_normal;.};.s - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha - 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // oat4 gl_FragColo - 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // r;.};.struct xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x69, // m {. float4 u_i - 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3b, 0x0a, // mageLodEnabled;. - 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // };.fragment xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, // xlatMtlMain (xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, // tMtlShaderInput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, // _mtl_i [[stage_i - 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, // n]], constant xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, // atMtlShaderUnifo - 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, // rm& _mtl_u [[buf - 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, // fer(0)]]. , t - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, // exturecube<float - 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, // > s_texColor [[t - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, // exture(0)]], sam - 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, // pler _mtlsmp_s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // exColor [[sample - 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, // r(0)]]).{. xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _mtl_o;. float4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_1 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s_texColor.sampl - 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // e(_mtlsmp_s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x5f, // olor, (float3)(_ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, // mtl_i.v_normal), - 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // level(_mtl_u.u_ - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, // imageLodEnabled. - 0x78, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // x)).xyz;. tmpva - 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, 0x20, 0x2b, 0x20, 0x28, // r_1.w = (0.2 + ( - 0x30, 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, // 0.8 * _mtl_u.u_i - 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x79, // mageLodEnabled.y - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, // ));. _mtl_o.gl_ - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, // FragColor = tmpv - 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, // ar_1;. return _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // mtl_o;.}... -}; -extern const uint8_t* fs_imgui_cubemap_pssl; -extern const uint32_t fs_imgui_cubemap_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_cubemap.sc b/3rdparty/bgfx/examples/common/imgui/fs_imgui_cubemap.sc deleted file mode 100644 index 20bb3a52a97..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_cubemap.sc +++ /dev/null @@ -1,21 +0,0 @@ -$input v_normal - -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -uniform vec4 u_imageLodEnabled; -SAMPLERCUBE(s_texColor, 0); - -#define u_imageLod u_imageLodEnabled.x -#define u_imageEnabled u_imageLodEnabled.y - -void main() -{ - vec3 color = textureCubeLod(s_texColor, v_normal, u_imageLod).xyz; - float alpha = 0.2 + 0.8*u_imageEnabled; - gl_FragColor = vec4(color, alpha); -} diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.bin.h b/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.bin.h index b31a2f0abcc..c68a69228d3 100644 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.bin.h +++ b/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.bin.h @@ -1,231 +1,261 @@ -static const uint8_t fs_imgui_image_glsl[360] = +static const uint8_t fs_imgui_image_glsl[352] = { - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... - 0x00, 0x01, 0x00, 0x30, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // ...0...varying h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec2 v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, // oord0;.uniform h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // ighp vec4 u_imag + 0x46, 0x53, 0x48, 0x0b, 0x6f, 0x1e, 0x3e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x75, // FSH.o.><.......u + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, // _imageLodEnabled + 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, // Color........... + 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // ...varying vec2 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // form vec4 u_imag 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // eLodEnabled;.uni 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, // form sampler2D s 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // _texColor;.void - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // main ().{. lowp - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, // vec4 tmpvar_1;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_1.xyz = - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, // texture2DLod - 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2c, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, // texcoord0, u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x29, 0x2e, // geLodEnabled.x). - 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // xyz;. tmpvar_1. - 0x77, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x20, // w = (0.2 + (0.8 - 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, // * u_imageLodEnab - 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, // led.y));. gl_Fr - 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // agColor = tmpvar - 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _1;.}... + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // var_1.xyz = text + 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ure2DLod (s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // olor, v_texcoord + 0x30, 0x2c, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, // 0, u_imageLodEna + 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, // bled.x).xyz;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, // mpvar_1.w = (0.2 + 0x20, 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // + (0.8 * u_imag + 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, // eLodEnabled.y)); + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // . gl_FragColor + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // = tmpvar_1;.}... }; -static const uint8_t fs_imgui_image_spv[1446] = +static const uint8_t fs_imgui_image_essl[372] = { - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x7c, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, // ..|.....#....... - 0x08, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, // ..........GLSL.s - 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, // td.450.......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x6e, 0x00, // ..main....e...n. - 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, // ..main.......... - 0x00, 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, // ..BgfxSampler2D. - 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, // ..............m_ - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, // sampler......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, // ......m_texture. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ...... ...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, // olor......"...s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, // texColorSampler. - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......%...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // olorTexture..... - 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..F...$Global... - 0x08, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // ..F.......u_imag - 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x00, 0x00, 0x00, 0x05, 0x00, // eLodEnabled..... - 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x65, 0x00, // ..H...........e. - 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, // ..v_texcoord0... - 0x06, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ..n...bgfx_FragD - 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x22, 0x00, // ata0..G...%...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x21, 0x00, // ......G...%...!. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...F..... - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, // ..#.......G...F. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x22, 0x00, // ......G...H...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...e..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...n..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, // .......... ..... - 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, // ................ - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, // ..;....... ..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, // .. ...!......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x06, 0x00, // ..;...!..."..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // .. ...$......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, // ..;...$...%..... - 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, // ......(... ..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+...(...-..... - 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......1......... - 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, // ..F....... ...G. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, // ......F...;...G. - 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x4e, 0x00, // ..H...........N. - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x4e, 0x00, // .. .......+...N. - 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x50, 0x00, // ..O....... ...P. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........+..... - 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..V.....L>+..... - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x4e, 0x00, // ..W.....L?+...N. - 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x64, 0x00, // ..X....... ...d. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x64, 0x00, // ..........;...d. - 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x6d, 0x00, // ..e....... ...m. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x6d, 0x00, // ..........;...m. - 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ..n.......6..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, // ................ - 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, // ......=.......#. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x00, // .."...=.......&. - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00, // ..%...P.......'. - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x20, 0x00, // ..#...&...>... . - 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x66, 0x00, // ..'...=.......f. - 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x8a, 0x00, // ..e...=......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, // .. ...Q......... - 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, // ..........Q..... - 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. - 0x06, 0x00, 0x50, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x2d, 0x00, // ..P.......H...-. - 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8d, 0x00, // ..O...=......... - 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0xa5, 0x00, // ......V...1..... - 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, // ..........X..... - 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, // ..........f..... - 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x50, 0x00, 0x00, 0x00, 0x90, 0x00, // ......A...P..... - 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..H...-...X...=. - 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x91, 0x00, // ..........W..... - 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x56, 0x00, // ..............V. - 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x96, 0x00, // ......Q......... - 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x96, 0x00, // ..P............. - 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. - 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..n...........8. - 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ...... + 0x46, 0x53, 0x48, 0x0b, 0x6f, 0x1e, 0x3e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x75, // FSH.o.><.......u + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, // _imageLodEnabled + 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, // Color..........0 + 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // ...varying highp + 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec2 v_texcoord + 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, // vec4 u_imageLod + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // Enabled;.uniform + 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // sampler2D s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // Color;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, // ().{. lowp vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_1;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, // pvar_1.xyz = tex + 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, // ture2DLod (s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // texColor, v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2c, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, // oord0, u_imageLo + 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // dEnabled.x).xyz; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_1.w = + 0x28, 0x30, 0x2e, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x75, 0x5f, // (0.2 + (0.8 * u_ + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, // imageLodEnabled. + 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // y));. gl_FragCo + 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, // lor = tmpvar_1;. + 0x7d, 0x0a, 0x0a, 0x00, // }... }; -static const uint8_t fs_imgui_image_dx9[388] = +static const uint8_t fs_imgui_image_spv[1379] = { - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH.o.><...s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, // Color0......u_im - 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, // ageLodEnabled... - 0x00, 0x01, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x43, // ...L...........C - 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, // TAB............. - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x44, // ...............D - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, // ...`...........t - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo - 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // r............... - 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, // ...u_imageLodEna - 0x62, 0x6c, 0x65, 0x64, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, // bled............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, // 10.1..Q........ - 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3e, 0x1f, // ..?......L?..L>. - 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, // ................ - 0x00, 0xd0, 0xa0, 0x00, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, // ................ - 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ..._............ - 0x08, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x0c, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, // ................ - 0x08, 0x08, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0xff, 0x80, 0xff, // .....U.......... - 0xff, 0x00, 0x00, 0x00, // .... + 0x46, 0x53, 0x48, 0x0b, 0x6f, 0x1e, 0x3e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x75, // FSH.o.><.......u + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, // _imageLodEnabled + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1a, 0x00, 0x1c, // Color0.......... + 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xb3, // .....#.......... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, // ................ + 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, // .......GLSL.std. + 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // 450............. + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, // ...............m + 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x75, // ain....f...j...u + 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x23, // ...main........# + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, // ...s_texColorSam + 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, // pler.......&...s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // _texColorTexture + 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, // .......G...Unifo + 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x47, // rmBlock........G + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, // .......u_imageLo + 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x49, // dEnabled.......I + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, // ...........f...g + 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, // l_FragCoord..... + 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // ...j...v_texcoor + 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x75, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, // d0.....u...bgfx_ + 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, // FragData0..G...# + 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, // ...".......G...# + 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, // ...!.......G...& + 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, // ...".......G...& + 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x47, // ...!.......H...G + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // .......#.......G + 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, // ...G.......G...I + 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, // ...".......G...I + 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, // ...!.......G...f + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, // ...........G...j + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x75, // ...........G...u + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, // ...!............ + 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ....... ...".... + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, // .......;..."...# + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, // ....... ...%.... + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, // .......;...%...& + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x20, // ...........)... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2e, // .......+...).... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x08, // ...........2.... + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, // .......G....... + 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3b, // ...H.......G...; + 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, // ...H...I........ + 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, // ...O... .......+ + 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ...O...P....... + 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, // ...Q...........+ + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x2b, // .......W.....L>+ + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x2b, // .......X.....L?+ + 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, // ...O...Y....... + 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, // ...e...........; + 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, // ...e...f....... + 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, // ...i...........; + 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, // ...i...j....... + 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, // ...t...........; + 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, // ...t...u.......6 + 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, // ...........=.... + 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, // ...$...#...=.... + 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, // ...'...&...=.... + 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, // ...k...j...A...Q + 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x50, // .......I.......P + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, // ...=............ + 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x32, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x27, // ...V...2.......' + 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xb2, // ...$...X........ + 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x95, // .......k........ + 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x49, // ...A...Q.......I + 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, // .......Y...=.... + 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, // ................ + 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x81, // .......X........ + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x9a, // ...........W.... + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0xb2, // ...Q............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9f, // .......Q........ + 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, // ...............P + 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9f, // ................ + 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x75, // ...........>...u + 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, // ...........8.... + 0x00, 0x10, 0x00, // ... }; -static const uint8_t fs_imgui_image_dx11[447] = +static const uint8_t fs_imgui_image_dx9[400] = { - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x00, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, // ...s_texColor0.. - 0x00, 0x01, 0x00, 0x84, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x60, 0x83, 0xa2, 0x5c, 0x77, // .......DXBC`...w - 0x3d, 0xcc, 0x9b, 0xb9, 0x73, 0xdf, 0x41, 0x6b, 0x18, 0x8f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x84, // =...s.Ak........ - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xb8, // .......,........ - 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, // ...ISGNP........ - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ...8............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, // ...........D.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // ...SV_POSITION.T - 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, // EXCOORD....OSGN, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, // ........... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, // ...SV_TARGET...S - 0x48, 0x44, 0x52, 0xc4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x59, // HDR....@...1...Y - 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, // ...F. .........Z - 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, // ....`......X.... - 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, // p......UU..b...2 - 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, // ...h.......H.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ~.......`....... - 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, // . .........6...r - 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ......F.......2 - 0x00, 0x00, 0x0a, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, // .... ........ .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x01, // ........@....L?. - 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // @....L>>....... + 0x46, 0x53, 0x48, 0x0b, 0x6f, 0x1e, 0x3e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH.o.><.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, // ....u_imageLodEn + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, // abled..........L + 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, // ...........CTAB. + 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, // ................ + 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, // ...........D.... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // .......P.......` + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, // ...........t.... + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, // ...............u + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, // _imageLodEnabled + 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, // ...ps_3_0.Micros + 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, // oft (R) HLSL Sha + 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, // der Compiler 10. + 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, // 1..Q..........?. + 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3e, 0x1f, 0x00, 0x00, 0x02, 0x05, // .....L?..L>..... + 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, // ................ + 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, // ................ + 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, // ..............._ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x01, // ................ + 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x0c, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x08, 0x80, 0x00, // ................ + 0x00, 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0xff, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // .U.............. }; -static const uint8_t fs_imgui_image_mtl[751] = +static const uint8_t fs_imgui_image_dx11[480] = { - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0xc8, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, // ......using name - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, // space metal;.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // rInput {. float - 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, // 2 v_texcoord0;.} - 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.struct xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, // ShaderOutput {. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // float4 gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // olor;.};.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // form {. float4 - 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, // u_imageLodEnable - 0x64, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, // d;.};.fragment x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, // latMtlShaderOutp - 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, // ut xlatMtlMain ( - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, // ut _mtl_i [[stag - 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, // e_in]], constant - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, // iform& _mtl_u [[ - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, // buffer(0)]]. , - 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, // texture2d<floa - 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, // t> s_texColor [[ - 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, // texture(0)]], sa - 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, // mpler _mtlsmp_s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, // texColor [[sampl - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_1.xyz = - 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, // s_texColor.samp - 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, // le(_mtlsmp_s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, // Color, (float2)( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _mtl_i.v_texcoor - 0x64, 0x30, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // d0), level(_mtl_ - 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, // u.u_imageLodEnab - 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, // led.x)).xyz;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, // mpvar_1.w = (0.2 - 0x20, 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // + (0.8 * _mtl_u - 0x2e, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, // .u_imageLodEnabl - 0x65, 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // ed.y));. _mtl_o - 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, // .gl_FragColor = - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, // tmpvar_1;. retu - 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // rn _mtl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x6f, 0x1e, 0x3e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x75, // FSH.o.><.......u + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, // _imageLodEnabled + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // Color0.......... + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, // s_texColor0..... + 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x60, 0x83, 0xa2, 0x5c, // ........DXBC`... + 0x77, 0x3d, 0xcc, 0x9b, 0xb9, 0x73, 0xdf, 0x41, 0x6b, 0x18, 0x8f, 0x0e, 0x01, 0x00, 0x00, 0x00, // w=...s.Ak....... + 0x84, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, // ........,....... + 0xb8, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....ISGNP....... + 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....8........... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, // ............D... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x03, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. + 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, // TEXCOORD....OSGN + 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ,........... ... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, // ....SV_TARGET... + 0x53, 0x48, 0x44, 0x52, 0xc4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, // SHDR....@...1... + 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // Y...F. ......... + 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, // Z....`......X... + 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, // .p......UU..b... + 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // 2.......e.... .. + 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, // ....h.......H... + 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... + 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // F~.......`...... + 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // .. .........6... + 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // r ......F....... + 0x32, 0x00, 0x00, 0x0a, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, // 2.... ........ . + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, // .........@....L? + 0x01, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // .@....L>>....... +}; +static const uint8_t fs_imgui_image_mtl[833] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x6f, 0x1e, 0x3e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x73, // FSH.o.><.......s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x39, 0x01, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ........9..s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x39, 0x01, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, // ....9..u_imageLo + 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // dEnabled........ + 0x39, 0x01, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x00, 0x00, // 9..s_texColor... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x01, 0xc2, 0x02, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, // .....9.....#incl + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, // ude <metal_stdli + 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, // b>.#include <sim + 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, // d/simd.h>..using + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, // namespace metal + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, // ;..struct _Globa + 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, // l.{. float4 u + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, // _imageLodEnabled + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // ;.};..struct xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, // tMtlMain_out.{. + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // float4 bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ragData0 [[color + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // (0)]];.};..struc + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, // t xlatMtlMain_in + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, // .{. float2 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // texcoord0 [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, // (locn0)]];.};..f + 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ragment xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ain_out xlatMtlM + 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // ain(xlatMtlMain_ + 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // in in [[stage_in + 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, // ]], constant _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // obal& _mtl_u [[b + 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, // uffer(0)]], text + 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, // ure2d<float> s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // exColor [[textur + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // e(0)]], sampler + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, // s_texColorSample + 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // r [[sampler(0)]] + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // ).{. xlatMtlM + 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, // ain_out out = {} + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // ;. out.bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ragData0 = float + 0x34, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, // 4(s_texColor.sam + 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, // ple(s_texColorSa + 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // mpler, in.v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, // oord0, level(_mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, // l_u.u_imageLodEn + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x30, // abled.x)).xyz, 0 + 0x2e, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x39, 0x38, 0x30, 0x32, 0x33, 0x32, // .200000002980232 + 0x32, 0x34, 0x20, 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, // 24 + (0.80000001 + 0x31, 0x39, 0x32, 0x30, 0x39, 0x32, 0x38, 0x39, 0x36, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // 192092896 * _mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, // _u.u_imageLodEna + 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // bled.y));. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x30, // turn out;.}....0 + 0x00, // . }; extern const uint8_t* fs_imgui_image_pssl; extern const uint32_t fs_imgui_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.sc b/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.sc index c7ee13d956d..0355e104827 100644 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.sc +++ b/3rdparty/bgfx/examples/common/imgui/fs_imgui_image.sc @@ -2,7 +2,7 @@ $input v_texcoord0 /* * Copyright 2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image_swizz.bin.h b/3rdparty/bgfx/examples/common/imgui/fs_imgui_image_swizz.bin.h deleted file mode 100644 index c0623a37362..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image_swizz.bin.h +++ /dev/null @@ -1,270 +0,0 @@ -static const uint8_t fs_imgui_image_swizz_glsl[565] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x03, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x09, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x02, 0x01, 0x00, 0x00, // ...u_swizzle.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... - 0x00, 0x01, 0x00, 0xed, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // .......varying h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec2 v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, // oord0;.uniform h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // ighp vec4 u_imag - 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // eLodEnabled;.uni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // form highp vec4 - 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // u_swizzle;.unifo - 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, // rm sampler2D s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // exColor;.void ma - 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // in ().{. lowp f - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // loat tmpvar_1;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x20, // tmpvar_1 = dot - 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, // (texture2DLod - 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2c, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, // texcoord0, u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x29, 0x2c, // geLodEnabled.x), - 0x20, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // u_swizzle);. l - 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec3 tmpvar_ - 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, // 2;. tmpvar_2.x - 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // = tmpvar_1;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // pvar_2.y = tmpva - 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, // r_1;. tmpvar_2. - 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, // z = tmpvar_1;. - 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // mediump vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_3;. tmpvar_ - 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // 3.xyz = tmpvar_2 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, // ;. tmpvar_3.w = - 0x20, 0x28, 0x30, 0x2e, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x75, // (0.2 + (0.8 * u - 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, // _imageLodEnabled - 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // .y));. gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, // olor = tmpvar_3; - 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... -}; -static const uint8_t fs_imgui_image_swizz_spv[1538] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x09, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x12, 0x01, 0x10, 0x00, // ...u_swizzle.... - 0x01, 0x00, 0xc8, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, // ........#....... - 0x08, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, // ..........GLSL.s - 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, // td.450.......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7c, 0x00, // ..main....s...|. - 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, // ..main.......... - 0x00, 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, // ..BgfxSampler2D. - 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, // ..............m_ - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, // sampler......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, // ......m_texture. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......%...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x73, 0x5f, // olor......'...s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, // texColorSampler. - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......*...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // olorTexture..... - 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..O...$Global... - 0x08, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // ..O.......u_imag - 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, // eLodEnabled..... - 0x06, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, // ..O.......u_swiz - 0x7a, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, // zle.......Q..... - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ......s...v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x62, 0x67, // oord0.....|...bg - 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, // fx_FragData0..G. - 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..*...".......G. - 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, // ..*...!.......H. - 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, // ..O.......#..... - 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...O.......#. - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G...O..... - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...Q..."..... - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...s......... - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...|......... - 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!..... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, // ................ - 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, // ...... ......... - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, // ................ - 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ - 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, // ................ - 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..$...........;. - 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // ..$...%....... . - 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..&...........;. - 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // ..&...'....... . - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..)...........;. - 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ..)...*......... - 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..-... .......+. - 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..-...........+. - 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..-...2......... - 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x4f, 0x00, // ..6...........O. - 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x50, 0x00, // .......... ...P. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, 0x00, // ......O...;...P. - 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x57, 0x00, // ..Q...........W. - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x57, 0x00, // .. .......+...W. - 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, // ..X....... ...Y. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5d, 0x00, // .......... ...]. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........+..... - 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..b.....L>+..... - 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x57, 0x00, // ..c.....L?+...W. - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x72, 0x00, // ..d....... ...r. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x72, 0x00, // ..........;...r. - 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x00, // ..s....... ...{. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7b, 0x00, // ..........;...{. - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, // ..|.......6..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, // ................ - 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, // ......=.......(. - 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..'...=.......+. - 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2c, 0x00, // ..*...P.......,. - 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x25, 0x00, // ..(...+...>...%. - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x74, 0x00, // ..,...=.......t. - 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x99, 0x00, // ..s...=......... - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, // ..%...Q......... - 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, // ..........Q..... - 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. - 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x32, 0x00, // ..Y.......Q...2. - 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9c, 0x00, // ..X...=......... - 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0xb7, 0x00, // ......V...6..... - 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, // ..........X..... - 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, // ..........t..... - 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x9e, 0x00, // ......A...]..... - 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, // ..Q.......=..... - 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x94, 0x00, 0x05, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A. - 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x32, 0x00, // ..Y.......Q...2. - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x00, // ..d...=......... - 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa3, 0x00, // ................ - 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, // ..c............. - 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x50, 0x00, // ......b.......P. - 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, // ................ - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7c, 0x00, // ..........>...|. - 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, // ..........8..... - 0x20, 0x00, // . -}; -static const uint8_t fs_imgui_image_swizz_dx9[452] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x03, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH.o.><...s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, // Color0......u_im - 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, // ageLodEnabled... - 0x00, 0x01, 0x00, 0x09, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x12, 0x01, 0x01, // ....u_swizzle... - 0x00, 0x01, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x36, 0x00, 0x43, // ...|.........6.C - 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, // TAB............. - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x58, // ...............X - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, // ...........d.... - 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x88, // ...t............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, // ................ - 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, // .......u_imageLo - 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, // dEnabled........ - 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x73, 0x77, 0x69, // ...........u_swi - 0x7a, 0x7a, 0x6c, 0x65, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // zzle.ps_3_0.Micr - 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S - 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, // hader Compiler 1 - 0x30, 0x2e, 0x31, 0x00, 0xab, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, // 0.1....Q........ - 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3e, 0x1f, // ..?......L?..L>. - 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x02, // ................ - 0x00, 0xd0, 0xa0, 0x00, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, // ................ - 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ..._............ - 0x08, 0xe4, 0xa0, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, // ................ - 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0c, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x04, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x00, // .........U...... - 0x00, 0xff, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0x40, 0x80, 0xff, // .............@.. - 0xff, 0x00, 0x00, 0x00, // .... -}; -static const uint8_t fs_imgui_image_swizz_dx11[495] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x03, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x00, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x09, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x12, 0x00, 0x10, 0x00, // ...u_swizzle.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, // ...s_texColor0.. - 0x00, 0x01, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x82, 0x53, 0x75, 0xc2, 0x4f, // .......DXBC.Su.O - 0x7e, 0x06, 0x0a, 0x49, 0x27, 0x42, 0x29, 0x01, 0x0a, 0x6a, 0x92, 0x01, 0x00, 0x00, 0x00, 0xa4, // ~..I'B)..j...... - 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xb8, // .......,........ - 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, // ...ISGNP........ - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ...8............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, // ...........D.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // ...SV_POSITION.T - 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, // EXCOORD....OSGN, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, // ........... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, // ...SV_TARGET...S - 0x48, 0x44, 0x52, 0xe4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x59, // HDR....@...9...Y - 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5a, // ...F. .........Z - 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, // ....`......X.... - 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, // p......UU..b...2 - 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, // ...h.......H.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ~.......`....... - 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x08, 0x12, // . .............. - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x22, // . .........2..." - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......... ...... - 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x01, 0x40, 0x00, 0x00, 0xcd, // ....@....L?.@... - 0xcc, 0x4c, 0x3e, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, // .L>6.... ....... - 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, // .......>..... . -}; -static const uint8_t fs_imgui_image_swizz_mtl[950] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x09, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x02, 0x01, 0x00, 0x00, // ...u_swizzle.... - 0x01, 0x00, 0x7f, 0x03, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, // ......using name - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, // space metal;.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // rInput {. float - 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, // 2 v_texcoord0;.} - 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.struct xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, // ShaderOutput {. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // float4 gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // olor;.};.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // form {. float4 - 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, // u_imageLodEnable - 0x64, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x73, 0x77, // d;. float4 u_sw - 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, // izzle;.};.fragme - 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // nt xlatMtlShader - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // Output xlatMtlMa - 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // in (xlatMtlShade - 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, // rInput _mtl_i [[ - 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, // stage_in]], cons - 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // tant xlatMtlShad - 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // erUniform& _mtl_ - 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, // u [[buffer(0)]]. - 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, // , texture2d< - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // float> s_texColo - 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, // r [[texture(0)]] - 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, // , sampler _mtlsm - 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, // p_s_texColor [[s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // ampler(0)]]).{. - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, // tput _mtl_o;. f - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // loat tmpvar_1 = - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // 0;. tmpvar_1 = - 0x64, 0x6f, 0x74, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, // dot (s_texColor. - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, // sample(_mtlsmp_s - 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, // _texColor, (floa - 0x74, 0x32, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // t2)(_mtl_i.v_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, // coord0), level(_ - 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, // mtl_u.u_imageLod - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x29, 0x29, 0x2c, 0x20, 0x5f, 0x6d, 0x74, // Enabled.x)), _mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x73, 0x77, 0x69, 0x7a, 0x7a, 0x6c, 0x65, 0x29, 0x3b, 0x0a, // l_u.u_swizzle);. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // float3 tmpvar_ - 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 2 = 0;. tmpvar_ - 0x32, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, // 2.x = tmpvar_1;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, // tmpvar_2.y = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1;. tmpva - 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_2.z = tmpvar_1 - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. float4 tmpva - 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_3 = 0;. tmpva - 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // r_3.xyz = tmpvar - 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, // _2;. tmpvar_3.w - 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x20, 0x2a, // = (0.2 + (0.8 * - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, // _mtl_u.u_imageL - 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, // odEnabled.y));. - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // _mtl_o.gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, // olor = tmpvar_3; - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... -}; -extern const uint8_t* fs_imgui_image_swizz_pssl; -extern const uint32_t fs_imgui_image_swizz_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image_swizz.sc b/3rdparty/bgfx/examples/common/imgui/fs_imgui_image_swizz.sc deleted file mode 100644 index def45674774..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_image_swizz.sc +++ /dev/null @@ -1,22 +0,0 @@ -$input v_texcoord0 - -/* - * Copyright 2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -uniform vec4 u_imageLodEnabled; -uniform vec4 u_swizzle; -SAMPLER2D(s_texColor, 0); - -#define u_imageLod u_imageLodEnabled.x -#define u_imageEnabled u_imageLodEnabled.y - -void main() -{ - float color = dot(texture2DLod(s_texColor, v_texcoord0, u_imageLod), u_swizzle); - float alpha = 0.2 + 0.8*u_imageEnabled; - gl_FragColor = vec4(vec3_splat(color), alpha); -} diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_latlong.bin.h b/3rdparty/bgfx/examples/common/imgui/fs_imgui_latlong.bin.h deleted file mode 100644 index b28e0a8c36c..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_latlong.bin.h +++ /dev/null @@ -1,313 +0,0 @@ -static const uint8_t fs_imgui_latlong_glsl[651] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, // ...s_texColor... - 0x00, 0x01, 0x00, 0x53, 0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // ...S...varying h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec2 v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, // oord0;.uniform h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // ighp vec4 u_imag - 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // eLodEnabled;.uni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // form lowp sample - 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // rCube s_texColor - 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ - 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x65, // . highp vec3 re - 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // sult_1;. highp - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, // float tmpvar_2;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x5f, // tmpvar_2 = (v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x36, 0x2e, // texcoord0.x * 6. - 0x32, 0x38, 0x33, 0x31, 0x38, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 283185);. highp - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, // float tmpvar_3; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x76, // . tmpvar_3 = (v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x79, 0x20, 0x2a, 0x20, 0x33, // _texcoord0.y * 3 - 0x2e, 0x31, 0x34, 0x31, 0x35, 0x39, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, // .141593);. resu - 0x6c, 0x74, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x28, 0x73, 0x69, 0x6e, 0x28, // lt_1.x = (-(sin( - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x69, 0x6e, // tmpvar_3)) * sin - 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, // (tmpvar_2));. r - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x28, // esult_1.y = cos( - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x73, // tmpvar_3);. res - 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x28, 0x73, 0x69, 0x6e, // ult_1.z = (-(sin - 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6f, // (tmpvar_3)) * co - 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // s(tmpvar_2));. - 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec4 tmpvar - 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, // _4;. tmpvar_4.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, // yz = textureCube - 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // Lod (s_texCol - 0x6f, 0x72, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x2c, 0x20, 0x75, 0x5f, // or, result_1, u_ - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, // imageLodEnabled. - 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // x).xyz;. tmpvar - 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x30, // _4.w = (0.2 + (0 - 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, // .8 * u_imageLodE - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // nabled.y));. gl - 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // _FragColor = tmp - 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // var_4;.}... -}; -static const uint8_t fs_imgui_latlong_spv[1850] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, // ........#....... - 0x08, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, // ..........GLSL.s - 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, // td.450.......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x9c, 0x00, // ..main.......... - 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, // ..main.......... - 0x00, 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, // ..BgfxSamplerCub - 0x65, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, // e.............m_ - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, // sampler......... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, // ......m_texture. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......&...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, 0x73, 0x5f, // olor......(...s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, // texColorSampler. - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......+...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // olorTexture..... - 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..w...$Global... - 0x08, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, // ..w.......u_imag - 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x00, 0x00, 0x00, 0x05, 0x00, // eLodEnabled..... - 0x03, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x93, 0x00, // ..y............. - 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, // ..v_texcoord0... - 0x06, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ......bgfx_FragD - 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x22, 0x00, // ata0..G...+...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, // ......G...+...!. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, // ......H...w..... - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x77, 0x00, // ..#.......G...w. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x22, 0x00, // ......G...y...". - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, // .......... ..... - 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, // ................ - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, // .. ...%......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, // ..;...%...&..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, // .. ...'......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, // ..;...'...(..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // .. ...*......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, // ..;...*...+..... - 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, // .......... ..... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+.......3..... - 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, // ......7.......+. - 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xdb, 0x0f, 0x49, 0x40, 0x15, 0x00, // ......F.....I@.. - 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..L... .......+. - 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..L...M.......+. - 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, // ..L...S......... - 0x03, 0x00, 0x77, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x00, // ..w....... ...x. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x78, 0x00, // ......w...;...x. - 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7f, 0x00, // ..y....... ..... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........+..... - 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ........L>+..... - 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, // ........L? ..... - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x92, 0x00, // ..........;..... - 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9b, 0x00, // .......... ..... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x9b, 0x00, // ..........;..... - 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..........+..... - 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0xdb, 0x0f, 0xc9, 0x40, 0x01, 0x00, 0x03, 0x00, 0x0b, 0x00, // .........@...... - 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ......6......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, // ..=.......)...(. - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..=.......,...+. - 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x29, 0x00, // ..P.......-...). - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x2d, 0x00, // ..,...>...&...-. - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, // ..=............. - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x94, 0x00, // ..Q............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xdd, 0x00, // ................ - 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x46, 0x00, // ..............F. - 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xdd, 0x00, // ................ - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe4, 0x00, // ................ - 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x01, // ......R......... - 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................ - 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, // ................ - 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x01, // ......R......... - 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................ - 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, // ................ - 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xee, 0x00, // ................ - 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x85, 0x00, // ................ - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0xf0, 0x00, // ................ - 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0xf1, 0x00, // ..R............. - 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, // ..........=..... - 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ......&...Q..... - 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x79, 0x00, // ..A...........y. - 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, // ..3...M...=..... - 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x37, 0x00, // ..........V...7. - 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x58, 0x00, // ..............X. - 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x08, 0x01, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x7f, 0x00, // ..........A..... - 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x53, 0x00, // ......y...3...S. - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, // ..=............. - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x86, 0x00, // ................ - 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc5, 0x00, // ................ - 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xfc, 0x00, // ..Q............. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xcb, 0x00, // ......P......... - 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc5, 0x00, // ................ - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>............. - 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ..8....... -}; -static const uint8_t fs_imgui_latlong_dx9[548] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH.o.><...s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, // Color0......u_im - 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x01, 0x00, // ageLodEnabled... - 0x00, 0x01, 0x00, 0xec, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x43, // ...............C - 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, // TAB............. - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x44, // ...............D - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, // ...`...........t - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo - 0x72, 0x00, 0xab, 0x04, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // r............... - 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, // ...u_imageLodEna - 0x62, 0x6c, 0x65, 0x64, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, // bled............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, 0x00, // 10.1..Q........ - 0x00, 0x00, 0x3f, 0xdb, 0x0f, 0xc9, 0x40, 0xdb, 0x0f, 0x49, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x51, // ..?...@..I.....Q - 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0xcd, 0xcc, 0x4c, 0x3f, 0xcd, 0xcc, 0x4c, 0x3e, 0x00, // .........L?..L>. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x00, // ................ - 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x08, 0x0f, 0xa0, 0x02, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x13, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x55, 0xa0, 0x01, 0x00, 0xaa, 0xa0, 0x25, // .........U.....% - 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x90, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xa0, 0x13, // .....U.......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x55, 0xa0, 0x01, 0x00, 0xaa, 0xa0, 0x25, // .........U.....% - 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x05, 0x80, 0x01, 0x00, 0xc5, 0x80, 0x02, 0x00, 0x55, 0x81, 0x01, 0x00, 0x00, 0x02, 0x00, // .........U...... - 0x00, 0x02, 0x80, 0x02, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, // ................ - 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, // ..._............ - 0x08, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, // .........U...... - 0x08, 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0xff, // .....U.......U.. - 0xff, 0x00, 0x00, 0x00, // .... -}; -static const uint8_t fs_imgui_latlong_dx11[619] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x02, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x00, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, // ...s_texColor0.. - 0x00, 0x01, 0x00, 0x30, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x8e, 0x4b, 0x65, 0x9b, 0x2e, // ...0...DXBC.Ke.. - 0xce, 0x92, 0x33, 0xf0, 0xfb, 0x9d, 0x50, 0x09, 0x30, 0x0b, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x30, // ..3...P.0......0 - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xb8, // .......,........ - 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, // ...ISGNP........ - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ...8............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, // ...........D.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // ...SV_POSITION.T - 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, // EXCOORD....OSGN, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, // ........... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, // ...SV_TARGET...S - 0x48, 0x44, 0x52, 0x70, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x59, // HDRp...@.......Y - 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, // ...F. .........Z - 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x04, 0x00, // ....`......X0... - 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, // p......UU..b...2 - 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0a, 0x32, // ...h.......8...2 - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, // ................ - 0x40, 0x00, 0x00, 0xdb, 0x0f, 0x49, 0x40, 0xdb, 0x0f, 0xc9, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // @....I@...@..... - 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...M...B........ - 0xd0, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x07, 0x82, // ...........M.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x80, 0x41, // ...............A - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x06, 0x00, 0xd0, 0x00, 0x00, 0x62, // .......M.......b - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 - 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, // ...........*.... - 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, // ...:.......8.... - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // .......:.......* - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, // .......H........ - 0x00, 0x00, 0x00, 0x46, 0x03, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, // ...F.......F~... - 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, // ....`........ .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, // .......6...r ... - 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x82, // ...F.......2.... - 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ...... - 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3f, 0x01, 0x40, 0x00, 0x00, 0xcd, // ....@....L?.@... - 0xcc, 0x4c, 0x3e, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // .L>>....... -}; -static const uint8_t fs_imgui_latlong_mtl[1038] = -{ - 0x46, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x11, 0x75, 0x5f, 0x69, 0x6d, 0x61, // FSH.o.><...u_ima - 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x02, 0x01, 0x00, 0x00, // geLodEnabled.... - 0x01, 0x00, 0xe7, 0x03, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, // ......using name - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, // space metal;.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // rInput {. float - 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, // 2 v_texcoord0;.} - 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.struct xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, // ShaderOutput {. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // float4 gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // olor;.};.struct - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // form {. float4 - 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, // u_imageLodEnable - 0x64, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, // d;.};.fragment x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, // latMtlShaderOutp - 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, // ut xlatMtlMain ( - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp - 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, // ut _mtl_i [[stag - 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, // e_in]], constant - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, // iform& _mtl_u [[ - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, // buffer(0)]]. , - 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, // texturecube<fl - 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // oat> s_texColor - 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, // [[texture(0)]], - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, // sampler _mtlsmp_ - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, // s_texColor [[sam - 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, // pler(0)]]).{. x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, // latMtlShaderOutp - 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ut _mtl_o;. flo - 0x61, 0x74, 0x33, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, // at3 result_1 = 0 - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ;. float tmpvar - 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // _2 = 0;. tmpvar - 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, // _2 = (_mtl_i.v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x36, 0x2e, 0x32, // excoord0.x * 6.2 - 0x38, 0x33, 0x31, 0x38, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // 83185);. float - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_3 = 0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // tmpvar_3 = (_mtl - 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x79, // _i.v_texcoord0.y - 0x20, 0x2a, 0x20, 0x33, 0x2e, 0x31, 0x34, 0x31, 0x35, 0x39, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * 3.141593);. - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x28, // result_1.x = (-( - 0x73, 0x69, 0x6e, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x29, 0x20, 0x2a, // sin(tmpvar_3)) * - 0x20, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, // sin(tmpvar_2)); - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, // . result_1.y = - 0x63, 0x6f, 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x3b, 0x0a, 0x20, // cos(tmpvar_3);. - 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x2d, // result_1.z = (- - 0x28, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x29, 0x20, // (sin(tmpvar_3)) - 0x2a, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, // * cos(tmpvar_2)) - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. float4 tmpva - 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_4 = 0;. tmpva - 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // r_4.xyz = s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // olor.sample(_mtl - 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, // smp_s_texColor, - 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, // (float3)(result_ - 0x31, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // 1), level(_mtl_u - 0x2e, 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, // .u_imageLodEnabl - 0x65, 0x64, 0x2e, 0x78, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // ed.x)).xyz;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x32, 0x20, // pvar_4.w = (0.2 - 0x2b, 0x20, 0x28, 0x30, 0x2e, 0x38, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // + (0.8 * _mtl_u. - 0x75, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, // u_imageLodEnable - 0x64, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // d.y));. _mtl_o. - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, // gl_FragColor = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // mpvar_4;. retur - 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // n _mtl_o;.}... -}; -extern const uint8_t* fs_imgui_latlong_pssl; -extern const uint32_t fs_imgui_latlong_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_latlong.sc b/3rdparty/bgfx/examples/common/imgui/fs_imgui_latlong.sc deleted file mode 100644 index 97fd66eeaf1..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_latlong.sc +++ /dev/null @@ -1,38 +0,0 @@ -$input v_texcoord0 - -/* - * Copyright 2014-2015 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -uniform vec4 u_imageLodEnabled; -SAMPLERCUBE(s_texColor, 0); - -#define u_imageLod u_imageLodEnabled.x -#define u_imageEnabled u_imageLodEnabled.y - -vec3 vecFromLatLong(vec2 _uv) -{ - float pi = 3.14159265; - float twoPi = 2.0*pi; - float phi = _uv.x * twoPi; - float theta = _uv.y * pi; - - vec3 result; - result.x = -sin(theta)*sin(phi); - result.y = cos(theta); - result.z = -sin(theta)*cos(phi); - - return result; -} - -void main() -{ - vec3 dir = vecFromLatLong(v_texcoord0); - vec3 color = textureCubeLod(s_texColor, dir, u_imageLod).xyz; - float alpha = 0.2 + 0.8*u_imageEnabled; - - gl_FragColor = vec4(color, alpha); -} diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_texture.bin.h b/3rdparty/bgfx/examples/common/imgui/fs_imgui_texture.bin.h deleted file mode 100644 index 4eedbc04b0a..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_texture.bin.h +++ /dev/null @@ -1,195 +0,0 @@ -static const uint8_t fs_imgui_texture_glsl[290] = -{ - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x76, // Color..........v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary - 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, // ing highp vec2 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, // orm sampler2D s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // texColor;.void m - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // ain ().{. lowp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, // v_color0.xyz;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x5f, // tmpvar_1.w = (v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // color0.w * textu - 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // re2D (s_texColor - 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x2e, 0x78, // , v_texcoord0).x - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // );. gl_FragColo - 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, // r = tmpvar_1;.}. - 0x0a, 0x00, // .. -}; -static const uint8_t fs_imgui_texture_spv[1162] = -{ - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x78, 0x04, 0x00, 0x00, 0x03, 0x02, // FSH.......x..... - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x10, 0x00, // ..Y...]...h..... - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, // in............Bg - 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, 0x00, 0x06, 0x00, // fxSampler2D..... - 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, // ..........m_samp - 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, // ler............. - 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..m_texture..... - 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // .. ...s_texColor - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......"...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... - 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..%...s_texColor - 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x59, 0x00, // Texture.......Y. - 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... - 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ..]...v_texcoord - 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 0.....h...bgfx_F - 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ragData0..G...%. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ..".......G...%. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, // ..!.......G...Y. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5d, 0x00, // ..........G...]. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, // ..........G...h. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. - 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ......... - 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, // ......;....... . - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ...!..... - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, // ......;...!...". - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...$..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......;...$...%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, // ..........1..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ...X......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...X...Y..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // .. ............. - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;.......]..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ...g......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...g...h..... - 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ..6............. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..............=. - 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......#..."...=. - 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, // ......&...%...P. - 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, // ......'...#...&. - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, // ..>... ...'...=. - 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......Z...Y...=. - 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3d, 0x00, // ......^...]...=. - 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, // .......... ...Q. - 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x82, 0x00, // ..Q............. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x9b, 0x00, // ......V...1..... - 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, // ..........W..... - 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x51, 0x00, // ..........^...Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x5a, 0x00, // ..Q...........Z. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8b, 0x00, // ................ - 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ......Z.......Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x01, 0x00, // ..........Z..... - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x5a, 0x00, // ..Q...........Z. - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x8f, 0x00, // ......P......... - 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8b, 0x00, // ................ - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>...h......... - 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ..8....... -}; -static const uint8_t fs_imgui_texture_dx9[252] = -{ - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x00, // Color0.......... - 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ...L...0........ - 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...<.......s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // 10.1........... - 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, // ...........B.... - 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ - 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, // ................ - 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ -}; -static const uint8_t fs_imgui_texture_dx11[423] = -{ - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x84, 0x01, 0x00, 0x00, 0x44, // Color0.........D - 0x58, 0x42, 0x43, 0x57, 0x7b, 0x79, 0x39, 0xfb, 0xd2, 0x84, 0x36, 0x53, 0xeb, 0x9a, 0xf9, 0x9e, // XBCW{y9...6S.... - 0xa5, 0xf8, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..............., - 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, // ...........ISGNl - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, // ...........b.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C - 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, // OLOR.TEXCOORD..O - 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET - 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xa8, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2a, // ...SHDR....@...* - 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, // ...Z....`......X - 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, // ....p......UU..b - 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, // ...........b...2 - 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...h.......E.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ~.......`......8 - 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // .... ........... - 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, // ...:.......6...r - 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, // ......F.......> - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ....... -}; -static const uint8_t fs_imgui_texture_mtl[680] = -{ - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x99, 0x02, 0x00, 0x00, 0x75, 0x73, // FSH...........us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, // r0;. float2 v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // excoord0;.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // rOutput {. floa - 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // t4 gl_FragColor; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // {.};.fragment xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, // uffer(0)]]. , - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texture2d<float - 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, // > s_texColor [[t - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, // exture(0)]], sam - 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, // pler _mtlsmp_s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // exColor [[sample - 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, // r(0)]]).{. xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _mtl_o;. float4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_1 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // _mtl_i.v_color0. - 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // xyz;. tmpvar_1. - 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // w = (_mtl_i.v_co - 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // lor0.w * s_texCo - 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, // lor.sample(_mtls - 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, // mp_s_texColor, ( - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, // float2)(_mtl_i.v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x29, 0x3b, // _texcoord0)).x); - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // . _mtl_o.gl_Fra - 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // gColor = tmpvar_ - 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // 1;. return _mtl - 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _o;.}... -}; -extern const uint8_t* fs_imgui_texture_pssl; -extern const uint32_t fs_imgui_texture_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_imgui_texture.sc b/3rdparty/bgfx/examples/common/imgui/fs_imgui_texture.sc deleted file mode 100644 index 6f890a6fa63..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/fs_imgui_texture.sc +++ /dev/null @@ -1,16 +0,0 @@ -$input v_texcoord0, v_color0 - -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -SAMPLER2D(s_texColor, 0); - -void main() -{ - float alpha = texture2D(s_texColor, v_texcoord0).x; - gl_FragColor = vec4(v_color0.xyz, v_color0.w * alpha); -} diff --git a/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.bin.h b/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.bin.h index c59608cbb86..ec34dc9b39c 100644 --- a/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.bin.h +++ b/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.bin.h @@ -1,172 +1,186 @@ -static const uint8_t fs_ocornut_imgui_glsl[238] = +static const uint8_t fs_ocornut_imgui_glsl[189] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x05, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // ..........varyin - 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec2 v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, // oord0;.uniform s - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, // ampler2D s_tex;. - 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // void main ().{. - 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // lowp vec4 tmpva - 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // r_1;. tmpvar_1 - 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, // = texture2D (s_t - 0x65, 0x78, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, // ex, v_texcoord0) - 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ;. gl_FragColor - 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, // = (tmpvar_1 * v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0);.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x00, // _tex............ + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ..varying vec4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // _color0;.varying + 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec2 v_texcoord + 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, // 0;.uniform sampl + 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, // er2D s_tex;.void + 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // main ().{. gl_ + 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x65, 0x78, // FragColor = (tex + 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x76, // ture2D (s_tex, v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, // _texcoord0) * v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0);.}... }; -static const uint8_t fs_ocornut_imgui_spv[1022] = +static const uint8_t fs_ocornut_imgui_essl[246] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xec, 0x03, 0x00, 0x00, 0x03, 0x02, // FSH............. - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x10, 0x00, // ..M...Q......... - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, // in............Bg - 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, 0x00, 0x06, 0x00, // fxSampler2D..... - 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, // ..........m_samp - 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, // ler............. - 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..m_texture..... - 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, // .. ...s_tex..... - 0x06, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, // .."...s_texSampl - 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, // er........%...s_ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x00, // _tex............ + 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ..varying highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, // 2 v_texcoord0;.u + 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, // niform sampler2D + 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // s_tex;.void mai + 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // n ().{. lowp ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // mpvar_1 = textur + 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, // e2D (s_tex, v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, // xcoord0);. gl_F + 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // ragColor = (tmpv + 0x61, 0x72, 0x5f, 0x31, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x29, // ar_1 * v_color0) + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... +}; +static const uint8_t fs_ocornut_imgui_spv[910] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1a, 0x00, 0x68, 0x03, // _tex0.........h. + 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x97, 0x00, // ....#........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................ + 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4 + 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50.............. + 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma + 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x55, 0x00, // in....N...Q...U. + 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, // ..b............. + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, // ................ + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ......main...... + 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, // ..#...s_texSampl + 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, 0x5f, // er........&...s_ 0x74, 0x65, 0x78, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // texTexture...... - 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, // ..M...v_color0.. - 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x51, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ......Q...v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x62, 0x67, // oord0.........bg - 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, // fx_FragData0..G. - 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..%...".......G. - 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..%...!.......G. - 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, // ..M...........G. - 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, // ..Q...........G. - 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, // ................ - 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ......!......... - 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, // .. ............. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, // ................ - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, // ................ - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, // ................ - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, // .......... ..... - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, // ..........;..... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, // .. ....... ...!. - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, // ..........;...!. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, // .."....... ...$. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, // ..........;...$. - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, // ..%...........1. - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, // ...... ...L..... - 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, // ......;...L...M. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, // ...... ...P..... - 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, // ......;...P...Q. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x03, 0x00, // ...... ...[..... - 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5c, 0x00, // ......;...[..... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, // ......6......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, // ..=.......#...". - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, // ..=.......&...%. - 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, // ..P.......'...#. - 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, // ..&...>... ...'. - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, // ..=.......N...M. - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, // ..=.......R...Q. - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x20, 0x00, // ..=.......w... . - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x77, 0x00, // ..Q...........w. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x8e, 0x00, // ......Q......... - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x31, 0x00, // ..w.......V...1. - 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x57, 0x00, // ..............W. - 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x52, 0x00, // ..............R. - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x8a, 0x00, // ..........|..... - 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x7c, 0x00, // ..N...>.......|. + 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, // ..N...gl_FragCoo + 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x51, 0x00, 0x00, 0x00, 0x76, 0x5f, // rd........Q...v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x55, 0x00, // color0........U. + 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, // ..v_texcoord0... + 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, // ..b...bgfx_FragD + 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, // ata0..G...#...". + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, // ......G...#...!. + 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, // ......G...&...". + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, // ......G...&...!. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x0b, 0x00, // ......G...N..... + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...Q..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...U..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x1e, 0x00, // ......G...b..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, // ..............!. + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, // ................ + 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, // .......... ..... + 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, // .. ..."......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, // ..;..."...#..... + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // .. ...%......... + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, // ..;...%...&..... + 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // ......2....... . + 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..M...........;. + 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..M...N.......;. + 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..M...Q....... . + 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..T...........;. + 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // ..T...U....... . + 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..a...........;. + 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ..a...b.......6. + 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..........=..... + 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..$...#...=..... + 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..'...&...=..... + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, // ..R...Q...=..... + 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x32, 0x00, // ..V...U...V...2. + 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x57, 0x00, // ......'...$...W. + 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x56, 0x00, // ..............V. + 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x96, 0x00, // ................ + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, 0x86, 0x00, // ..R...>...b..... 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ......8....... }; -static const uint8_t fs_ocornut_imgui_dx9[231] = +static const uint8_t fs_ocornut_imgui_dx9[239] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x05, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, // 0............... - 0x1f, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x03, // ..CTAB....O..... - 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x48, 0x00, // ..............H. - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x38, 0x00, // ..0...........8. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x00, 0xab, 0xab, 0x04, 0x00, // ......s_tex..... - 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, // ..............ps - 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, // _3_0.Microsoft ( - 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, // R) HLSL Shader C - 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, // ompiler 10.1.... - 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, // ................ - 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, // ................ - 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, // ..B............. - 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, // ................ - 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, // _tex0........... + 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x1f, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ..........CTAB.. + 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, // ..O............. + 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, // ......H...0..... + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, // ......8.......s_ + 0x74, 0x65, 0x78, 0x00, 0xab, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // tex............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, // ......ps_3_0.Mic + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, // rosoft (R) HLSL + 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, // Shader Compiler + 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, // 10.1............ + 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, // ................ + 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, // ..........B..... + 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, // ................ + 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............... }; -static const uint8_t fs_ocornut_imgui_dx11[398] = +static const uint8_t fs_ocornut_imgui_dx11[422] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x05, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x70, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xbe, 0x78, // 0.....p...DXBC.x - 0xe7, 0xa5, 0x19, 0x0c, 0x70, 0xeb, 0x4c, 0xb1, 0xac, 0x1f, 0x16, 0x84, 0xe9, 0x97, 0x01, 0x00, // ....p.L......... - 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, // ..p.......,..... - 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, // ......ISGNl..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ......P......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......b......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x53, 0x56, // ..............SV - 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, // _POSITION.COLOR. - 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, // TEXCOORD..OSGN,. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, // ..SV_TARGET...SH - 0x44, 0x52, 0x94, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x5a, 0x00, // DR....@...%...Z. - 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, // ...`......X....p - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, // ......UU..b..... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, // ......b...2..... - 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, // ..e.... ......h. - 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......E......... - 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, // ..F.......F~.... - 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x20, // ...`......8.... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, // ......F.......F. - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ......>....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, // _tex0..........s + 0x5f, 0x74, 0x65, 0x78, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x01, // _tex0.........p. + 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xbe, 0x78, 0xe7, 0xa5, 0x19, 0x0c, 0x70, 0xeb, 0x4c, 0xb1, // ..DXBC.x....p.L. + 0xac, 0x1f, 0x16, 0x84, 0xe9, 0x97, 0x01, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x03, 0x00, // ..........p..... + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS + 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, // ..............b. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO + 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD + 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR + 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x94, 0x00, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@. + 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ..%...Z....`.... + 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X....p......UU + 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, // ..b...........b. + 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..2.......e.... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, // ......h.......E. + 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, // ..........F..... + 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ..F~.......`.... + 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..8.... ......F. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......F.......>. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ...... }; -static const uint8_t fs_ocornut_imgui_mtl[570] = +static const uint8_t fs_ocornut_imgui_mtl[609] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x2b, 0x02, 0x00, 0x00, 0x75, 0x73, // FSH.......+...us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, // r0;. float2 v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // excoord0;.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // rOutput {. floa - 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // t4 gl_FragColor; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // {.};.fragment xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, // uffer(0)]]. , - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texture2d<float - 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // > s_tex [[textur - 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // e(0)]], sampler - 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x20, 0x5b, 0x5b, // _mtlsmp_s_tex [[ - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, // sampler(0)]]).{. - 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, // utput _mtl_o;. - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // _mtl_o.gl_FragCo - 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2e, 0x73, 0x61, 0x6d, // lor = (s_tex.sam - 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, // ple(_mtlsmp_s_te - 0x78, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // x, (float2)(_mtl - 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x29, // _i.v_texcoord0)) - 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // * _mtl_i.v_colo - 0x72, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, // r0);. return _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tl_o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x11, 0x01, 0xff, 0xff, 0x01, // _texSampler..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x54, 0x65, 0x78, 0x74, 0x75, // ......s_texTextu + 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x5f, 0x74, // re...........s_t + 0x65, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0x00, 0x00, // ex.............. + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, // #include <metal_ + 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, // stdlib>.#include + 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, // <simd/simd.h>.. + 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, // using namespace + 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // metal;..struct x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, // latMtlMain_out.{ + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, // . float4 bgfx + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, // _FragData0 [[col + 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, // or(0)]];.};..str + 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // uct xlatMtlMain_ + 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // in.{. float4 + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, // v_color0 [[user( + 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // locn0)]];. fl + 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // oat2 v_texcoord0 + 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, // [[user(locn1)]] + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, // ;.};..fragment x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, // latMtlMain_out x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, // latMtlMain(xlatM + 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, // tlMain_in in [[s + 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, // tage_in]], textu + 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, // re2d<float> s_te + 0x78, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, // x [[texture(0)]] + 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, // , sampler s_texS + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // ampler [[sampler + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, // (0)]]).{. xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, // tMtlMain_out out + 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, // = {};. out.b + 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, // gfx_FragData0 = + 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, // s_tex.sample(s_t + 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, // exSampler, in.v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, // texcoord0) * in. + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // v_color0;. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x20, // turn out;.}.... + 0x00, // . }; extern const uint8_t* fs_ocornut_imgui_pssl; extern const uint32_t fs_ocornut_imgui_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.sc b/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.sc index f07729cb94c..0b9c9828b2c 100644 --- a/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.sc +++ b/3rdparty/bgfx/examples/common/imgui/fs_ocornut_imgui.sc @@ -7,5 +7,5 @@ SAMPLER2D(s_tex, 0); void main() { vec4 texel = texture2D(s_tex, v_texcoord0); - gl_FragColor = texel * v_color0; + gl_FragColor = texel * v_color0; } diff --git a/3rdparty/bgfx/examples/common/imgui/imgui.cpp b/3rdparty/bgfx/examples/common/imgui/imgui.cpp index 6cd4b13c191..d553d9d43e1 100644 --- a/3rdparty/bgfx/examples/common/imgui/imgui.cpp +++ b/3rdparty/bgfx/examples/common/imgui/imgui.cpp @@ -1,6 +1,6 @@ /* * Copyright 2014-2015 Daniel Collin. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx/bgfx.h> @@ -9,29 +9,24 @@ #include <bx/math.h> #include <bx/timer.h> #include <dear-imgui/imgui.h> +#include <dear-imgui/imgui_internal.h> #include "imgui.h" #include "../bgfx_utils.h" -//#define USE_ENTRY 1 - #ifndef USE_ENTRY -# if defined(SCI_NAMESPACE) -# define USE_ENTRY 1 -# else -# define USE_ENTRY 0 -# endif // defined(SCI_NAMESPACE) +# define USE_ENTRY 0 #endif // USE_ENTRY +#ifndef USE_LOCAL_STB +# define USE_LOCAL_STB 1 +#endif // USE_LOCAL_STB + #if USE_ENTRY # include "../entry/entry.h" # include "../entry/input.h" #endif // USE_ENTRY -#if defined(SCI_NAMESPACE) -# include "scintilla.h" -#endif // defined(SCI_NAMESPACE) - #include "vs_ocornut_imgui.bin.h" #include "fs_ocornut_imgui.bin.h" #include "vs_imgui_image.bin.h" @@ -72,9 +67,14 @@ struct OcornutImguiContext { void render(ImDrawData* _drawData) { - const ImGuiIO& io = ImGui::GetIO(); - const float width = io.DisplaySize.x; - const float height = io.DisplaySize.y; + // Avoid rendering when minimized, scale coordinates for retina displays (screen coordinates != framebuffer coordinates) + int32_t dispWidth = int32_t(_drawData->DisplaySize.x * _drawData->FramebufferScale.x); + int32_t dispHeight = int32_t(_drawData->DisplaySize.y * _drawData->FramebufferScale.y); + if (dispWidth <= 0 + || dispHeight <= 0) + { + return; + } bgfx::setViewName(m_viewId, "ImGui"); bgfx::setViewMode(m_viewId, bgfx::ViewMode::Sequential); @@ -82,11 +82,19 @@ struct OcornutImguiContext const bgfx::Caps* caps = bgfx::getCaps(); { float ortho[16]; - bx::mtxOrtho(ortho, 0.0f, width, height, 0.0f, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); + float x = _drawData->DisplayPos.x; + float y = _drawData->DisplayPos.y; + float width = _drawData->DisplaySize.x; + float height = _drawData->DisplaySize.y; + + bx::mtxOrtho(ortho, x, x + width, y + height, y, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); bgfx::setViewTransform(m_viewId, NULL, ortho); bgfx::setViewRect(m_viewId, 0, 0, uint16_t(width), uint16_t(height) ); } + const ImVec2 clipPos = _drawData->DisplayPos; // (0,0) unless using multi-viewports + const ImVec2 clipScale = _drawData->FramebufferScale; // (1,1) unless using retina display which are often (2,2) + // Render command lists for (int32_t ii = 0, num = _drawData->CmdListsCount; ii < num; ++ii) { @@ -97,14 +105,14 @@ struct OcornutImguiContext uint32_t numVertices = (uint32_t)drawList->VtxBuffer.size(); uint32_t numIndices = (uint32_t)drawList->IdxBuffer.size(); - if (!checkAvailTransientBuffers(numVertices, m_decl, numIndices) ) + if (!checkAvailTransientBuffers(numVertices, m_layout, numIndices) ) { // not enough space in transient buffer just quit drawing the rest... break; } - bgfx::allocTransientVertexBuffer(&tvb, numVertices, m_decl); - bgfx::allocTransientIndexBuffer(&tib, numIndices); + bgfx::allocTransientVertexBuffer(&tvb, numVertices, m_layout); + bgfx::allocTransientIndexBuffer(&tib, numIndices, sizeof(ImDrawIdx) == 4); ImDrawVert* verts = (ImDrawVert*)tvb.data; bx::memCopy(verts, drawList->VtxBuffer.begin(), numVertices * sizeof(ImDrawVert) ); @@ -112,7 +120,8 @@ struct OcornutImguiContext ImDrawIdx* indices = (ImDrawIdx*)tib.data; bx::memCopy(indices, drawList->IdxBuffer.begin(), numIndices * sizeof(ImDrawIdx) ); - uint32_t offset = 0; + bgfx::Encoder* encoder = bgfx::begin(); + for (const ImDrawCmd* cmd = drawList->CmdBuffer.begin(), *cmdEnd = drawList->CmdBuffer.end(); cmd != cmdEnd; ++cmd) { if (cmd->UserCallback) @@ -130,14 +139,16 @@ struct OcornutImguiContext bgfx::TextureHandle th = m_texture; bgfx::ProgramHandle program = m_program; - if (NULL != cmd->TextureId) + if (ImU64(0) != cmd->TextureId) { union { ImTextureID ptr; struct { bgfx::TextureHandle handle; uint8_t flags; uint8_t mip; } s; } texture = { cmd->TextureId }; + state |= 0 != (IMGUI_FLAGS_ALPHA_BLEND & texture.s.flags) ? BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) : BGFX_STATE_NONE ; th = texture.s.handle; + if (0 != texture.s.mip) { const float lodEnabled[4] = { float(texture.s.mip), 1.0f, 0.0f, 0.0f }; @@ -150,27 +161,42 @@ struct OcornutImguiContext state |= BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA); } - const uint16_t xx = uint16_t(bx::max(cmd->ClipRect.x, 0.0f) ); - const uint16_t yy = uint16_t(bx::max(cmd->ClipRect.y, 0.0f) ); - bgfx::setScissor(xx, yy - , uint16_t(bx::min(cmd->ClipRect.z, 65535.0f)-xx) - , uint16_t(bx::min(cmd->ClipRect.w, 65535.0f)-yy) - ); - - bgfx::setState(state); - bgfx::setTexture(0, s_tex, th); - bgfx::setVertexBuffer(0, &tvb, 0, numVertices); - bgfx::setIndexBuffer(&tib, offset, cmd->ElemCount); - bgfx::submit(m_viewId, program); + // Project scissor/clipping rectangles into framebuffer space + ImVec4 clipRect; + clipRect.x = (cmd->ClipRect.x - clipPos.x) * clipScale.x; + clipRect.y = (cmd->ClipRect.y - clipPos.y) * clipScale.y; + clipRect.z = (cmd->ClipRect.z - clipPos.x) * clipScale.x; + clipRect.w = (cmd->ClipRect.w - clipPos.y) * clipScale.y; + + if (clipRect.x < dispWidth + && clipRect.y < dispHeight + && clipRect.z >= 0.0f + && clipRect.w >= 0.0f) + { + const uint16_t xx = uint16_t(bx::max(clipRect.x, 0.0f) ); + const uint16_t yy = uint16_t(bx::max(clipRect.y, 0.0f) ); + encoder->setScissor(xx, yy + , uint16_t(bx::min(clipRect.z, 65535.0f)-xx) + , uint16_t(bx::min(clipRect.w, 65535.0f)-yy) + ); + + encoder->setState(state); + encoder->setTexture(0, s_tex, th); + encoder->setVertexBuffer(0, &tvb, cmd->VtxOffset, numVertices); + encoder->setIndexBuffer(&tib, cmd->IdxOffset, cmd->ElemCount); + encoder->submit(m_viewId, program); + } } - - offset += cmd->ElemCount; } + + bgfx::end(encoder); } } void create(float _fontSize, bx::AllocatorI* _allocator) { + IMGUI_CHECKVERSION(); + m_allocator = _allocator; if (NULL == _allocator) @@ -195,50 +221,119 @@ struct OcornutImguiContext setupStyle(true); + io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset; + #if USE_ENTRY - io.KeyMap[ImGuiKey_Tab] = (int)entry::Key::Tab; - io.KeyMap[ImGuiKey_LeftArrow] = (int)entry::Key::Left; - io.KeyMap[ImGuiKey_RightArrow] = (int)entry::Key::Right; - io.KeyMap[ImGuiKey_UpArrow] = (int)entry::Key::Up; - io.KeyMap[ImGuiKey_DownArrow] = (int)entry::Key::Down; - io.KeyMap[ImGuiKey_PageUp] = (int)entry::Key::PageUp; - io.KeyMap[ImGuiKey_PageDown] = (int)entry::Key::PageDown; - io.KeyMap[ImGuiKey_Home] = (int)entry::Key::Home; - io.KeyMap[ImGuiKey_End] = (int)entry::Key::End; - io.KeyMap[ImGuiKey_Insert] = (int)entry::Key::Insert; - io.KeyMap[ImGuiKey_Delete] = (int)entry::Key::Delete; - io.KeyMap[ImGuiKey_Backspace] = (int)entry::Key::Backspace; - io.KeyMap[ImGuiKey_Space] = (int)entry::Key::Space; - io.KeyMap[ImGuiKey_Enter] = (int)entry::Key::Return; - io.KeyMap[ImGuiKey_Escape] = (int)entry::Key::Esc; - io.KeyMap[ImGuiKey_A] = (int)entry::Key::KeyA; - io.KeyMap[ImGuiKey_C] = (int)entry::Key::KeyC; - io.KeyMap[ImGuiKey_V] = (int)entry::Key::KeyV; - io.KeyMap[ImGuiKey_X] = (int)entry::Key::KeyX; - io.KeyMap[ImGuiKey_Y] = (int)entry::Key::KeyY; - io.KeyMap[ImGuiKey_Z] = (int)entry::Key::KeyZ; + for (int32_t ii = 0; ii < (int32_t)entry::Key::Count; ++ii) + { + m_keyMap[ii] = ImGuiKey_None; + } + + m_keyMap[entry::Key::Esc] = ImGuiKey_Escape; + m_keyMap[entry::Key::Return] = ImGuiKey_Enter; + m_keyMap[entry::Key::Tab] = ImGuiKey_Tab; + m_keyMap[entry::Key::Space] = ImGuiKey_Space; + m_keyMap[entry::Key::Backspace] = ImGuiKey_Backspace; + m_keyMap[entry::Key::Up] = ImGuiKey_UpArrow; + m_keyMap[entry::Key::Down] = ImGuiKey_DownArrow; + m_keyMap[entry::Key::Left] = ImGuiKey_LeftArrow; + m_keyMap[entry::Key::Right] = ImGuiKey_RightArrow; + m_keyMap[entry::Key::Insert] = ImGuiKey_Insert; + m_keyMap[entry::Key::Delete] = ImGuiKey_Delete; + m_keyMap[entry::Key::Home] = ImGuiKey_Home; + m_keyMap[entry::Key::End] = ImGuiKey_End; + m_keyMap[entry::Key::PageUp] = ImGuiKey_PageUp; + m_keyMap[entry::Key::PageDown] = ImGuiKey_PageDown; + m_keyMap[entry::Key::Print] = ImGuiKey_PrintScreen; + m_keyMap[entry::Key::Plus] = ImGuiKey_Equal; + m_keyMap[entry::Key::Minus] = ImGuiKey_Minus; + m_keyMap[entry::Key::LeftBracket] = ImGuiKey_LeftBracket; + m_keyMap[entry::Key::RightBracket] = ImGuiKey_RightBracket; + m_keyMap[entry::Key::Semicolon] = ImGuiKey_Semicolon; + m_keyMap[entry::Key::Quote] = ImGuiKey_Apostrophe; + m_keyMap[entry::Key::Comma] = ImGuiKey_Comma; + m_keyMap[entry::Key::Period] = ImGuiKey_Period; + m_keyMap[entry::Key::Slash] = ImGuiKey_Slash; + m_keyMap[entry::Key::Backslash] = ImGuiKey_Backslash; + m_keyMap[entry::Key::Tilde] = ImGuiKey_GraveAccent; + m_keyMap[entry::Key::F1] = ImGuiKey_F1; + m_keyMap[entry::Key::F2] = ImGuiKey_F2; + m_keyMap[entry::Key::F3] = ImGuiKey_F3; + m_keyMap[entry::Key::F4] = ImGuiKey_F4; + m_keyMap[entry::Key::F5] = ImGuiKey_F5; + m_keyMap[entry::Key::F6] = ImGuiKey_F6; + m_keyMap[entry::Key::F7] = ImGuiKey_F7; + m_keyMap[entry::Key::F8] = ImGuiKey_F8; + m_keyMap[entry::Key::F9] = ImGuiKey_F9; + m_keyMap[entry::Key::F10] = ImGuiKey_F10; + m_keyMap[entry::Key::F11] = ImGuiKey_F11; + m_keyMap[entry::Key::F12] = ImGuiKey_F12; + m_keyMap[entry::Key::NumPad0] = ImGuiKey_Keypad0; + m_keyMap[entry::Key::NumPad1] = ImGuiKey_Keypad1; + m_keyMap[entry::Key::NumPad2] = ImGuiKey_Keypad2; + m_keyMap[entry::Key::NumPad3] = ImGuiKey_Keypad3; + m_keyMap[entry::Key::NumPad4] = ImGuiKey_Keypad4; + m_keyMap[entry::Key::NumPad5] = ImGuiKey_Keypad5; + m_keyMap[entry::Key::NumPad6] = ImGuiKey_Keypad6; + m_keyMap[entry::Key::NumPad7] = ImGuiKey_Keypad7; + m_keyMap[entry::Key::NumPad8] = ImGuiKey_Keypad8; + m_keyMap[entry::Key::NumPad9] = ImGuiKey_Keypad9; + m_keyMap[entry::Key::Key0] = ImGuiKey_0; + m_keyMap[entry::Key::Key1] = ImGuiKey_1; + m_keyMap[entry::Key::Key2] = ImGuiKey_2; + m_keyMap[entry::Key::Key3] = ImGuiKey_3; + m_keyMap[entry::Key::Key4] = ImGuiKey_4; + m_keyMap[entry::Key::Key5] = ImGuiKey_5; + m_keyMap[entry::Key::Key6] = ImGuiKey_6; + m_keyMap[entry::Key::Key7] = ImGuiKey_7; + m_keyMap[entry::Key::Key8] = ImGuiKey_8; + m_keyMap[entry::Key::Key9] = ImGuiKey_9; + m_keyMap[entry::Key::KeyA] = ImGuiKey_A; + m_keyMap[entry::Key::KeyB] = ImGuiKey_B; + m_keyMap[entry::Key::KeyC] = ImGuiKey_C; + m_keyMap[entry::Key::KeyD] = ImGuiKey_D; + m_keyMap[entry::Key::KeyE] = ImGuiKey_E; + m_keyMap[entry::Key::KeyF] = ImGuiKey_F; + m_keyMap[entry::Key::KeyG] = ImGuiKey_G; + m_keyMap[entry::Key::KeyH] = ImGuiKey_H; + m_keyMap[entry::Key::KeyI] = ImGuiKey_I; + m_keyMap[entry::Key::KeyJ] = ImGuiKey_J; + m_keyMap[entry::Key::KeyK] = ImGuiKey_K; + m_keyMap[entry::Key::KeyL] = ImGuiKey_L; + m_keyMap[entry::Key::KeyM] = ImGuiKey_M; + m_keyMap[entry::Key::KeyN] = ImGuiKey_N; + m_keyMap[entry::Key::KeyO] = ImGuiKey_O; + m_keyMap[entry::Key::KeyP] = ImGuiKey_P; + m_keyMap[entry::Key::KeyQ] = ImGuiKey_Q; + m_keyMap[entry::Key::KeyR] = ImGuiKey_R; + m_keyMap[entry::Key::KeyS] = ImGuiKey_S; + m_keyMap[entry::Key::KeyT] = ImGuiKey_T; + m_keyMap[entry::Key::KeyU] = ImGuiKey_U; + m_keyMap[entry::Key::KeyV] = ImGuiKey_V; + m_keyMap[entry::Key::KeyW] = ImGuiKey_W; + m_keyMap[entry::Key::KeyX] = ImGuiKey_X; + m_keyMap[entry::Key::KeyY] = ImGuiKey_Y; + m_keyMap[entry::Key::KeyZ] = ImGuiKey_Z; io.ConfigFlags |= 0 | ImGuiConfigFlags_NavEnableGamepad | ImGuiConfigFlags_NavEnableKeyboard ; - io.NavInputs[ImGuiNavInput_Activate] = (int)entry::Key::GamepadA; - io.NavInputs[ImGuiNavInput_Cancel] = (int)entry::Key::GamepadB; -// io.NavInputs[ImGuiNavInput_Input] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_Menu] = (int)entry::Key::; - io.NavInputs[ImGuiNavInput_DpadLeft] = (int)entry::Key::GamepadLeft; - io.NavInputs[ImGuiNavInput_DpadRight] = (int)entry::Key::GamepadRight; - io.NavInputs[ImGuiNavInput_DpadUp] = (int)entry::Key::GamepadUp; - io.NavInputs[ImGuiNavInput_DpadDown] = (int)entry::Key::GamepadDown; -// io.NavInputs[ImGuiNavInput_LStickLeft] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_LStickRight] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_LStickUp] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_LStickDown] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_FocusPrev] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_FocusNext] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_TweakSlow] = (int)entry::Key::; -// io.NavInputs[ImGuiNavInput_TweakFast] = (int)entry::Key::; + m_keyMap[entry::Key::GamepadStart] = ImGuiKey_GamepadStart; + m_keyMap[entry::Key::GamepadBack] = ImGuiKey_GamepadBack; + m_keyMap[entry::Key::GamepadY] = ImGuiKey_GamepadFaceUp; + m_keyMap[entry::Key::GamepadA] = ImGuiKey_GamepadFaceDown; + m_keyMap[entry::Key::GamepadX] = ImGuiKey_GamepadFaceLeft; + m_keyMap[entry::Key::GamepadB] = ImGuiKey_GamepadFaceRight; + m_keyMap[entry::Key::GamepadUp] = ImGuiKey_GamepadDpadUp; + m_keyMap[entry::Key::GamepadDown] = ImGuiKey_GamepadDpadDown; + m_keyMap[entry::Key::GamepadLeft] = ImGuiKey_GamepadDpadLeft; + m_keyMap[entry::Key::GamepadRight] = ImGuiKey_GamepadDpadRight; + m_keyMap[entry::Key::GamepadShoulderL] = ImGuiKey_GamepadL1; + m_keyMap[entry::Key::GamepadShoulderR] = ImGuiKey_GamepadR1; + m_keyMap[entry::Key::GamepadThumbL] = ImGuiKey_GamepadL3; + m_keyMap[entry::Key::GamepadThumbR] = ImGuiKey_GamepadR3; #endif // USE_ENTRY bgfx::RendererType::Enum type = bgfx::getRendererType(); @@ -255,14 +350,14 @@ struct OcornutImguiContext , true ); - m_decl + m_layout .begin() .add(bgfx::Attrib::Position, 2, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); - s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Int1); + s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Sampler); uint8_t* data; int32_t width; @@ -348,16 +443,16 @@ struct OcornutImguiContext , int32_t _scroll , int _width , int _height - , char _inputChar + , int _inputChar , bgfx::ViewId _viewId ) { m_viewId = _viewId; ImGuiIO& io = ImGui::GetIO(); - if (_inputChar < 0x7f) + if (_inputChar >= 0) { - io.AddInputCharacter(_inputChar); // ASCII or GTFO! :( + io.AddInputCharacter(_inputChar); } io.DisplaySize = ImVec2( (float)_width, (float)_height); @@ -368,21 +463,24 @@ struct OcornutImguiContext const double freq = double(bx::getHPFrequency() ); io.DeltaTime = float(frameTime/freq); - io.MousePos = ImVec2( (float)_mx, (float)_my); - io.MouseDown[0] = 0 != (_button & IMGUI_MBUT_LEFT); - io.MouseDown[1] = 0 != (_button & IMGUI_MBUT_RIGHT); - io.MouseDown[2] = 0 != (_button & IMGUI_MBUT_MIDDLE); - io.MouseWheel = (float)(_scroll - m_lastScroll); + io.AddMousePosEvent( (float)_mx, (float)_my); + io.AddMouseButtonEvent(ImGuiMouseButton_Left, 0 != (_button & IMGUI_MBUT_LEFT ) ); + io.AddMouseButtonEvent(ImGuiMouseButton_Right, 0 != (_button & IMGUI_MBUT_RIGHT ) ); + io.AddMouseButtonEvent(ImGuiMouseButton_Middle, 0 != (_button & IMGUI_MBUT_MIDDLE) ); + io.AddMouseWheelEvent(0.0f, (float)(_scroll - m_lastScroll) ); m_lastScroll = _scroll; #if USE_ENTRY - uint8_t modifiers = inputGetModifiersState(); - io.KeyShift = 0 != (modifiers & (entry::Modifier::LeftShift | entry::Modifier::RightShift) ); - io.KeyCtrl = 0 != (modifiers & (entry::Modifier::LeftCtrl | entry::Modifier::RightCtrl ) ); - io.KeyAlt = 0 != (modifiers & (entry::Modifier::LeftAlt | entry::Modifier::RightAlt ) ); - for (int32_t ii = 0; ii < (int32_t)entry::Key::Count; ++ii) + const uint8_t modifiers = inputGetModifiersState(); + io.AddKeyEvent(ImGuiMod_Shift, 0 != (modifiers & (entry::Modifier::LeftShift | entry::Modifier::RightShift) ) ); + io.AddKeyEvent(ImGuiMod_Ctrl, 0 != (modifiers & (entry::Modifier::LeftCtrl | entry::Modifier::RightCtrl ) ) ); + io.AddKeyEvent(ImGuiMod_Alt, 0 != (modifiers & (entry::Modifier::LeftAlt | entry::Modifier::RightAlt ) ) ); + io.AddKeyEvent(ImGuiMod_Super, 0 != (modifiers & (entry::Modifier::LeftMeta | entry::Modifier::RightMeta ) ) ); + + for (int32_t ii = 0; ii < int32_t(entry::Key::Count); ++ii) { - io.KeysDown[ii] = inputGetKeyState(entry::Key::Enum(ii) ); + io.AddKeyEvent(m_keyMap[ii], inputGetKeyState(entry::Key::Enum(ii) ) ); + io.SetKeyEventNativeData(m_keyMap[ii], 0, 0, ii); } #endif // USE_ENTRY @@ -399,7 +497,7 @@ struct OcornutImguiContext ImGuiContext* m_imgui; bx::AllocatorI* m_allocator; - bgfx::VertexDecl m_decl; + bgfx::VertexLayout m_layout; bgfx::ProgramHandle m_program; bgfx::ProgramHandle m_imageProgram; bgfx::TextureHandle m_texture; @@ -409,6 +507,9 @@ struct OcornutImguiContext int64_t m_last; int32_t m_lastScroll; bgfx::ViewId m_viewId; +#if USE_ENTRY + ImGuiKey m_keyMap[(int)entry::Key::Count]; +#endif // USE_ENTRY }; static OcornutImguiContext s_ctx; @@ -435,7 +536,7 @@ void imguiDestroy() s_ctx.destroy(); } -void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, char _inputChar, bgfx::ViewId _viewId) +void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, int _inputChar, bgfx::ViewId _viewId) { s_ctx.beginFrame(_mx, _my, _button, _scroll, _width, _height, _inputChar, _viewId); } @@ -451,18 +552,46 @@ namespace ImGui { PushFont(s_ctx.m_font[_font]); } + + void PushEnabled(bool _enabled) + { + extern void PushItemFlag(int option, bool enabled); + PushItemFlag(ImGuiItemFlags_Disabled, !_enabled); + PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * (_enabled ? 1.0f : 0.5f) ); + } + + void PopEnabled() + { + extern void PopItemFlag(); + PopItemFlag(); + PopStyleVar(); + } + } // namespace ImGui +#if USE_LOCAL_STB BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4505); // error C4505: '' : unreferenced local function has been removed -BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wunused-function"); // warning: ‘int rect_width_compare(const void*, const void*)’ defined but not used -BX_PRAGMA_DIAGNOSTIC_PUSH(); +BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wunused-function"); // warning: 'int rect_width_compare(const void*, const void*)' defined but not used BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wunknown-pragmas") -//BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wunused-but-set-variable"); // warning: variable ‘L1’ set but not used BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC("-Wtype-limits"); // warning: comparison is always true due to limited range of data type -#define STBTT_malloc(_size, _userData) memAlloc(_size, _userData) -#define STBTT_free(_ptr, _userData) memFree(_ptr, _userData) -#define STB_RECT_PACK_IMPLEMENTATION -#include <stb/stb_rect_pack.h> -#define STB_TRUETYPE_IMPLEMENTATION -#include <stb/stb_truetype.h> -BX_PRAGMA_DIAGNOSTIC_POP(); + +# define STBTT_ifloor(_a) int32_t(bx::floor(_a) ) +# define STBTT_iceil(_a) int32_t(bx::ceil(_a) ) +# define STBTT_sqrt(_a) bx::sqrt(_a) +# define STBTT_pow(_a, _b) bx::pow(_a, _b) +# define STBTT_fmod(_a, _b) bx::mod(_a, _b) +# define STBTT_cos(_a) bx::cos(_a) +# define STBTT_acos(_a) bx::acos(_a) +# define STBTT_fabs(_a) bx::abs(_a) +# define STBTT_strlen(_str) bx::strLen(_str) + +# define STBTT_memcpy(_dst, _src, _numBytes) bx::memCopy(_dst, _src, _numBytes) +# define STBTT_memset(_dst, _ch, _numBytes) bx::memSet(_dst, _ch, _numBytes) +# define STBTT_malloc(_size, _userData) memAlloc(_size, _userData) +# define STBTT_free(_ptr, _userData) memFree(_ptr, _userData) + +# define STB_RECT_PACK_IMPLEMENTATION +# include <stb/stb_rect_pack.h> +# define STB_TRUETYPE_IMPLEMENTATION +# include <stb/stb_truetype.h> +#endif // USE_LOCAL_STB diff --git a/3rdparty/bgfx/examples/common/imgui/imgui.h b/3rdparty/bgfx/examples/common/imgui/imgui.h index 4f549670323..81e9ec49854 100644 --- a/3rdparty/bgfx/examples/common/imgui/imgui.h +++ b/3rdparty/bgfx/examples/common/imgui/imgui.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2025 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef IMGUI_H_HEADER_GUARD @@ -30,7 +30,7 @@ namespace bx { struct AllocatorI; } void imguiCreate(float _fontSize = 18.0f, bx::AllocatorI* _allocator = NULL); void imguiDestroy(); -void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, char _inputChar = 0, bgfx::ViewId _view = 255); +void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, int _inputChar = -1, bgfx::ViewId _view = 255); void imguiEndFrame(); namespace entry { class AppI; } @@ -41,6 +41,16 @@ namespace ImGui #define IMGUI_FLAGS_NONE UINT8_C(0x00) #define IMGUI_FLAGS_ALPHA_BLEND UINT8_C(0x01) + /// + inline ImTextureID toId(bgfx::TextureHandle _handle, uint8_t _flags, uint8_t _mip) + { + union { struct { bgfx::TextureHandle handle; uint8_t flags; uint8_t mip; } s; ImTextureID id; } tex; + tex.s.handle = _handle; + tex.s.flags = _flags; + tex.s.mip = _mip; + return tex.id; + } + // Helper function for passing bgfx::TextureHandle to ImGui::Image. inline void Image(bgfx::TextureHandle _handle , uint8_t _flags @@ -52,11 +62,7 @@ namespace ImGui , const ImVec4& _borderCol = ImVec4(0.0f, 0.0f, 0.0f, 0.0f) ) { - union { struct { bgfx::TextureHandle handle; uint8_t flags; uint8_t mip; } s; ImTextureID ptr; } texture; - texture.s.handle = _handle; - texture.s.flags = _flags; - texture.s.mip = _mip; - Image(texture.ptr, _size, _uv0, _uv1, _tintCol, _borderCol); + ImageWithBg(toId(_handle, _flags, _mip), _size, _uv0, _uv1, _tintCol, _borderCol); } // Helper function for passing bgfx::TextureHandle to ImGui::Image. @@ -78,16 +84,11 @@ namespace ImGui , const ImVec2& _size , const ImVec2& _uv0 = ImVec2(0.0f, 0.0f) , const ImVec2& _uv1 = ImVec2(1.0f, 1.0f) - , int _framePadding = -1 , const ImVec4& _bgCol = ImVec4(0.0f, 0.0f, 0.0f, 0.0f) , const ImVec4& _tintCol = ImVec4(1.0f, 1.0f, 1.0f, 1.0f) ) { - union { struct { bgfx::TextureHandle handle; uint8_t flags; uint8_t mip; } s; ImTextureID ptr; } texture; - texture.s.handle = _handle; - texture.s.flags = _flags; - texture.s.mip = _mip; - return ImageButton(texture.ptr, _size, _uv0, _uv1, _framePadding, _bgCol, _tintCol); + return ImageButton("image", toId(_handle, _flags, _mip), _size, _uv0, _uv1, _bgCol, _tintCol); } // Helper function for passing bgfx::TextureHandle to ImGui::ImageButton. @@ -95,48 +96,36 @@ namespace ImGui , const ImVec2& _size , const ImVec2& _uv0 = ImVec2(0.0f, 0.0f) , const ImVec2& _uv1 = ImVec2(1.0f, 1.0f) - , int _framePadding = -1 , const ImVec4& _bgCol = ImVec4(0.0f, 0.0f, 0.0f, 0.0f) , const ImVec4& _tintCol = ImVec4(1.0f, 1.0f, 1.0f, 1.0f) ) { - return ImageButton(_handle, IMGUI_FLAGS_ALPHA_BLEND, 0, _size, _uv0, _uv1, _framePadding, _bgCol, _tintCol); + return ImageButton(_handle, IMGUI_FLAGS_ALPHA_BLEND, 0, _size, _uv0, _uv1, _bgCol, _tintCol); } + /// inline void NextLine() { SetCursorPosY(GetCursorPosY() + GetTextLineHeightWithSpacing() ); } - inline bool TabButton(const char* _text, float _width, bool _active) - { - int32_t count = 1; - - if (_active) - { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1.0f, 0.75f, 0.0f, 0.78f) ); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(0.0f, 0.0f, 0.0f, 1.0f ) ); - count = 2; - } - else - { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.5f, 0.5f, 0.5f, 0.7f) ); - } - - bool retval = ImGui::Button(_text, ImVec2(_width, 20.0f) ); - ImGui::PopStyleColor(count); - - return retval; - } - + /// inline bool MouseOverArea() { return false + || ImGui::IsAnyItemActive() || ImGui::IsAnyItemHovered() || ImGui::IsWindowHovered(ImGuiHoveredFlags_AnyWindow) +// || ImGuizmo::IsOver() ; } + /// + void PushEnabled(bool _enabled); + + /// + void PopEnabled(); + } // namespace ImGui #endif // IMGUI_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/imgui/makefile b/3rdparty/bgfx/examples/common/imgui/makefile index 13855bc440d..7b26cb84a85 100644 --- a/3rdparty/bgfx/examples/common/imgui/makefile +++ b/3rdparty/bgfx/examples/common/imgui/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2025 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # include ../../../scripts/shader-embeded.mk diff --git a/3rdparty/bgfx/examples/common/imgui/scintilla.cpp b/3rdparty/bgfx/examples/common/imgui/scintilla.cpp deleted file mode 100644 index 0ab454ab054..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/scintilla.cpp +++ /dev/null @@ -1,1128 +0,0 @@ -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE - */ - -#if defined(SCI_NAMESPACE) - -#include <bx/bx.h> - -#include <algorithm> -#include <map> - -#if BX_PLATFORM_EMSCRIPTEN -# include <compat/ctype.h> -#endif // BX_PLATFORM_EMSCRIPTEN - -#include <string> -#include <vector> -#include <string.h> - -#include "scintilla/include/Platform.h" -#include "scintilla/include/Scintilla.h" -#include "scintilla/include/ILexer.h" -#include "scintilla/include/SciLexer.h" -#include "scintilla/lexlib/LexerModule.h" -#include "scintilla/src/SplitVector.h" -#include "scintilla/src/Partitioning.h" -#include "scintilla/src/RunStyles.h" -#include "scintilla/src/Catalogue.h" -#include "scintilla/src/ContractionState.h" -#include "scintilla/src/CellBuffer.h" -#include "scintilla/src/KeyMap.h" -#include "scintilla/src/Indicator.h" -#include "scintilla/src/XPM.h" -#include "scintilla/src/LineMarker.h" -#include "scintilla/src/Style.h" -#include "scintilla/src/ViewStyle.h" -#include "scintilla/src/Decoration.h" -#include "scintilla/src/CharClassify.h" -#include "scintilla/src/CaseFolder.h" -#include "scintilla/src/Document.h" -#include "scintilla/src/Selection.h" -#include "scintilla/src/PositionCache.h" -#include "scintilla/src/EditModel.h" -#include "scintilla/src/MarginView.h" -#include "scintilla/src/EditView.h" -#include "scintilla/src/Editor.h" -#include "scintilla/src/AutoComplete.h" -#include "scintilla/src/CallTip.h" -#include "scintilla/src/ScintillaBase.h" - -#include <bx/debug.h> -#include <bx/macros.h> -#include <bx/string.h> -#include <bx/uint32_t.h> - -#define STBTT_DEF extern -#include <stb/stb_truetype.h> - -#include "imgui.h" -#include "../bgfx_utils.h" -#include "scintilla.h" - -#include "../entry/input.h" - -#define IMGUI_NEW(type) new (ImGui::MemAlloc(sizeof(type) ) ) type -#define IMGUI_DELETE(type, obj) reinterpret_cast<type*>(obj)->~type(), ImGui::MemFree(obj) - -static void fillRectangle(Scintilla::PRectangle _rc, Scintilla::ColourDesired _color) -{ - const uint32_t abgr = (uint32_t)_color.AsLong(); - - ImVec2 pos = ImGui::GetCursorScreenPos(); - - ImDrawList* drawList = ImGui::GetWindowDrawList(); - drawList->AddDrawCmd(); - drawList->AddRectFilled( - ImVec2(_rc.left + pos.x, _rc.top + pos.y) - , ImVec2(_rc.right + pos.x, _rc.bottom + pos.y) - , abgr - ); -} - -static inline uint32_t makeRgba(uint32_t r, uint32_t g, uint32_t b, uint32_t a = 0xFF) -{ - return a << 24 | b << 16 | g << 8 | r; -} - -struct FontInt -{ - ImFont* m_font; - float m_scale; - float m_fontSize; -}; - -class SurfaceInt : public Scintilla::Surface -{ -public: - SurfaceInt() - { - } - - virtual ~SurfaceInt() - { - } - - virtual void Init(Scintilla::WindowID /*_wid*/) override - { - } - - virtual void Init(Scintilla::SurfaceID /*_sid*/, Scintilla::WindowID /*_wid*/) override - { - } - - virtual void InitPixMap(int /*_width*/, int /*_height*/, Scintilla::Surface* /*_surface*/, Scintilla::WindowID /*_wid*/) override - { - } - - virtual void Release() override - { - } - - virtual bool Initialised() override - { - return true; - } - - virtual void PenColour(Scintilla::ColourDesired /*_fore*/) override - { - } - - virtual int LogPixelsY() override - { - return 72; - } - - virtual int DeviceHeightFont(int /*points*/) override - { - return 1500; - } - - virtual void MoveTo(int _x, int _y) override - { - BX_UNUSED(_x, _y); - } - - virtual void LineTo(int _x, int _y) override - { - BX_UNUSED(_x, _y); - } - - virtual void Polygon(Scintilla::Point *pts, int npts, Scintilla::ColourDesired fore, Scintilla::ColourDesired back) override - { - BX_UNUSED(pts, npts, fore, back); - } - - virtual void RectangleDraw(Scintilla::PRectangle rc, Scintilla::ColourDesired fore, Scintilla::ColourDesired back) override - { - BX_UNUSED(fore); - - FillRectangle(rc, back); - } - - virtual void FillRectangle(Scintilla::PRectangle rc, Scintilla::ColourDesired back) override - { - fillRectangle(rc, back); - } - - virtual void FillRectangle(Scintilla::PRectangle rc, Scintilla::Surface& surfacePattern) override - { - BX_UNUSED(rc, surfacePattern); - } - - virtual void RoundedRectangle(Scintilla::PRectangle rc, Scintilla::ColourDesired fore, Scintilla::ColourDesired back) override - { - BX_UNUSED(rc, fore, back); - } - - virtual void AlphaRectangle(Scintilla::PRectangle _rc, int /*_cornerSize*/, Scintilla::ColourDesired _fill, int _alphaFill, Scintilla::ColourDesired /*_outline*/, int /*_alphaOutline*/, int /*_flags*/) override - { - unsigned int back = 0 - | (uint32_t)( (_fill.AsLong() & 0xffffff) - | ( (_alphaFill & 0xff) << 24) ) - ; - - FillRectangle(_rc, Scintilla::ColourDesired(back) ); - } - - - virtual void DrawRGBAImage(Scintilla::PRectangle /*_rc*/, int /*_width*/, int /*_height*/, const unsigned char* /*_pixelsImage*/) override - { - } - - virtual void Ellipse(Scintilla::PRectangle rc, Scintilla::ColourDesired fore, Scintilla::ColourDesired /*back*/) override - { - FillRectangle(rc, fore); - } - - virtual void Copy(Scintilla::PRectangle /*_rc*/, Scintilla::Point /*_from*/, Scintilla::Surface& /*_surfaceSource*/) override - { - } - - virtual void DrawTextNoClip(Scintilla::PRectangle rc, Scintilla::Font& _font, Scintilla::XYPOSITION ybase, const char *s, int len, Scintilla::ColourDesired fore, Scintilla::ColourDesired back) override - { - BX_UNUSED(back); - DrawTextBase(rc, _font, ybase, s, len, fore); - } - - virtual void DrawTextClipped(Scintilla::PRectangle rc, Scintilla::Font& _font, Scintilla::XYPOSITION ybase, const char *s, int len, Scintilla::ColourDesired fore, Scintilla::ColourDesired back) override - { - BX_UNUSED(back); - DrawTextBase(rc, _font, ybase, s, len, fore); - } - - virtual void DrawTextTransparent(Scintilla::PRectangle rc, Scintilla::Font& _font, Scintilla::XYPOSITION ybase, const char *s, int len, Scintilla::ColourDesired fore) override - { - DrawTextBase(rc, _font, ybase, s, len, fore); - } - - virtual void MeasureWidths(Scintilla::Font& /*_font*/, const char* _str, int _len, Scintilla::XYPOSITION* _positions) override - { - float position = 0; - - ImFont* imFont = ImGui::GetWindowFont(); - - while (_len--) - { - position += imFont->GetCharAdvance( (unsigned short)*_str++); - *_positions++ = position; - } - } - - virtual Scintilla::XYPOSITION WidthText(Scintilla::Font& /*_font*/, const char* _str, int _len) override - { - ImVec2 t = ImGui::CalcTextSize(_str, _str + _len); - return t.x; - } - - virtual Scintilla::XYPOSITION WidthChar(Scintilla::Font& _font, char ch) override - { - FontInt* fi = (FontInt*)_font.GetID(); - return fi->m_font->GetCharAdvance( (unsigned int)ch) * fi->m_scale; - } - - virtual Scintilla::XYPOSITION Ascent(Scintilla::Font& _font) override - { - FontInt* fi = (FontInt*)_font.GetID(); - return fi->m_font->Ascent * fi->m_scale; - } - - virtual Scintilla::XYPOSITION Descent(Scintilla::Font& _font) override - { - FontInt* fi = (FontInt*)_font.GetID(); - return -fi->m_font->Descent * fi->m_scale; - } - - virtual Scintilla::XYPOSITION InternalLeading(Scintilla::Font& /*_font*/) override - { - return 0; - } - - virtual Scintilla::XYPOSITION ExternalLeading(Scintilla::Font& /*_font*/) override - { - return 0; - } - - virtual Scintilla::XYPOSITION Height(Scintilla::Font& _font) override - { - return Ascent(_font) + Descent(_font); - } - - virtual Scintilla::XYPOSITION AverageCharWidth(Scintilla::Font& _font) override - { - return WidthChar(_font, 'n'); - } - - virtual void SetClip(Scintilla::PRectangle /*_rc*/) override - { - } - - virtual void FlushCachedState() override - { - } - - virtual void SetUnicodeMode(bool /*_unicodeMode*/) override - { - } - - virtual void SetDBCSMode(int /*_codePage*/) override - { - } - -private: - void DrawTextBase(Scintilla::PRectangle _rc, Scintilla::Font& _font, float _ybase, const char* _str, int _len, Scintilla::ColourDesired _fore) - { - float xt = _rc.left; - float yt = _ybase; - - uint32_t fore = (uint32_t)_fore.AsLong(); - FontInt* fi = (FontInt*)_font.GetID(); - - ImVec2 pos = ImGui::GetCursorScreenPos(); - ImDrawList* drawList = ImGui::GetWindowDrawList(); - drawList->AddText(fi->m_font - , fi->m_fontSize - , ImVec2(xt + pos.x, yt + pos.y - fi->m_fontSize) - , fore - , _str - , _str + _len - ); - } - - Scintilla::ColourDesired m_penColour; -}; - -struct WindowInt -{ - WindowInt() - : m_show(false) - { - } - - Scintilla::PRectangle position; - bool m_show; -}; - -WindowInt* AllocateWindowInt() -{ - return new WindowInt; -} - -inline WindowInt* GetWindow(Scintilla::WindowID id) -{ - return (WindowInt*)id; -} - -class ListBoxInt : public Scintilla::ListBox -{ -public: - ListBoxInt() - : m_maxStrWidth(0) - , m_lineHeight(10) - , m_desiredVisibleRows(5) - , m_aveCharWidth(8) - , m_unicodeMode(false) - { - } - - ~ListBoxInt() - { - } - - virtual void SetFont(Scintilla::Font& /*_font*/) override - { - } - - virtual void Create(Scintilla::Window& /*_parent*/, int /*_ctrlID*/, Scintilla::Point _location, int _lineHeight, bool _unicodeMode, int /*_technology*/) override - { - m_location = _location; - m_lineHeight = _lineHeight; - m_unicodeMode = _unicodeMode; - m_maxStrWidth = 0; - wid = Scintilla::WindowID(4); - } - - virtual void SetAverageCharWidth(int width) override - { - m_aveCharWidth = width; - } - - virtual void SetVisibleRows(int rows) override - { - m_desiredVisibleRows = rows; - } - - virtual int GetVisibleRows() const override - { - return m_desiredVisibleRows; - } - - virtual Scintilla::PRectangle GetDesiredRect() override - { - Scintilla::PRectangle rc; - rc.top = 0; - rc.left = 0; - rc.right = 350; - rc.bottom = 140; - return rc; - } - - virtual int CaretFromEdge() override - { - return 4 + 16; - } - - virtual void Clear() override - { - } - - virtual void Append(char* /*s*/, int /*type = -1*/) override - { - } - - virtual int Length() override - { - return 0; - } - - virtual void Select(int /*n*/) override - { - } - - virtual int GetSelection() override - { - return 0; - } - - virtual int Find(const char* /*prefix*/) override - { - return 0; - } - - virtual void GetValue(int /*n*/, char* value, int /*len*/) override - { - value[0] = '\0'; - } - - virtual void RegisterImage(int /*type*/, const char* /*xpm_data*/) override - { - } - - virtual void RegisterRGBAImage(int /*type*/, int /*width*/, int /*height*/, const unsigned char* /*pixelsImage*/) override - { - } - - virtual void ClearRegisteredImages() override - { - } - - virtual void SetDoubleClickAction(Scintilla::CallBackAction, void*) override - { - } - - virtual void SetList(const char* /*list*/, char /*separator*/, char /*typesep*/) override - { - } - -private: - Scintilla::Point m_location; - size_t m_maxStrWidth; - int m_lineHeight; - int m_desiredVisibleRows; - int m_aveCharWidth; - bool m_unicodeMode; -}; - -struct Editor : public Scintilla::ScintillaBase -{ -public: - Editor() - : m_width(0) - , m_height(0) - , m_searchResultIndication(0xff5A5A5A) - , m_filteredSearchResultIndication(0xff5a5a5a) - , m_occurrenceIndication(0xff5a5a5a) - , m_writeOccurrenceIndication(0xff5a5a5a) - , m_findScope(0xffddf0ff) - , m_sourceHoverBackground(0xff000000) - , m_singleLineComment(0xffa8a8a8) - , m_multiLineComment(0xffa8a8a8) - , m_commentTaskTag(0xffa8a8a8) - , m_javadoc(0xffa8a8a8) - , m_javadocLink(0xff548fa0) - , m_javadocTag(0xffa8a8a8) - , m_javadocKeyword(0xffea9c77) - , m_class(0xfff9f9f9) - , m_interface(0xfff9f9f9) - , m_method(0xfff9f9f9) - , m_methodDeclaration(0xfff9f9f9) - , m_bracket(0xfff9f9f9) - , m_number(0xfff9f9f9) - , m_string(0xff76ba53) - , m_operator(0xfff9f9f9) - , m_keyword(0xffea9c77) - , m_annotation(0xffa020f0) - , m_staticMethod(0xfff9f9f9) - , m_localVariable(0xff4b9ce9) - , m_localVariableDeclaration(0xff4b9ce9) - , m_field(0xff4b9ce9) - , m_staticField(0xff4b9ce9) - , m_staticFinalField(0xff4b9ce9) - , m_deprecatedMember(0xfff9f9f9) - , m_foreground(0xffffffff) - , m_lineNumber(0xff00ffff) - { - } - - virtual ~Editor() - { - } - - virtual void Initialise() override - { - wMain = AllocateWindowInt(); - - ImGuiIO& io = ImGui::GetIO(); - wMain.SetPosition(Scintilla::PRectangle::FromInts(0, 0, int(io.DisplaySize.x), int(io.DisplaySize.y) ) ); - - view.bufferedDraw = false; - - command(SCI_SETLEXER, SCLEX_CPP); - command(SCI_SETSTYLEBITS, 7); - - const int fontSize = 15; - const char* fontName = ""; - - setStyle(STYLE_DEFAULT, m_foreground, m_background, fontSize, fontName); - command(SCI_STYLECLEARALL); - - setStyle(STYLE_INDENTGUIDE, 0xffc0c0c0, m_background, fontSize, fontName); - setStyle(STYLE_BRACELIGHT, m_bracket, m_background, fontSize, fontName); - setStyle(STYLE_BRACEBAD, m_bracket, m_background, fontSize, fontName); - setStyle(STYLE_LINENUMBER, m_lineNumber, 0xd0333333, fontSize, fontName); - - setStyle(SCE_C_DEFAULT, m_foreground, m_background, fontSize, fontName); - setStyle(SCE_C_STRING, m_string, m_background); - setStyle(SCE_C_IDENTIFIER, m_method, m_background); - setStyle(SCE_C_CHARACTER, m_string, m_background); - setStyle(SCE_C_WORD, m_keyword, m_background); - setStyle(SCE_C_WORD2, m_keyword, m_background); - setStyle(SCE_C_GLOBALCLASS, m_class, m_background); - setStyle(SCE_C_PREPROCESSOR, m_annotation, m_background); - setStyle(SCE_C_NUMBER, m_number, m_background); - setStyle(SCE_C_OPERATOR, m_operator, m_background); - setStyle(SCE_C_COMMENT, m_multiLineComment, m_background); - setStyle(SCE_C_COMMENTLINE, m_singleLineComment, m_background); - setStyle(SCE_C_COMMENTDOC, m_multiLineComment, m_background); - - command(SCI_SETSELBACK, 1, m_background.AsLong() ); - command(SCI_SETCARETFORE, UINT32_MAX, 0); - command(SCI_SETCARETLINEVISIBLE, 1); - command(SCI_SETCARETLINEBACK, UINT32_MAX); - command(SCI_SETCARETLINEBACKALPHA, 0x20); - - command(SCI_SETUSETABS, 1); - command(SCI_SETTABWIDTH, 4); - command(SCI_SETINDENTATIONGUIDES, SC_IV_REAL); - - command(SCI_MARKERSETBACK, 0, 0xff6a6a6a); - command(SCI_MARKERSETFORE, 0, 0xff0000ff); - - command(SCI_SETMARGINWIDTHN, 0, 44); - command(SCI_SETMARGINTYPEN, 1, SC_MARGIN_SYMBOL); - command(SCI_SETMARGINMASKN, 1, ~SC_MASK_FOLDERS); - command(SCI_RGBAIMAGESETSCALE, 100); - command(SCI_SETMARGINWIDTHN, 1, 0); - command(SCI_MARKERDEFINE, 0, SC_MARK_RGBAIMAGE); - - SetFocusState(true); - CaretSetPeriod(0); - } - - virtual void CreateCallTipWindow(Scintilla::PRectangle /*_rc*/) override - { - if (!ct.wCallTip.Created() ) - { - ct.wCallTip = AllocateWindowInt(); - ct.wDraw = ct.wCallTip; - } - } - - virtual void AddToPopUp(const char* /*_label*/, int /*_cmd*/, bool /*_enabled*/) override - { - } - - void Resize(int /*_x*/, int /*_y*/, int _width, int _height) - { - m_width = _width; - m_height = _height; - - wMain.SetPosition(Scintilla::PRectangle::FromInts(0, 0, m_width, m_height) ); - } - - virtual void SetVerticalScrollPos() override - { - } - - virtual void SetHorizontalScrollPos() override - { - xOffset = 0; - } - - virtual bool ModifyScrollBars(int /*nMax*/, int /*nPage*/) override - { - return false; - } - - void ClaimSelection() - { - } - - virtual void Copy() override - { - } - - virtual void Paste() override - { - } - - virtual void NotifyChange() override - { - } - - virtual void NotifyParent(Scintilla::SCNotification /*scn*/) override - { - } - - virtual void CopyToClipboard(const Scintilla::SelectionText& /*selectedText*/) override - { - } - - - virtual void SetMouseCapture(bool /*on*/) override - { - } - - virtual bool HaveMouseCapture() override - { - return false; - } - - virtual sptr_t DefWndProc(unsigned int /*iMessage*/, uptr_t /*wParam*/, sptr_t /*lParam*/) override - { - return 0; - } - - intptr_t command(unsigned int _msg, uintptr_t _p0 = 0, intptr_t _p1 = 0) - { - return WndProc(_msg, _p0, _p1); - } - - void draw() - { - ImVec2 cursorPos = ImGui::GetCursorPos(); - ImVec2 regionMax = ImGui::GetWindowContentRegionMax(); - ImVec2 size = ImVec2( regionMax.x - cursorPos.x - 32 - , regionMax.y - cursorPos.y - ); - - Resize(0, 0, (int)size.x, (int)size.y); - - uint8_t modifiers = inputGetModifiersState(); - const bool shift = 0 != (modifiers & (entry::Modifier::LeftShift | entry::Modifier::RightShift) ); - const bool ctrl = 0 != (modifiers & (entry::Modifier::LeftCtrl | entry::Modifier::RightCtrl ) ); - const bool alt = 0 != (modifiers & (entry::Modifier::LeftAlt | entry::Modifier::RightAlt ) ); - - if (ImGui::IsKeyPressed(entry::Key::Tab) ) - { - Editor::KeyDown(SCK_TAB, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::Left) ) - { - Editor::KeyDown(SCK_LEFT, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::Right) ) - { - Editor::KeyDown(SCK_RIGHT, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::Up) ) - { - Editor::KeyDown(SCK_UP, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::Down) ) - { - Editor::KeyDown(SCK_DOWN, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::PageUp) ) - { - Editor::KeyDown(SCK_PRIOR, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::PageDown) ) - { - Editor::KeyDown(SCK_NEXT, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::Home) ) - { - Editor::KeyDown(SCK_HOME, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::End) ) - { - Editor::KeyDown(SCK_END, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::Delete) ) - { - Editor::KeyDown(SCK_DELETE, shift, ctrl, alt); - } - else if (ImGui::IsKeyPressed(entry::Key::Backspace) ) - { - Editor::KeyDown(SCK_BACK, shift, ctrl, alt); inputGetChar(); - } - else if (ImGui::IsKeyPressed(entry::Key::Return) ) - { - Editor::KeyDown(SCK_RETURN, shift, ctrl, alt); inputGetChar(); - } - else if (ImGui::IsKeyPressed(entry::Key::Esc) ) - { - Editor::KeyDown(SCK_ESCAPE, shift, ctrl, alt); - } - else if (ctrl && ImGui::IsKeyPressed(entry::Key::KeyA) ) - { - Editor::KeyDown('A', shift, ctrl, alt); inputGetChar(); - } - else if (ctrl && ImGui::IsKeyPressed(entry::Key::KeyC) ) - { - Editor::KeyDown('C', shift, ctrl, alt); inputGetChar(); - } - else if (ctrl && ImGui::IsKeyPressed(entry::Key::KeyV) ) - { - Editor::KeyDown('V', shift, ctrl, alt); inputGetChar(); - } - else if (ctrl && ImGui::IsKeyPressed(entry::Key::KeyX) ) - { - Editor::KeyDown('X', shift, ctrl, alt); inputGetChar(); - } - else if (ctrl && ImGui::IsKeyPressed(entry::Key::KeyY) ) - { - Editor::KeyDown('Y', shift, ctrl, alt); inputGetChar(); - } - else if (ctrl && ImGui::IsKeyPressed(entry::Key::KeyZ) ) - { - Editor::KeyDown('Z', shift, ctrl, alt); inputGetChar(); - } - else if (ctrl || alt) - { - // ignore... - } - else - { - for (const uint8_t* ch = inputGetChar(); NULL != ch; ch = inputGetChar() ) - { - switch (*ch) - { - case '\b': Editor::KeyDown(SCK_BACK, shift, ctrl, alt); break; - case '\n': Editor::KeyDown(SCK_RETURN, shift, ctrl, alt); break; - default: Editor::AddCharUTF( (const char*)ch, 1); break; - } - } - } - - int32_t lineCount = int32_t(command(SCI_GETLINECOUNT) ); - int32_t firstVisibleLine = int32_t(command(SCI_GETFIRSTVISIBLELINE) ); - float fontHeight = ImGui::GetWindowFontSize(); - - if (ImGui::IsMouseClicked(0) ) - { - ImGuiIO& io = ImGui::GetIO(); - Scintilla::Point pt = Scintilla::Point::FromInts( (int)io.MouseClickedPos[0].x, (int)io.MouseClickedPos[0].y); - - ButtonDown(pt, (unsigned int)io.MouseDownDuration[0], false, false, false); - } - - Tick(); - - ImGui::BeginGroup(); - ImGui::BeginChild("##editor", ImVec2(size.x, size.y-20) ); - Scintilla::AutoSurface surfaceWindow(this); - if (surfaceWindow) - { - Paint(surfaceWindow, GetClientRectangle() ); - surfaceWindow->Release(); - } - ImGui::EndChild(); - - ImGui::SameLine(); - - ImGui::BeginChild("##scroll"); - ImGuiListClipper clipper; - clipper.Begin(lineCount, fontHeight*2.0f); - - if (m_lastFirstVisibleLine != firstVisibleLine) - { - m_lastFirstVisibleLine = firstVisibleLine; - ImGui::SetScrollY(firstVisibleLine * fontHeight*2.0f); - } - else if (firstVisibleLine != clipper.DisplayStart) - { - command(SCI_SETFIRSTVISIBLELINE, clipper.DisplayStart); - } - - clipper.End(); - ImGui::EndChild(); - - ImGui::EndGroup(); - } - - void setStyle(int style, Scintilla::ColourDesired fore, Scintilla::ColourDesired back = UINT32_MAX, int size = -1, const char* face = NULL) - { - command(SCI_STYLESETFORE, uptr_t(style), fore.AsLong() ); - command(SCI_STYLESETBACK, uptr_t(style), back.AsLong() ); - - if (size >= 1) - { - command(SCI_STYLESETSIZE, uptr_t(style), size); - } - - if (face) - { - command(SCI_STYLESETFONT, uptr_t(style), reinterpret_cast<sptr_t>(face) ); - } - } - -private: - int m_width; - int m_height; - int m_lastFirstVisibleLine; - - Scintilla::ColourDesired m_searchResultIndication; - Scintilla::ColourDesired m_filteredSearchResultIndication; - Scintilla::ColourDesired m_occurrenceIndication; - Scintilla::ColourDesired m_writeOccurrenceIndication; - Scintilla::ColourDesired m_findScope; - Scintilla::ColourDesired m_sourceHoverBackground; - Scintilla::ColourDesired m_singleLineComment; - Scintilla::ColourDesired m_multiLineComment; - Scintilla::ColourDesired m_commentTaskTag; - Scintilla::ColourDesired m_javadoc; - Scintilla::ColourDesired m_javadocLink; - Scintilla::ColourDesired m_javadocTag; - Scintilla::ColourDesired m_javadocKeyword; - Scintilla::ColourDesired m_class; - Scintilla::ColourDesired m_interface; - Scintilla::ColourDesired m_method; - Scintilla::ColourDesired m_methodDeclaration; - Scintilla::ColourDesired m_bracket; - Scintilla::ColourDesired m_number; - Scintilla::ColourDesired m_string; - Scintilla::ColourDesired m_operator; - Scintilla::ColourDesired m_keyword; - Scintilla::ColourDesired m_annotation; - Scintilla::ColourDesired m_staticMethod; - Scintilla::ColourDesired m_localVariable; - Scintilla::ColourDesired m_localVariableDeclaration; - Scintilla::ColourDesired m_field; - Scintilla::ColourDesired m_staticField; - Scintilla::ColourDesired m_staticFinalField; - Scintilla::ColourDesired m_deprecatedMember; - Scintilla::ColourDesired m_background; - Scintilla::ColourDesired m_currentLine; - Scintilla::ColourDesired m_foreground; - Scintilla::ColourDesired m_lineNumber; - Scintilla::ColourDesired m_selectionBackground; - Scintilla::ColourDesired m_selectionForeground; -}; - -ScintillaEditor* ScintillaEditor::create(int _width, int _height) -{ - Editor* editor = IMGUI_NEW(Editor); - - editor->Initialise(); - editor->Resize(0, 0, _width, _height); - - return reinterpret_cast<ScintillaEditor*>(editor); -} - -void ScintillaEditor::destroy(ScintillaEditor* _scintilla) -{ - IMGUI_DELETE(Editor, _scintilla); -} - -intptr_t ScintillaEditor::command(unsigned int _msg, uintptr_t _p0, intptr_t _p1) -{ - Editor* editor = reinterpret_cast<Editor*>(this); - return editor->command(_msg, _p0, _p1); -} - -void ScintillaEditor::draw() -{ - Editor* editor = reinterpret_cast<Editor*>(this); - return editor->draw(); -} - -// Scintilla hooks -namespace Scintilla -{ - Font::Font() - : fid(0) - { - } - - Font::~Font() - { - } - - void Font::Create(const FontParameters& fp) - { - FontInt* newFont = (FontInt*)ImGui::MemAlloc(sizeof(FontInt) ); - fid = newFont; - newFont->m_font = ImGui::GetIO().Fonts->Fonts[0]; - newFont->m_fontSize = fp.size; - newFont->m_scale = fp.size / newFont->m_font->FontSize; - } - - void Font::Release() - { - if (fid) - { - ImGui::MemFree( (FontInt*)fid); - } - } - - ColourDesired Platform::Chrome() - { - return makeRgba(0xe0, 0xe0, 0xe0); - } - - ColourDesired Platform::ChromeHighlight() - { - return makeRgba(0xff, 0xff, 0xff); - } - - const char* Platform::DefaultFont() - { - return ""; - } - - int Platform::DefaultFontSize() - { - return 15; - } - - unsigned int Platform::DoubleClickTime() - { - return 500; - } - - bool Platform::MouseButtonBounce() - { - return true; - } - - void Platform::Assert(const char* _error, const char* _filename, int _line) - { - DebugPrintf("%s(%d): %s", _filename, _line, _error); - } - - int Platform::Minimum(int a, int b) - { - return (int)bx::uint32_imin(a, b); - } - - int Platform::Maximum(int a, int b) - { - return (int)bx::uint32_imax(a, b); - } - - int Platform::Clamp(int val, int minVal, int maxVal) - { - return (int)bx::uint32_iclamp(val, minVal, maxVal); - } - - void Platform::DebugPrintf(const char* _format, ...) - { - char temp[8192]; - char* out = temp; - va_list argList; - va_start(argList, _format); - int32_t len = bx::vsnprintf(out, sizeof(temp), _format, argList); - if ( (int32_t)sizeof(temp) < len) - { - out = (char*)alloca(len+1); - len = bx::vsnprintf(out, len, _format, argList); - } - va_end(argList); - out[len] = '\0'; - bx::debugOutput(out); - } - - Menu::Menu() - : mid(0) - { - } - - void Menu::CreatePopUp() - { - Destroy(); - mid = MenuID(1); - } - - void Menu::Destroy() - { - mid = 0; - } - - void Menu::Show(Point /*_pt*/, Window& /*_w*/) - { - Destroy(); - } - - Surface* Surface::Allocate(int) - { - return IMGUI_NEW(SurfaceInt); - } - - Window::~Window() - { - } - - void Window::Destroy() - { - if (wid) - { - Show(false); - WindowInt* wi = GetWindow(wid); - IMGUI_DELETE(WindowInt, wi); - } - - wid = 0; - } - - bool Window::HasFocus() - { - return true; - } - - PRectangle Window::GetPosition() - { - if (0 == wid) - { - return PRectangle(); - } - - return GetWindow(wid)->position; - } - - void Window::SetPosition(PRectangle rc) - { - GetWindow(wid)->position = rc; - } - - void Window::SetPositionRelative(PRectangle _rc, Window /*_w*/) - { - SetPosition(_rc); - } - - PRectangle Window::GetClientPosition() - { - if (0 == wid) - { - return PRectangle(); - } - - return GetWindow(wid)->position; - } - - void Window::Show(bool _show) - { - if (0 != wid) - { - GetWindow(wid)->m_show = _show; - } - } - - void Window::InvalidateAll() - { - } - - void Window::InvalidateRectangle(PRectangle /*_rc*/) - { - } - - void Window::SetFont(Font& /*_font*/) - { - } - - void Window::SetCursor(Cursor /*_curs*/) - { - cursorLast = cursorText; - } - - void Window::SetTitle(const char* /*_str*/) - { - } - - PRectangle Window::GetMonitorRect(Point /*_pt*/) - { - return PRectangle(); - } - - ListBox::ListBox() - { - } - - ListBox::~ListBox() - { - } - - ListBox* ListBox::Allocate() - { - return IMGUI_NEW(ListBoxInt); - } - -} // namespace Scintilla - -ScintillaEditor* ImGuiScintilla(const char* _name, bool* /*_opened*/, const ImVec2& /*_size*/) -{ - ScintillaEditor* sci = NULL; - -// if (ImGui::Begin(_name, _opened, _size) ) - { - ImGuiStorage* storage = ImGui::GetStateStorage(); - - ImGuiID id = ImGui::GetID(_name); - sci = (ScintillaEditor*)storage->GetVoidPtr(id); - if (NULL == sci) - { - ImVec2 size = ImGui::GetWindowSize(); - sci = ScintillaEditor::create(size.x, size.y); - storage->SetVoidPtr(id, (void*)sci); - } - - sci->draw(); - } - -// ImGui::End(); - return sci; -} - -#endif // defined(SCI_NAMESPACE) diff --git a/3rdparty/bgfx/examples/common/imgui/scintilla.h b/3rdparty/bgfx/examples/common/imgui/scintilla.h deleted file mode 100644 index c575a5f403b..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/scintilla.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE - */ - -#ifndef SCINTILLA_H_HEADER_GUARD -#define SCINTILLA_H_HEADER_GUARD - -#if defined(SCI_NAMESPACE) - -#include <scintilla/include/Scintilla.h> - -struct ScintillaEditor -{ - static ScintillaEditor* create(int _width, int _height); - static void destroy(ScintillaEditor* _scintilla); - - intptr_t command(unsigned int _message, uintptr_t _p0 = 0, intptr_t _p1 = 0); - void draw(); -}; - -ScintillaEditor* ImGuiScintilla(const char* _name, bool* _opened, const ImVec2& _size); - -#endif // defined(SCI_NAMESPACE) - -#endif // SCINTILLA_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/imgui/varying.def.sc b/3rdparty/bgfx/examples/common/imgui/varying.def.sc index 41b4dbd51c5..5f4c47ac243 100644 --- a/3rdparty/bgfx/examples/common/imgui/varying.def.sc +++ b/3rdparty/bgfx/examples/common/imgui/varying.def.sc @@ -1,8 +1,6 @@ vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); -vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); -vec3 a_position : POSITION; -vec4 a_normal : NORMAL; +vec2 a_position : POSITION; vec4 a_color0 : COLOR0; vec2 a_texcoord0 : TEXCOORD0; diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_color.bin.h b/3rdparty/bgfx/examples/common/imgui/vs_imgui_color.bin.h deleted file mode 100644 index 0b27d2d20df..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_color.bin.h +++ /dev/null @@ -1,197 +0,0 @@ -static const uint8_t vs_imgui_color_glsl[324] = -{ - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH....I...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x24, 0x01, 0x00, 0x00, 0x61, // wProj......$...a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v - 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, // ec4 a_color0;.at - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // tribute highp ve - 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, // c3 a_position;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // 4 v_color0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, // orm highp mat4 u - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // _viewProj;.void - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // main ().{. high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // p vec4 tmpvar_1; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, // . tmpvar_1.zw = - 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // vec2(0.0, 1.0); - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy = - 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, // a_position.xy;. - 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position = - 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (u_viewProj * tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // pvar_1);. v_col - 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, // or0 = a_color0;. - 0x7d, 0x0a, 0x0a, 0x00, // }... -}; -static const uint8_t vs_imgui_color_spv[1075] = -{ - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH....I...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x0c, 0x04, 0x00, 0x00, 0x03, // wProj........... - 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, // .#.............. - 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, // ................ - 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, // ...GLSL.std.450. - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. - 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x47, // ...7...;...D...G - 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, // ................ - 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, // .......main..... - 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, // ...!...$Global.. - 0x00, 0x06, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // ...!.......u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, // wProj......#.... - 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x37, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // .......7...a_col - 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x61, // or0........;...a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x44, // _position......D - 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // ...@entryPointOu - 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // tput.gl_Position - 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x47, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, // .......G...@entr - 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, // yPointOutput.v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, // olor0..H...!.... - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, // .......H...!.... - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x21, // ...#.......H...! - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, // ...............G - 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, // ...!.......G...# - 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x37, // ...".......G...7 - 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, // ...........G...; - 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x44, // ...........G...D - 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, // ...........G...G - 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, // ...!............ - 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, // ....... ........ - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, // ................ - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x13, // ................ - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, // ... .......+.... - 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x06, // ..........?+.... - 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, // ...........+.... - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x20, // ............... - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x21, // ...............! - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, // ... ... ...".... - 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, // ...!...;..."...# - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, // ....... ...$.... - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x01, // ... ... ...6.... - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, // .......;...6...7 - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, // ....... ...:.... - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, // .......;...:...; - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x03, // ....... ...C.... - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x44, // .......;...C...D - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x47, // .......;...C...G - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // .......6........ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, // ................ - 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, // ...=.......8...7 - 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, // ...=.......<...; - 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x3c, // ...Q......._...< - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, // .......Q.......` - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, // ...<.......P.... - 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x16, // ...a..._...`.... - 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x62, // .......A...$...b - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, // ...#.......=... - 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, // ...c...b........ - 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x51, // ...d...a...c...Q - 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, // .......i...d.... - 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, // ...........j...i - 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x6a, // ...R...........j - 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x44, // ...d.......>...D - 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x38, // .......>...G...8 - 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, // .......8........ - 0x00, 0x40, 0x00, // .@. -}; -static const uint8_t vs_imgui_color_dx9[284] = -{ - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH....I...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, // wProj........... - 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // ...L...0........ - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // ...<.......u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, // wProj........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......vs_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // 10.1........... - 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, // ................ - 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, // ................ - 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, // .....U.......... - 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, // ................ - 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ -}; -static const uint8_t vs_imgui_color_dx11[467] = -{ - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH....I...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xac, 0x01, 0x00, 0x00, 0x44, // wProj..........D - 0x58, 0x42, 0x43, 0xbc, 0xb2, 0x28, 0xa7, 0xd2, 0xab, 0xc3, 0x2f, 0xa4, 0xe4, 0xbc, 0x67, 0xff, // XBC..(..../...g. - 0xa4, 0xcf, 0x66, 0x01, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..f............, - 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x48, // ...|.......ISGNH - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, // ...........8.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x0f, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...>............ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, // ...........COLOR - 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x4c, // .POSITION..OSGNL - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, // ...........8.... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...D............ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, // ...........SV_PO - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x53, // SITION.COLOR...S - 0x48, 0x44, 0x52, 0xd4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x35, 0x00, 0x00, 0x00, 0x59, // HDR....@...5...Y - 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, // ...F. ........._ - 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, // ..........._...2 - 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......g.... ... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, // ...h.......8.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // .......V.......F - 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, // . .........2.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F. ...... - 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, // ...........F.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ........ ......F - 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // .......F. ...... - 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // ...6.... ......F - 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x05, 0x00, 0x01, // .......>........ - 0x00, 0x40, 0x00, // .@. -}; -static const uint8_t vs_imgui_color_mtl[674] = -{ - 0x56, 0x53, 0x48, 0x05, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH....I...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x82, 0x02, 0x00, 0x00, 0x75, // wProj..........u - 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m - 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // etal;.struct xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, // tMtlShaderInput - 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // {. float4 a_col - 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // or0 [[attribute( - 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, // 0)]];. float3 a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // _position [[attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // ibute(1)]];.};.s - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha - 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // oat4 gl_Position - 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // [[position]];. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // float4 v_color0 - 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // {. float4x4 u_ - 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, // viewProj;.};.ver - 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // tex xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // rOutput xlatMtlM - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ain (xlatMtlShad - 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, // erInput _mtl_i [ - 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // stant xlatMtlSha - 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // derUniform& _mtl - 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // _u [[buffer(0)]] - 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // ).{. xlatMtlSha - 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // derOutput _mtl_o - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. float4 tmpva - 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_1 = 0;. tmpva - 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, // r_1.zw = float2( - 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 0.0, 1.0);. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // var_1.xy = _mtl_ - 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x3b, // i.a_position.xy; - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // . _mtl_o.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // ition = (_mtl_u. - 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // u_viewProj * tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // var_1);. _mtl_o - 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // .v_color0 = _mtl - 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, // _i.a_color0;. r - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, // eturn _mtl_o;.}. - 0x0a, 0x00, // .. -}; -extern const uint8_t* vs_imgui_color_pssl; -extern const uint32_t vs_imgui_color_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_color.sc b/3rdparty/bgfx/examples/common/imgui/vs_imgui_color.sc deleted file mode 100644 index 9c2eb59115e..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_color.sc +++ /dev/null @@ -1,15 +0,0 @@ -$input a_position, a_color0 -$output v_color0 - -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -void main() -{ - gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0) ); - v_color0 = a_color0; -} diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_cubemap.bin.h b/3rdparty/bgfx/examples/common/imgui/vs_imgui_cubemap.bin.h deleted file mode 100644 index 4ac06ee43dd..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_cubemap.bin.h +++ /dev/null @@ -1,204 +0,0 @@ -static const uint8_t vs_imgui_cubemap_glsl[329] = -{ - 0x56, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x24, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // $...attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, // ghp vec4 a_norma - 0x6c, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // l;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec3 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // on;.varying high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, // p vec3 v_normal; - 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, // .uniform highp m - 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // at4 u_modelViewP - 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, // roj;.void main ( - 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ).{. highp vec4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m - 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x6e, 0x6f, // mpvar_1);. v_no - 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2e, // rmal = a_normal. - 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // xyz;.}... -}; -static const uint8_t vs_imgui_cubemap_spv[1136] = -{ - 0x56, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x44, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // D.....#......... - 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // main....7...;... - 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // D...H........... - 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, // ........ ...$Glo - 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // bal..... ....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x05, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ...."........... - 0x37, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, // 7...a_normal.... - 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ....;...a_positi - 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x44, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // on......D...@ent - 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, // _Position....... - 0x48, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // H...@entryPointO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, // utput.v_normal.. - 0x48, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // H... ........... - 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H... .......#... - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H... ....... - 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, // ........G... ... - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, // ....G..."..."... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...7....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...;....... - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // ....G...D....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...H....... - 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, // ............!... - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, // ................ - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ............... - 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ................ - 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ............ ... - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, // ....+........... - 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, // ...?+........... - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, // ........ ....... - 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ...!....... ... - 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ;...!..."....... - 0x20, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, // ...#........... - 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...6........... - 0x3b, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...6...7....... - 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...:........... - 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ;...:...;....... - 0x20, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ...C........... - 0x3b, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...C...D....... - 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...G........... - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ;...G...H....... - 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6............... - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... - 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ....8...7...=... - 0x09, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....<...;...Q... - 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._...<....... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // Q.......`...<... - 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, // ....Q.......a... - 0x3c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // <.......P....... - 0x62, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, // b..._...`...a... - 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, // ....A...#...c... - 0x22, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, // ".......=....... - 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // d...c........... - 0x65, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, // e...b...d...O... - 0x09, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // ....h...8...8... - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... - 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....k...e....... - 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, // ........l...k... - 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // R...........l... - 0x65, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x44, 0x00, 0x00, 0x00, // e.......>...D... - 0x83, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, // ....>...H...h... - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, 0x40, 0x00, // ....8.........@. -}; -static const uint8_t vs_imgui_cubemap_dx9[313] = -{ - 0x56, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x14, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // ..........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0xe0, // ................ - 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. - 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ - 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0xe0, // ................ - 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... -}; -static const uint8_t vs_imgui_cubemap_dx11[512] = -{ - 0x56, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xd4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x6e, 0xf2, 0xe5, 0x72, 0xab, 0xb8, 0x0f, 0x91, // ....DXBCn..r.... - 0xad, 0x8f, 0x4c, 0xdf, 0x0e, 0x04, 0x3e, 0x81, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, // ..L...>......... - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, // ....,...|....... - 0x49, 0x53, 0x47, 0x4e, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNH........... - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 8............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........?....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ - 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // NORMAL.POSITION. - 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNL........... - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 8............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........D....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, // ................ - 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x4e, 0x4f, 0x52, 0x4d, // SV_POSITION.NORM - 0x41, 0x4c, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0xfc, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // AL..SHDR....@... - 0x3f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ?...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._...r....... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, // _...r.......g... - 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // . ..........e... - 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // r ......h....... - 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... - 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... - 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... - 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... - 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... - 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, // 6...r ......F... - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, 0x40, 0x00, // ....>.........@. -}; -static const uint8_t vs_imgui_cubemap_mtl[677] = -{ - 0x56, 0x53, 0x48, 0x05, 0xe3, 0xc2, 0x5c, 0x65, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH....e...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x80, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_normal [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at3 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, // tlShaderOutput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // . float4 gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ition [[position - 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x6e, // ]];. float3 v_n - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // ormal;.};.struct - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // iform {. float4 - 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // x4 u_modelViewPr - 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, // oj;.};.vertex xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // uffer(0)]]).{. - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut - 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // put _mtl_o;. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // oat4 tmpvar_1 = - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // 0;. tmpvar_1.w - 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // 1.xyz = _mtl_i.a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, // _position;. _mt - 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // l_o.gl_Position - 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // = (_mtl_u.u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // lViewProj * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // ar_1);. _mtl_o. - 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // v_normal = _mtl_ - 0x69, 0x2e, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, // i.a_normal.xyz;. - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, // return _mtl_o; - 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... -}; -extern const uint8_t* vs_imgui_cubemap_pssl; -extern const uint32_t vs_imgui_cubemap_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_cubemap.sc b/3rdparty/bgfx/examples/common/imgui/vs_imgui_cubemap.sc deleted file mode 100644 index d2cd9242e54..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_cubemap.sc +++ /dev/null @@ -1,15 +0,0 @@ -$input a_position, a_normal -$output v_normal - -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -void main() -{ - gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); - v_normal = a_normal.xyz; -} diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.bin.h b/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.bin.h index 05bc8959c59..4bf4691dbbb 100644 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.bin.h +++ b/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.bin.h @@ -1,199 +1,221 @@ -static const uint8_t vs_imgui_image_glsl[336] = +static const uint8_t vs_imgui_image_glsl[311] = { - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH.o.><...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x30, 0x01, 0x00, 0x00, 0x61, // wProj......0...a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v - 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // attribute highp - 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // vec2 a_texcoord0 - 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.varying highp - 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // vec2 v_texcoord0 - 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.uniform highp + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, // VSH.....o.><...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // .......attribute + 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // vec2 a_position + 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, // ;.attribute vec2 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // rying vec2 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // coord0;.uniform 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // mat4 u_viewProj; 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. - 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // highp vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ - 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, - 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio - 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // n.xy;. gl_Posit - 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // ion = (u_viewPro - 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _texcoord0;.}... + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, // . tmpvar_1.zw = + 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // vec2(0.0, 1.0); + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy = + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, // a_position;. g + 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // l_Position = (u_ + 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // viewProj * tmpva + 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // r_1);. v_texcoo + 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // rd0 = a_texcoord + 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0;.}... +}; +static const uint8_t vs_imgui_image_essl[341] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, // VSH.....o.><...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // ...-...attribute + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, // highp vec2 a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // sition;.attribut + 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, // e highp vec2 a_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // excoord0;.varyin + 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, // g highp vec2 v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // excoord0;.unifor + 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, // m highp mat4 u_v + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // iewProj;.void ma + 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // in ().{. highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, // tmpvar_1.zw = v + 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // ec2(0.0, 1.0);. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, // tmpvar_1.xy = a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // _position;. gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, // Position = (u_vi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // 1);. v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // 0 = a_texcoord0; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; -static const uint8_t vs_imgui_image_spv[1111] = +static const uint8_t vs_imgui_image_spv[1051] = { - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH.o.><...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x03, // wProj......0.... - 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, // .#.............. - 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, // ................ - 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, // ...GLSL.std.450. - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x49, // ...8...<...E...I - 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, // ................ - 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, // .......main..... - 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, // ...!...$Global.. - 0x00, 0x06, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // ...!.......u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, // wProj......#.... - 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, // .......8...a_pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x61, // ition......<...a - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x45, // _texcoord0.....E + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, // VSH.....o.><...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0xec, 0x03, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, // .........#...... + 0x00, 0x08, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, // ...]............ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, // ...........GLSL. + 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, // std.450......... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x31, // ...main........1 + 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, // ...:...>........ + 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, // ...............m + 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x55, // ain............U + 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, // niformBlock..... + 0x00, 0x06, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // ...........u_vie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, // wProj...... .... + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, // ...........a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x61, // ition......1...a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x3a, // _texcoord0.....: 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, // ...@entryPointOu 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // tput.gl_Position - 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x49, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, // .......I...@entr + 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, // .......>...@entr 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, // yPointOutput.v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x21, // excoord0...H...! - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x21, // ...........H...! + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x1e, // excoord0...H.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1e, // ...........H.... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, // .......#.......H - 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, // ...!............ - 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, // ...G...!.......G - 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...#...".......G - 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...8...........G - 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...<...........G - 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...E...........G - 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, // ...I............ + 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, // ................ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, // ...G...........G + 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ... ...".......G + 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ... ...!.......G + 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...............G + 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...1...........G + 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...:...........G + 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, // ...>............ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, // .......!........ 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, // ........... .... - 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, // ................ - 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, // ................ - 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, // ................ - 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ....... .......+ - 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, // ...............+ - 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, // ...............+ - 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, // ..............?. - 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, // ... ............ - 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, // ...!... ... ..." - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x22, // .......!...;..." - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, // ...#....... ...$ - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, // ....... ... ...7 - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, // ...........;...7 - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3b, // ...8....... ...; - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3b, // ...........;...; - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, // ...<....... ...D - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, // ...........;...D - 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x48, // ...E....... ...H - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x48, // ...........;...H - 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, // ...I.......6.... + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, // ................ + 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ....... .......+ + 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, // ...............+ + 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, // ...............+ + 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, // ..............?. + 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, // ................ + 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, // ........... .... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, // ...........;.... + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, // ... ....... ...! + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2d, // ........... ...- + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2d, // ...........;...- + 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2d, // ...........;...- + 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x39, // ...1....... ...9 + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x39, // ...........;...9 + 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3d, // ...:....... ...= + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, // ...........;...= + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, // ...>.......6.... 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, // ................ - 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, // .......=.......9 - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, // ...8...=.......= - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, // ...<...Q.......a - 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, // ...9.......Q.... - 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, // ...b...9.......P - 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, // .......c...a...b - 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x24, // ...........A...$ - 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, // ...d...#.......= - 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x90, // ... ...e...d.... - 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x65, // .......f...c...e - 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x66, // ...Q.......k...f - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, // ...............l - 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x83, // ...k...R........ - 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, // ...l...f.......> - 0x00, 0x03, 0x00, 0x45, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x49, // ...E.......>...I - 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, // ...=.......8.... - 0x02, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // .....@. + 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2f, // .......=......./ + 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, // .......=.......2 + 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x57, // ...1...Q.......W + 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, // .../.......Q.... + 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, // ...X.../.......P + 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, // .......Y...W...X + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x21, // ...........A...! + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, // ...Z... .......= + 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x90, // .......[...Z.... + 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5b, // ...........Y...[ + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x3e, // ...>...:.......> + 0x00, 0x03, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, // ...>...2.......8 + 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // .........@. }; -static const uint8_t vs_imgui_image_dx9[284] = +static const uint8_t vs_imgui_image_dx9[292] = { - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH.o.><...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, // wProj........... - 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // ...L...0........ - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // ...<.......u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, // wProj........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......vs_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, // 10.1........... - 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, // ................ - 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, // ................ - 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, // .....U.......... - 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, // ................ - 0x00, 0x03, 0xe0, 0x01, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, // VSH.....o.><...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, // ............. .C + 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, // TAB....S........ + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, // ...........L...0 + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, // ...........<.... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, // ...u_viewProj... + 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, // ...............v + 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, // s_3_0.Microsoft + 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, // (R) HLSL Shader + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, // Compiler 10.1... + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, // ................ + 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, // ................ + 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0xe0, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, // .............U.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0xe0, 0x01, 0x00, 0xe4, 0x90, 0xff, // ................ + 0xff, 0x00, 0x00, 0x00, // .... }; -static const uint8_t vs_imgui_image_dx11[475] = +static const uint8_t vs_imgui_image_dx11[483] = { - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH.o.><...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x44, // wProj..........D - 0x58, 0x42, 0x43, 0x62, 0x0c, 0x7d, 0x32, 0x98, 0x4b, 0xbb, 0x29, 0xce, 0xaa, 0xb2, 0xca, 0x5d, // XBCb.}2.K.)....] - 0xc9, 0x55, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // .U............., - 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, // ...........ISGNL - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, // ...........8.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // ................ - 0x03, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...A............ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, // ...........POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0x4f, // ION.TEXCOORD...O - 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, // SGNP...........8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......D........ - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x53, // ...............S - 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, // V_POSITION.TEXCO - 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xd4, 0x00, 0x00, 0x00, 0x40, // ORD....SHDR....@ - 0x00, 0x01, 0x00, 0x35, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, // ...5...Y...F. .. - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x00, // ......._...2.... - 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, // ..._...2.......g - 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, // .... ..........e - 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, // ...2 ......h.... - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, // ...8...........V - 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......F. ...... - 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...2...........F - 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, // . .............. - 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, // ...F............ - 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ......F.......F - 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, // . .........6...2 - 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, // ......F.......> - 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // .........@. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, // VSH.....o.><...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xfd, 0x09, 0x41, 0xa3, 0x52, // .......DXBC..A.R + 0x84, 0xc1, 0x51, 0xab, 0x1b, 0xf1, 0x5e, 0xed, 0xfa, 0xf6, 0x14, 0x01, 0x00, 0x00, 0x00, 0xb4, // ..Q...^......... + 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xd8, // .......,........ + 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, // ...ISGNL........ + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...8............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ + 0x03, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, // ...POSITION.TEXC + 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, // OORD...OSGNP.... + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......8........ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, // ...............D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, // .......SV_POSITI + 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, // ON.TEXCOORD....S + 0x48, 0x44, 0x52, 0xd4, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x35, 0x00, 0x00, 0x00, 0x59, // HDR....@...5...Y + 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, // ...F. ........._ + 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, // ...2......._...2 + 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......g.... ... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x01, // .......e...2 ... + 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, // ...h.......8.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......V.......F + 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, // . .........2.... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F. ...... + 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, // ...........F.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ........ ......F + 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // .......F. ...... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // ...6...2 ......F + 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x10, // .......>........ + 0x00, 0x40, 0x00, // .@. }; -static const uint8_t vs_imgui_image_mtl[686] = +static const uint8_t vs_imgui_image_mtl[687] = { - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH.o.><...u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x8e, 0x02, 0x00, 0x00, 0x75, // wProj..........u - 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m - 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // etal;.struct xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, // tMtlShaderInput - 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // {. float3 a_pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ition [[attribut - 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, // e(0)]];. float2 - 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, // a_texcoord0 [[a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, // ttribute(1)]];.} - 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.struct xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, // ShaderOutput {. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // float4 gl_Posit - 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, // ion [[position]] - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // ;. float2 v_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // coord0;.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, // t xlatMtlShaderU - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // niform {. float - 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, // 4x4 u_viewProj;. - 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // };.vertex xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, // lShaderOutput xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, // atMtlMain (xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, // tlShaderInput _m - 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, // tl_i [[stage_in] - 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ], constant xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform - 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe - 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, // r(0)]]).{. xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _mtl_o;. float4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_1 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x66, // tmpvar_1.zw = f - 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // loat2(0.0, 1.0); - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy = - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // _mtl_i.a_positi - 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // on.xy;. _mtl_o. - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, // gl_Position = (_ - 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // mtl_u.u_viewProj - 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_1);. - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _mtl_o.v_texcoor - 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, // d0 = _mtl_i.a_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, // xcoord0;. retur - 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // n _mtl_o;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0a, 0x75, // VSH.....o.><...u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // .......#include + 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, // <metal_stdlib>.# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, // include <simd/si + 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, // md.h>..using nam + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, // espace metal;..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, // float4x4 u_v + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, // iewProj;.};..str + 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // uct xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, // out.{. float2 + 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // _entryPointOutp + 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, // ut_v_texcoord0 [ + 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // [user(locn0)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // float4 gl_Po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // sition [[positio + 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // n]];.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, // xlatMtlMain_in.{ + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, // . float2 a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // sition [[attribu + 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // te(0)]];. flo + 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // at2 a_texcoord0 + 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, // [[attribute(1)]] + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, // ;.};..vertex xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // tMtlMain_out xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // tMtlMain(xlatMtl + 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, // Main_in in [[sta + 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, // ge_in]], constan + 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // t _Global& _mtl_ + 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, // u [[buffer(0)]]) + 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // .{. xlatMtlMa + 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, // in_out out = {}; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, // . out.gl_Posi + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // tion = _mtl_u.u_ + 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // viewProj * float + 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, // 4(in.a_position, + 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 0.0, 1.0);. + 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // out._entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput_v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // 0 = in.a_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, // d0;. return o + 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ut;.}........@. }; extern const uint8_t* vs_imgui_image_pssl; extern const uint32_t vs_imgui_image_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.sc b/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.sc index f1ae37c107d..0c658027ffd 100644 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.sc +++ b/3rdparty/bgfx/examples/common/imgui/vs_imgui_image.sc @@ -3,7 +3,7 @@ $output v_texcoord0 /* * Copyright 2014 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_latlong.bin.h b/3rdparty/bgfx/examples/common/imgui/vs_imgui_latlong.bin.h deleted file mode 100644 index b02c76d866d..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_latlong.bin.h +++ /dev/null @@ -1,206 +0,0 @@ -static const uint8_t vs_imgui_latlong_glsl[337] = -{ - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH.o.><...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x2c, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ,...attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // ghp vec3 a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, // ion;.attribute h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec2 a_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // oord0;.varying h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec2 v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, // oord0;.uniform h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ighp mat4 u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // main ().{. high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // p vec4 tmpvar_1; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_1.w = - 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // 1.0;. tmpvar_1. - 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // xyz = a_position - 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // ;. gl_Position - 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // = (u_modelViewPr - 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, // oj * tmpvar_1);. - 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, // v_texcoord0 = - 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // a_texcoord0;.}.. - 0x00, // . -}; -static const uint8_t vs_imgui_latlong_spv[1124] = -{ - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH.o.><...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x38, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // 8.....#......... - 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // main....8...<... - 0x45, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // E...I........... - 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, // ........!...$Glo - 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // bal.....!....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x05, 0x00, 0x03, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ....#........... - 0x38, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // 8...a_position.. - 0x05, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ....<...a_texcoo - 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // rd0.....E...@ent - 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, // ryPointOutput.gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // _Position....... - 0x49, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // I...@entryPointO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord - 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...!....... - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...!....... - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, // #.......H...!... - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, // !.......G...#... - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, // ".......G...8... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, // ........G...<... - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, // ........G...E... - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, // ........G...I... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ - 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // ................ - 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, // ................ - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, // ................ - 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, // .......+....... - 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, // ........+....... - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x18, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, // .......?.... ... - 0x0b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, // ............!... - 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ... ..."....... - 0x21, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // !...;..."...#... - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...$....... - 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ... ...7....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // ....;...7...8... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...;....... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....;...;...<... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...D....... - 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, // ....;...D...E... - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...H....... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, // ....;...H...I... - 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // =.......9...8... - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // =.......=...<... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // Q.......`...9... - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, // ....Q.......a... - 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // 9.......Q....... - 0x62, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // b...9.......P... - 0x0b, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, // ....c...`...a... - 0x62, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, // b.......A...$... - 0x64, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // d...#.......=... - 0x20, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // ...e...d....... - 0x0b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, // ....f...c...e... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, // Q.......k...f... - 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // ............l... - 0x6b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, // k...R........... - 0x6c, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // l...f.......>... - 0x45, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x49, 0x00, 0x00, 0x00, // E.......>...I... - 0x3d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, // =.......8....... - 0x10, 0x00, 0x40, 0x00, // ..@. -}; -static const uint8_t vs_imgui_latlong_dx9[313] = -{ - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH.o.><...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x14, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // ..........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0xe0, // ................ - 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, // ..............U. - 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ - 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0xe0, // ................ - 0x01, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... -}; -static const uint8_t vs_imgui_latlong_dx11[520] = -{ - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH.o.><...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xdc, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x0b, 0x6a, 0x72, 0xae, 0x8a, 0xf0, 0xc5, 0xba, // ....DXBC.jr..... - 0x55, 0x23, 0xc7, 0x67, 0xc5, 0xc7, 0xe9, 0x83, 0x01, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, // U#.g............ - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, // ....,........... - 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNL........... - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // 8............... - 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........A....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // ................ - 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, // POSITION.TEXCOOR - 0x44, 0x00, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // D...OSGNP....... - 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....8........... - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, // ............D... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. - 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, // TEXCOORD....SHDR - 0xfc, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@...?...Y... - 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... - 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // r......._...2... - 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e...2 ...... - 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... - 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... - 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... - 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. - 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, // ........6...2 .. - 0x01, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ....F.......>... - 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ......@. -}; -static const uint8_t vs_imgui_latlong_mtl[685] = -{ - 0x56, 0x53, 0x48, 0x05, 0x6f, 0x1e, 0x3e, 0x3c, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH.o.><...u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x88, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // nput {. float3 - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, // a_position [[att - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, // ribute(0)]];. f - 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // loat2 a_texcoord - 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, // 0 [[attribute(1) - 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // ]];.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // t {. float4 gl_ - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, // Position [[posit - 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, // ion]];. float2 - 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, // v_texcoord0;.};. - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // struct xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, // aderUniform {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // float4x4 u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, // ViewProj;.};.ver - 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // tex xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // rOutput xlatMtlM - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ain (xlatMtlShad - 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, // erInput _mtl_i [ - 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // stant xlatMtlSha - 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // derUniform& _mtl - 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // _u [[buffer(0)]] - 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // ).{. xlatMtlSha - 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // derOutput _mtl_o - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. float4 tmpva - 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_1 = 0;. tmpva - 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // r_1.w = 1.0;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // mpvar_1.xyz = _m - 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // tl_i.a_position; - 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // . _mtl_o.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // ition = (_mtl_u. - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, // u_modelViewProj - 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // * tmpvar_1);. _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_o.v_texcoord - 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, // 0 = _mtl_i.a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // coord0;. return - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _mtl_o;.}... -}; -extern const uint8_t* vs_imgui_latlong_pssl; -extern const uint32_t vs_imgui_latlong_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_latlong.sc b/3rdparty/bgfx/examples/common/imgui/vs_imgui_latlong.sc deleted file mode 100644 index 098bdeb24ee..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_latlong.sc +++ /dev/null @@ -1,15 +0,0 @@ -$input a_position, a_texcoord0 -$output v_texcoord0 - -/* - * Copyright 2015 Dario Manesku. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -void main() -{ - gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); - v_texcoord0 = a_texcoord0; -} diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_texture.bin.h b/3rdparty/bgfx/examples/common/imgui/vs_imgui_texture.bin.h deleted file mode 100644 index 4270e2752d7..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_texture.bin.h +++ /dev/null @@ -1,231 +0,0 @@ -static const uint8_t vs_imgui_texture_glsl[419] = -{ - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x83, 0x01, 0x00, 0x00, 0x61, // wProj..........a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v - 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, // ec4 a_color0;.at - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // tribute highp ve - 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, // c3 a_position;.a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v - 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // ec2 a_texcoord0; - 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // .varying highp v - 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va - 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, // rying highp vec2 - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, // v_texcoord0;.un - 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, // iform highp mat4 - 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, // u_viewProj;.voi - 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, // d main ().{. hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ - 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, // 1;. tmpvar_1.zw - 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // = vec2(0.0, 1.0 - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // );. tmpvar_1.xy - 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, // = a_position.xy - 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // ;. gl_Position - 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, // = (u_viewProj * - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, // tmpvar_1);. v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // excoord0 = a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // coord0;. v_colo - 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, // r0 = a_color0;.} - 0x0a, 0x0a, 0x00, // ... -}; -static const uint8_t vs_imgui_texture_spv[1285] = -{ - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0xdc, 0x04, 0x00, 0x00, 0x03, // wProj........... - 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, // .#.............. - 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, // ................ - 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, // ...GLSL.std.450. - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x51, // ...>...B...F...Q - 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, // ...T...X........ - 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, // ...............m - 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x24, // ain........&...$ - 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, // Global.....&.... - 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x05, // ...u_viewProj... - 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, // ...(...........> - 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, // ...a_color0..... - 0x00, 0x05, 0x00, 0x42, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // ...B...a_positio - 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, // n......F...a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x51, 0x00, 0x00, 0x00, 0x40, // coord0.....Q...@ - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // entryPointOutput - 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, // .gl_Position.... - 0x00, 0x09, 0x00, 0x54, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // ...T...@entryPoi - 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ntOutput.v_color - 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x58, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, // 0......X...@entr - 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, // yPointOutput.v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x26, // excoord0...H...& - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x26, // ...........H...& - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, // .......#.......H - 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, // ...&............ - 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, // ...G...&.......G - 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...(...".......G - 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...>...........G - 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...B...........G - 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, // ...F...........G - 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...Q...........G - 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...T...........G - 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, // ...X............ - 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, // .......!........ - 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, // ........... .... - 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, // ................ - 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, // ................ - 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, // ................ - 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ....... .......+ - 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, // ..............?+ - 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, // ...............+ - 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, // ................ - 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, // ...%............ - 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, // ...&...%... ...' - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x27, // .......&...;...' - 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x29, // ...(....... ...) - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3d, // .......%... ...= - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, // ...........;...= - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x41, // ...>....... ...A - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x41, // ...........;...A - 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, // ...B....... ...E - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, // ...........;...E - 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x50, // ...F....... ...P - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, // ...........;...P - 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, // ...Q.......;...P - 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x57, // ...T....... ...W - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x57, // ...........;...W - 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, // ...X.......6.... - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, // ................ - 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3f, // .......=.......? - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x43, // ...>...=.......C - 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x47, // ...B...=.......G - 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, // ...F...Q.......q - 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, // ...C.......Q.... - 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, // ...r...C.......P - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, // .......s...q...r - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, // ...........A...) - 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3d, // ...t...(.......= - 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x90, // ...%...u...t.... - 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x75, // .......v...s...u - 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x76, // ...Q.......}...v - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, // ...............~ - 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9c, // ...}...R........ - 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, // ...~...v.......> - 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x54, // ...Q.......>...T - 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x47, // ...?...>...X...G - 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, // .......8........ - 0x00, 0x10, 0x00, 0x40, 0x00, // ...@. -}; -static const uint8_t vs_imgui_texture_dx9[320] = -{ - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, // wProj...... .... - 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // ...L...0........ - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // ...<.......u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, // wProj........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......vs_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // 10.1........... - 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, // ................ - 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, // ................ - 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x03, 0xe0, 0x05, // ................ - 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, // .............U.. - 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, // ................ - 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, // ................ - 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, // ................ - 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ................ -}; -static const uint8_t vs_imgui_texture_dx11[577] = -{ - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x18, 0x02, 0x00, 0x00, 0x44, // wProj..........D - 0x58, 0x42, 0x43, 0x02, 0x1b, 0xea, 0x24, 0x10, 0xd8, 0x6f, 0x23, 0xf5, 0xf6, 0x01, 0x38, 0x5b, // XBC...$..o#...8[ - 0x08, 0x13, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..M............, - 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, // ...........ISGNh - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...V............ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, // ..........._.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ...COLOR.POSITIO - 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, // N.TEXCOORD.OSGNl - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, // ...........b.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, // ................ - 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C - 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, // OLOR.TEXCOORD..S - 0x48, 0x44, 0x52, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x59, // HDR....@...@...Y - 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, // ...F. ........._ - 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, // ..........._...2 - 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, // ......._...2.... - 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ...g.... ....... - 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, // ...e.... ......e - 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, // ...2 ......h.... - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, // ...8...........V - 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......F. ...... - 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...2...........F - 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, // . .............. - 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, // ...F............ - 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ......F.......F - 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, // . .........6.... - 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // ......F.......6 - 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, // ...2 ......F.... - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, // ...>...........@ - 0x00, // . -}; -static const uint8_t vs_imgui_texture_mtl[778] = -{ - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0xea, 0x02, 0x00, 0x00, 0x75, // wProj..........u - 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m - 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // etal;.struct xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, // tMtlShaderInput - 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // {. float4 a_col - 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // or0 [[attribute( - 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, // 0)]];. float3 a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // _position [[attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // ibute(1)]];. fl - 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // oat2 a_texcoord0 - 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, // [[attribute(2)] - 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // ];.};.struct xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // {. float4 gl_P - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi - 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, // on]];. float4 v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _color0;. float - 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, // 2 v_texcoord0;.} - 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.struct xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, // ShaderUniform {. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, // float4x4 u_vie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, // wProj;.};.vertex - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // tput xlatMtlMain - 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // (xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, // nput _mtl_i [[st - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, // age_in]], consta - 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // nt xlatMtlShader - 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, // Uniform& _mtl_u - 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, // [[buffer(0)]]).{ - 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // . xlatMtlShader - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, // Output _mtl_o;. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // float4 tmpvar_1 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // = 0;. tmpvar_1 - 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, // .zw = float2(0.0 - 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // , 1.0);. tmpvar - 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // _1.xy = _mtl_i.a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, // _position.xy;. - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // _mtl_o.gl_Positi - 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, // on = (_mtl_u.u_v - 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // iewProj * tmpvar - 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, // _1);. _mtl_o.v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // texcoord0 = _mtl - 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // _i.a_texcoord0;. - 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // _mtl_o.v_color - 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // 0 = _mtl_i.a_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, // or0;. return _m - 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tl_o;.}... -}; -extern const uint8_t* vs_imgui_texture_pssl; -extern const uint32_t vs_imgui_texture_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/vs_imgui_texture.sc b/3rdparty/bgfx/examples/common/imgui/vs_imgui_texture.sc deleted file mode 100644 index c2e9aa11a12..00000000000 --- a/3rdparty/bgfx/examples/common/imgui/vs_imgui_texture.sc +++ /dev/null @@ -1,16 +0,0 @@ -$input a_position, a_texcoord0, a_color0 -$output v_texcoord0, v_color0 - -/* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include <bgfx_shader.sh> - -void main() -{ - gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0) ); - v_texcoord0 = a_texcoord0; - v_color0 = a_color0; -} diff --git a/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.bin.h b/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.bin.h index 3a6c6a1b934..167563a956a 100644 --- a/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.bin.h +++ b/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.bin.h @@ -1,251 +1,278 @@ -static const uint8_t vs_ocornut_imgui_glsl[523] = +static const uint8_t vs_ocornut_imgui_glsl[460] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0b, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0xea, 0x01, 0x00, 0x00, // wTexel.......... - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // attribute highp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, // vec4 a_color0;.a - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ttribute highp v - 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // attribute highp - 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // vec2 a_texcoord0 - 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.varying highp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, // 2 v_texcoord0;.u - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // niform highp vec - 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x3b, 0x0a, 0x76, // 4 u_viewTexel;.v - 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. - 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec2 tmpva - 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // r_1;. tmpvar_1 - 0x3d, 0x20, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // = ((2.0 * a_posi - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, // tion.xy) * u_vie - 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, // wTexel.xy);. hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ - 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x77, // 2;. tmpvar_2.zw - 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // = vec2(0.0, 1.0 - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, // );. tmpvar_2.x - 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, // = (tmpvar_1.x - - 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // 1.0);. tmpvar_2 - 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, // .y = (1.0 - tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // ar_1.y);. gl_Po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // sition = tmpvar_ - 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // 2;. v_texcoord0 - 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // = a_texcoord0;. - 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, // v_color0 = a_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // olor0;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // .......attribute + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, // vec4 a_color0;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, // attribute vec2 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // _position;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // bute vec2 a_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, // oord0;.varying v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // rying vec2 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // coord0;.uniform + 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // mat4 u_viewProj; + 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, // . tmpvar_1.zw = + 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // vec2(0.0, 1.0); + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy = + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x76, // a_position;. v + 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ec4 tmpvar_2;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, // tmpvar_2.zw = ve + 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, // c2(0.0, 1.0);. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x75, // tmpvar_2.xy = (u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // _viewProj * tmpv + 0x61, 0x72, 0x5f, 0x31, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, // ar_1).xy;. gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // osition = tmpvar + 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // _2;. v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // 0 = a_texcoord0; + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // . v_color0 = a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0;.}... }; -static const uint8_t vs_ocornut_imgui_spv[1342] = +static const uint8_t vs_ocornut_imgui_essl[508] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0b, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x14, 0x05, 0x00, 0x00, // wTexel.......... - 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xb0, 0x00, 0x00, 0x00, // ..#............. - 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, // ....GLSL.std.450 - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main - 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, // ....F...J...N... - 0x59, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, // Y.......`....... - 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, // main........$... - 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x24, 0x00, 0x00, 0x00, // $Global.....$... - 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x00, // ....u_viewTexel. - 0x05, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // ....&........... - 0x46, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, // F...a_color0.... - 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ....J...a_positi - 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, // on......N...a_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x59, 0x00, 0x00, 0x00, // xcoord0.....Y... - 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu - 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // t.gl_Position... - 0x05, 0x00, 0x09, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ........@entryPo - 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput.v_colo - 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, // r0......`...@ent - 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, // ryPointOutput.v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // texcoord0...H... - 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // $.......#....... - 0x47, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...$.......G... - 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // &...".......G... - 0x46, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // F...........G... - 0x4a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // J...........G... - 0x4e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // N...........G... - 0x59, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // Y...........G... - 0x5c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // ............G... - 0x60, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, // `............... - 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....!........... - 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ........ ....... - 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ - 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ - 0x0b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, // ................ - 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // .... .......+... - 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, // ...........?+... - 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // ............+... - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1e, 0x00, 0x03, 0x00, // .... ......@.... - 0x24, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // $....... ...%... - 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, // ....$...;...%... - 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, // &.......+....... - 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, // '....... ...(... - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, // ........ ...E... - 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, // ........;...E... - 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, // F....... ...I... - 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, // ........;...I... - 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // J....... ...M... - 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // ........;...M... - 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, // N....... ...X... - 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, // ........;...X... - 0x59, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, // Y.......;...X... - 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, // ........ ..._... - 0x03, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, // ........;..._... - 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, // `............... - 0xaf, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, // =.......G...F... - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, // =.......K...J... - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, // =.......O...N... - 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, // O.......z...K... - 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, // K............... - 0x0b, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ....{...z... ... - 0x41, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, // A...(...|...&... - 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, // '...=.......}... - 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, // |...O.......~... - 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // }...}........... - 0x85, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, // ............{... - 0x7e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, // ~...Q........... - 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // ................ - 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... - 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, // P............... - 0xaf, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, // ................ - 0x06, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, // ................ - 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, // R............... - 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, // ........>...Y... - 0xae, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, // ....>.......G... - 0x3e, 0x00, 0x03, 0x00, 0x60, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...`...O....... - 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x10, 0x00, // 8............. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // .......attribute + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, // highp vec4 a_co + 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, // lor0;.attribute + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // highp vec2 a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // ition;.attribute + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, // highp vec2 a_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // xcoord0;.varying + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, // highp vec4 v_co + 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // lor0;.varying hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ghp vec2 v_texco + 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, // ord0;.uniform hi + 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // ghp mat4 u_viewP + 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, // roj;.void main ( + 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ).{. highp vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, // var_1.zw = vec2( + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 0.0, 1.0);. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // var_1.xy = a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, // ition;. highp v + 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, // ec4 tmpvar_2;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, // tmpvar_2.zw = ve + 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, // c2(0.0, 1.0);. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x75, // tmpvar_2.xy = (u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // _viewProj * tmpv + 0x61, 0x72, 0x5f, 0x31, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, // ar_1).xy;. gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // osition = tmpvar + 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // _2;. v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // 0 = a_texcoord0; + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // . v_color0 = a_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0;.}... }; -static const uint8_t vs_ocornut_imgui_dx9[361] = +static const uint8_t vs_ocornut_imgui_spv[1293] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0b, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x48, 0x01, 0x00, 0x00, // wTexel......H... - 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, // ...... .CTAB.... - 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, // S............... - 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....L...0....... - 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, // ....<.......u_vi - 0x65, 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, // ewTexel......... - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M - 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS - 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile - 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, 0x0f, 0xa0, // r 10.1..Q....... - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, // ...@.......?.... - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x03, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, // ................ - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0xe0, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, // ..........U..... - 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0xa1, 0x01, 0x00, 0xaa, 0xa0, // ......U......... - 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0c, 0xe0, 0x01, 0x00, 0xb4, 0xa0, 0x01, 0x00, 0x00, 0x02, // ................ - 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0xe0, // ................ - 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0xdc, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, // .........#...... + 0x00, 0x08, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, // ...|............ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, // ...........GLSL. + 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, // std.450......... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x42, // ...main....>...B + 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x57, // ...E...P...S...W + 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, // ................ + 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, // .......main..... + 0x00, 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, // ...#...UniformBl + 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, // ock........#.... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x00, 0x05, // ...u_viewProj... + 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3e, // ...%...........> + 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, // ...a_color0..... + 0x00, 0x05, 0x00, 0x42, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // ...B...a_positio + 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, // n......E...a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, // coord0.....P...@ + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // entryPointOutput + 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, // .gl_Position.... + 0x00, 0x09, 0x00, 0x53, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, // ...S...@entryPoi + 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ntOutput.v_color + 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, // 0......W...@entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, // yPointOutput.v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x23, // excoord0...H...# + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x23, // ...........H...# + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, // .......#.......H + 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, // ...#............ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, // ...G...#.......G + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...%...".......G + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...%...!.......G + 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...>...........G + 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, // ...B...........G + 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, // ...E...........G + 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...P...........G + 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, // ...S...........G + 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, // ...W............ + 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, // .......!........ + 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, // ........... .... + 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, // ................ + 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, // ....... .......+ + 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, // ..............?+ + 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, // ................ + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, // ..."............ + 0x00, 0x03, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, // ...#..."... ...$ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, // .......#...;...$ + 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x14, // ...%.......+.... + 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, // ...&....... ...' + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3d, // ......."... ...= + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3d, // ...........;...= + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x41, // ...>....... ...A + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x41, // ...........;...A + 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x41, // ...B.......;...A + 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4f, // ...E....... ...O + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4f, // ...........;...O + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4f, // ...P.......;...O + 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x56, // ...S....... ...V + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x56, // ...........;...V + 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, // ...W.......6.... + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, // ................ + 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3f, // .......=.......? + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x43, // ...>...=.......C + 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x46, // ...B...=.......F + 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, // ...E...Q.......q + 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, // ...C.......Q.... + 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, // ...r...C.......P + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, // .......s...q...r + 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x27, // ...........A...' + 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3d, // ...t...%...&...= + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x90, // ..."...u...t.... + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x75, // .......v...s...u + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x76, // ...Q.......x...v + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, // .......Q.......z + 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, // ...v.......P.... + 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x17, // ...{...x...z.... + 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x7b, // .......>...P...{ + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, // ...>...S...?...> + 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, // ...W...F.......8 + 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ...........@. }; -static const uint8_t vs_ocornut_imgui_dx11[614] = +static const uint8_t vs_ocornut_imgui_dx9[364] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0b, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3c, 0x02, 0x00, 0x00, // wTexel......<... - 0x44, 0x58, 0x42, 0x43, 0x22, 0x5c, 0xcc, 0x36, 0x58, 0xb2, 0x23, 0x45, 0x8a, 0x2b, 0xbd, 0x13, // DXBC"..6X.#E.+.. - 0xac, 0xf2, 0xa4, 0x09, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ........<....... - 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, // ,...........ISGN - 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // h...........P... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....V........... - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, // ............_... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ - 0x03, 0x03, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, // ....COLOR.POSITI - 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, // ON.TEXCOORD.OSGN - 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // l...........P... - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, // ............b... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ - 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. - 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, // COLOR.TEXCOORD.. - 0x53, 0x48, 0x44, 0x52, 0x24, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x49, 0x00, 0x00, 0x00, // SHDR$...@...I... - 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // Y...F. ......... - 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _..........._... - 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // 2......._...2... - 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e.... ...... - 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, // e...2 ......h... - 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, 0xc2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....6.... ...... - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .@.............. - 0x00, 0x00, 0x80, 0x3f, 0x38, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?8...2....... - 0x46, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // F.......F. ..... - 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2.... ...... - 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, // .........@.....@ - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x32, 0x00, 0x00, 0x0a, 0x22, 0x20, 0x10, 0x00, // .@......2..." .. - 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........A....... - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // .@.....@.@.....? - 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... - 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6...2 ...... - 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // F.......>....... - 0x01, 0x00, 0x10, 0x00, 0x10, 0x00, // ...... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, // ...D......... .C + 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, // TAB....S........ + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, // ...........L...0 + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, // ...........<.... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, // ...u_viewProj... + 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, // ...............v + 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, // s_3_0.Microsoft + 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, // (R) HLSL Shader + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, // Compiler 10.1..Q + 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, // ..............?. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // ................ + 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, // ................ + 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x03, 0xe0, 0x05, // ................ + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, // .............U.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, // ................ + 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0c, 0xe0, 0x04, 0x00, 0x44, 0xa0, 0x01, // .............D.. + 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, // ................ + 0x00, 0x03, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ }; -static const uint8_t vs_ocornut_imgui_mtl[880] = +static const uint8_t vs_ocornut_imgui_dx11[617] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0b, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x4f, 0x03, 0x00, 0x00, // wTexel......O... - 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, // using namespace - 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // metal;.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, // atMtlShaderInput - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, // {. float4 a_co - 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // lor0 [[attribute - 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, // (0)]];. float3 - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, // a_position [[att - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, // ribute(1)]];. f - 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // loat2 a_texcoord - 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, // 0 [[attribute(2) - 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // ]];.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, // t {. float4 gl_ - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, // Position [[posit - 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // ion]];. float4 - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // v_color0;. floa - 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // t2 v_texcoord0;. - 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // };.struct xlatMt - 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, // lShaderUniform { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // . float4 u_view - 0x54, 0x65, 0x78, 0x65, 0x6c, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, // Texel;.};.vertex - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // tput xlatMtlMain - 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // (xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, // nput _mtl_i [[st - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, // age_in]], consta - 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // nt xlatMtlShader - 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, // Uniform& _mtl_u - 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, // [[buffer(0)]]).{ - 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // . xlatMtlShader - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, // Output _mtl_o;. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // float2 tmpvar_1 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // = 0;. tmpvar_1 - 0x20, 0x3d, 0x20, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // = ((2.0 * _mtl_ - 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x29, // i.a_position.xy) - 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // * _mtl_u.u_view - 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // Texel.xy);. flo - 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, // at4 tmpvar_2 = 0 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x7a, 0x77, 0x20, // ;. tmpvar_2.zw - 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, // = float2(0.0, 1. - 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, // 0);. tmpvar_2.x - 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2d, // = (tmpvar_1.x - - 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ - 0x32, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, // 2.y = (1.0 - tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // var_1.y);. _mtl - 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // _o.gl_Position = - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, // tmpvar_2;. _mt - 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // l_o.v_texcoord0 - 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // = _mtl_i.a_texco - 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, // ord0;. _mtl_o.v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // _color0 = _mtl_i - 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, // .a_color0;. ret - 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // urn _mtl_o;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xa9, 0x5b, 0xb0, 0xfb, 0xae, // ...8...DXBC.[... + 0x5e, 0xc6, 0x4a, 0xef, 0x25, 0x0b, 0x81, 0x23, 0x55, 0x3d, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, // ^.J.%..#U=.....8 + 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, // .......,........ + 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, // ...ISGNh........ + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...P............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, // ...........V.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ + 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ..._............ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, // ...........COLOR + 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // .POSITION.TEXCOO + 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, // RD.OSGNl........ + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ...P............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, // ................ + 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...b............ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, // ...........SV_PO + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, // SITION.COLOR.TEX + 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x20, 0x01, 0x00, 0x00, 0x40, // COORD..SHDR ...@ + 0x00, 0x01, 0x00, 0x48, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, // ...H...Y...F. .. + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, // ......._........ + 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, // ..._...2......._ + 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, // ...2.......g.... + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, // ..........e.... + 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x02, // ......e...2 ... + 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x32, // ...h.......8...2 + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // .......V.......F + 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x32, // . .........2...2 + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F. ...... + 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, // ...........F.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x32, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......2 ......F + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // .......F. ...... + 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, 0xc2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // ...6.... ....... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // @............... + 0x00, 0x80, 0x3f, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // ..?6.... ......F + 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x02, // .......6...2 ... + 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, // ...F.......>.... + 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // .......@. +}; +static const uint8_t vs_ocornut_imgui_mtl[855] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, // _viewProj....... + 0x00, 0x00, 0x00, 0x26, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // ...&...#include + 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, // <metal_stdlib>.# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, // include <simd/si + 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, // md.h>..using nam + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, // espace metal;..s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, // truct _Global.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, // float4x4 u_v + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, // iewProj;.};..str + 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // uct xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // out.{. float4 + 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // _entryPointOutp + 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, // ut_v_color0 [[us + 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // er(locn0)]];. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // float2 _entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // intOutput_v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // oord0 [[user(loc + 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n1)]];. float + 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // 4 gl_Position [[ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, // position]];.};.. + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, // struct xlatMtlMa + 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // in_in.{. floa + 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, // t4 a_color0 [[at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // tribute(0)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // float2 a_posit + 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // ion [[attribute( + 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, // 1)]];. float2 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, // a_texcoord0 [[a + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, // ttribute(2)]];.} + 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // ;..vertex xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // lMain_out xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // lMain(xlatMtlMai + 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, // n_in in [[stage_ + 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, // in]], constant _ + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, // Global& _mtl_u [ + 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, // [buffer(0)]]).{. + 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // out out = {};. + 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // out.gl_Positio + 0x6e, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // n = float4((_mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, // _u.u_viewProj * + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // float4(in.a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, // tion, 0.0, 1.0)) + 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // .xy, 0.0, 1.0);. + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // out._entryPo + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // intOutput_v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r0 = in.a_color0 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, // ;. out._entry + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, // PointOutput_v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, // xcoord0 = in.a_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // excoord0;. re + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x03, 0x05, // turn out;.}..... + 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // .....@. }; extern const uint8_t* vs_ocornut_imgui_pssl; extern const uint32_t vs_ocornut_imgui_pssl_size; diff --git a/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.sc b/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.sc index 0226931aea5..c4f6eb10cdf 100644 --- a/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.sc +++ b/3rdparty/bgfx/examples/common/imgui/vs_ocornut_imgui.sc @@ -5,8 +5,9 @@ $output v_color0, v_texcoord0 void main() { - vec2 pos = 2.0*a_position.xy*u_viewTexel.xy; - gl_Position = vec4(pos.x - 1.0, 1.0 - pos.y, 0.0, 1.0); + vec4 pos = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0) ); + gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); v_texcoord0 = a_texcoord0; v_color0 = a_color0; } + diff --git a/3rdparty/bgfx/examples/common/nanovg/fontstash.h b/3rdparty/bgfx/examples/common/nanovg/fontstash.h index 798b404172d..3a0dd3dd99e 100644 --- a/3rdparty/bgfx/examples/common/nanovg/fontstash.h +++ b/3rdparty/bgfx/examples/common/nanovg/fontstash.h @@ -89,7 +89,7 @@ typedef struct FONStextIter FONStextIter; typedef struct FONScontext FONScontext; -// Contructor and destructor. +// Constructor and destructor. FONScontext* fonsCreateInternal(FONSparams* params); void fonsDeleteInternal(FONScontext* s); @@ -98,7 +98,7 @@ void fonsSetErrorCallback(FONScontext* s, void (*callback)(void* uptr, int error void fonsGetAtlasSize(FONScontext* s, int* width, int* height); // Expands the atlas size. int fonsExpandAtlas(FONScontext* s, int width, int height); -// Reseta the whole stash. +// Resets the whole stash. int fonsResetAtlas(FONScontext* stash, int width, int height); // Add fonts @@ -162,11 +162,19 @@ static FT_Library ftLibrary; int fons__tt_init(FONScontext *context) { FT_Error ftError; - FONS_NOTUSED(context); + FONS_NOTUSED(context); ftError = FT_Init_FreeType(&ftLibrary); return ftError == 0; } +int fons__tt_done(FONScontext *context) +{ + FT_Error ftError; + FONS_NOTUSED(context); + ftError = FT_Done_FreeType(ftLibrary); + return ftError == 0; +} + int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize) { FT_Error ftError; @@ -204,7 +212,7 @@ int fons__tt_buildGlyphBitmap(FONSttFontImpl *font, int glyph, float size, float ftError = FT_Set_Pixel_Sizes(font->font, 0, (FT_UInt)(size * (float)font->font->units_per_EM / (float)(font->font->ascender - font->font->descender))); if (ftError) return 0; - ftError = FT_Load_Glyph(font->font, glyph, FT_LOAD_RENDER); + ftError = FT_Load_Glyph(font->font, glyph, FT_LOAD_RENDER | FT_LOAD_FORCE_AUTOHINT); if (ftError) return 0; ftError = FT_Get_Advance(font->font, glyph, FT_LOAD_NO_SCALE, &advFixed); if (ftError) return 0; @@ -271,6 +279,12 @@ int fons__tt_init(FONScontext *context) return 1; } +int fons__tt_done(FONScontext *context) +{ + FONS_NOTUSED(context); + return 1; +} + int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize) { int stbError; @@ -319,7 +333,7 @@ int fons__tt_getGlyphKernAdvance(FONSttFontImpl *font, int glyph1, int glyph2) #endif #ifndef FONS_SCRATCH_BUF_SIZE -# define FONS_SCRATCH_BUF_SIZE 64000 +# define FONS_SCRATCH_BUF_SIZE 96000 #endif #ifndef FONS_HASH_LUT_SIZE # define FONS_HASH_LUT_SIZE 256 @@ -406,7 +420,7 @@ struct FONSstate typedef struct FONSstate FONSstate; struct FONSatlasNode { - short x, y, width; + short x, y, width; }; typedef struct FONSatlasNode FONSatlasNode; @@ -497,11 +511,11 @@ static unsigned int fons__decutf8(unsigned int* state, unsigned int* codep, unsi 12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12, 12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,12,12,12,12,12, - }; + }; unsigned int type = utf8d[byte]; - *codep = (*state != FONS_UTF8_ACCEPT) ? + *codep = (*state != FONS_UTF8_ACCEPT) ? (byte & 0x3fu) | (*codep << 6) : (0xff >> type) & (byte); @@ -886,7 +900,7 @@ error: int fonsAddFont(FONScontext* stash, const char* name, const char* path) { FILE* fp = 0; - size_t dataSize = 0; + int dataSize = 0; size_t readed; unsigned char* data = NULL; @@ -894,16 +908,16 @@ int fonsAddFont(FONScontext* stash, const char* name, const char* path) fp = fopen(path, "rb"); if (fp == NULL) goto error; fseek(fp,0,SEEK_END); - dataSize = ftell(fp); + dataSize = (int)ftell(fp); fseek(fp,0,SEEK_SET); data = (unsigned char*)malloc(dataSize); if (data == NULL) goto error; readed = fread(data, 1, dataSize, fp); fclose(fp); fp = 0; - if (readed != dataSize) goto error; + if ((int)readed != dataSize) goto error; - return fonsAddFontMem(stash, name, data, int(dataSize), 1); + return fonsAddFontMem(stash, name, data, dataSize, 1); error: if (data) free(data); @@ -1636,6 +1650,7 @@ void fonsDeleteInternal(FONScontext* stash) if (stash->fonts) free(stash->fonts); if (stash->texData) free(stash->texData); if (stash->scratch) free(stash->scratch); + fons__tt_done(stash); free(stash); } diff --git a/3rdparty/bgfx/examples/common/nanovg/fs_nanovg_fill.bin.h b/3rdparty/bgfx/examples/common/nanovg/fs_nanovg_fill.bin.h index 5900a70540d..3b2b95510bb 100644 --- a/3rdparty/bgfx/examples/common/nanovg/fs_nanovg_fill.bin.h +++ b/3rdparty/bgfx/examples/common/nanovg/fs_nanovg_fill.bin.h @@ -1,154 +1,148 @@ -static const uint8_t fs_nanovg_fill_glsl[2928] = +static const uint8_t fs_nanovg_fill_glsl[2827] = { - 0x46, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x08, 0x00, 0x0c, 0x75, 0x5f, 0x73, 0x63, 0x69, // FSH........u_sci - 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, // ssorMat.......u_ - 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, // paintMat.......u - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, // _innerCol....... + 0x46, 0x53, 0x48, 0x0b, 0xcf, 0xda, 0x1b, 0x94, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x75, // FSH............u + 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x03, 0x01, 0x00, 0x00, 0x01, // _scissorMat..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, // ......u_paintMat + 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x69, 0x6e, 0x6e, // ...........u_inn + 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // erCol........... 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, // u_outerCol...... - 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, // .u_scissorExtSca - 0x6c, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, // le.......u_exten - 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, // tRadius.......u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x05, 0x73, 0x5f, 0x74, // params.......s_t - 0x65, 0x78, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd3, 0x0a, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, // ex..........vary - 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, // ing highp vec2 v - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // _position;.varyi - 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, // ng highp vec2 v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo - 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x75, 0x5f, // rm highp mat3 u_ - 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // scissorMat;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x75, // orm highp mat3 u - 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // _paintMat;.unifo - 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, // rm highp vec4 u_ - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, // innerCol;.unifor - 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x6f, // m highp vec4 u_o + 0x00, 0x00, 0x00, 0x00, 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, // .....u_scissorEx + 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // tScale.......... + 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x02, // .u_extentRadius. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ..........u_para + 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x5f, 0x74, // ms...........s_t + 0x65, 0x78, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x0a, 0x00, 0x00, // ex..........J... + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x70, // varying vec2 v_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, // osition;.varying + 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec2 v_texcoord + 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, // 0;.uniform mat3 + 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x75, 0x6e, // u_scissorMat;.un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x69, // iform mat3 u_pai + 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, // ntMat;.uniform v + 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, // ec4 u_innerCol;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x6f, // uniform vec4 u_o 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // uterCol;.uniform - 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x73, 0x63, // highp vec4 u_sc - 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x75, // issorExtScale;.u - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // niform highp vec - 0x34, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, // 4 u_extentRadius - 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.uniform highp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x75, // vec4 u_params;.u - 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, // niform sampler2D - 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, // s_tex;.void mai - 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // n ().{. lowp ve - 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x68, // c4 result_1;. h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ighp float tmpva - 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // r_2;. highp vec - 0x32, 0x20, 0x73, 0x63, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // 2 sc_3;. highp - 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, // vec3 tmpvar_4;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, // tmpvar_4.z = 1. - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, // 0;. tmpvar_4.xy - 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, // = v_position;. - 0x20, 0x73, 0x63, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, // sc_3 = (vec2(0. - 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, // 5, 0.5) - ((. - 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, // abs((u_scissorM - 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x2e, 0x78, // at * tmpvar_4).x - 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, // y). - u_scisso - 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x78, 0x79, 0x29, 0x20, 0x2a, 0x20, // rExtScale.xy) * - 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, // u_scissorExtScal - 0x65, 0x2e, 0x7a, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // e.zw));. tmpvar - 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x73, 0x63, 0x5f, // _2 = (clamp (sc_ - 0x33, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, // 3.x, 0.0, 1.0) * - 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x73, 0x63, 0x5f, 0x33, 0x2e, 0x79, 0x2c, 0x20, // clamp (sc_3.y, - 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, // 0.0, 1.0));. hi - 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ghp float tmpvar - 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, // _5;. tmpvar_5 = - 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x28, 0x0a, 0x20, 0x20, // (min (1.0, (. - 0x20, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x28, 0x76, // (1.0 - abs(((v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x32, // _texcoord0.x * 2 - 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, // .0) - 1.0))). - 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2a, // * u_params.y)) * - 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // min (1.0, v_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, // coord0.y));. if - 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, // ((u_params.w == - 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, // 0.0)) {. hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // hp vec3 tmpvar_6 - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, // ;. tmpvar_6.z - 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // = 1.0;. tmpv - 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, // ar_6.xy = v_posi - 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // tion;. highp - 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, // vec2 tmpvar_7;. - 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x61, // tmpvar_7 = (a - 0x62, 0x73, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x20, 0x2a, // bs((u_paintMat * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x20, 0x2d, // tmpvar_6).xy) - - 0x20, 0x28, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, // (u_extentRadius - 0x2e, 0x78, 0x79, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, // .xy - u_extentRa - 0x64, 0x69, 0x75, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, // dius.zz));. h - 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec2 tmpvar - 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, // _8;. tmpvar_8 - 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // = max (tmpvar_7 - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, // , 0.0);. resu - 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x75, 0x5f, 0x69, // lt_1 = (mix (u_i - 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x2c, 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, // nnerCol, u_outer - 0x43, 0x6f, 0x6c, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, // Col, clamp (. - 0x20, 0x20, 0x20, 0x28, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ((((. - 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // min (max (tmpvar - 0x5f, 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, // _7.x, tmpvar_7.y - 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, // ), 0.0). + - 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, // . sqrt(d - 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2c, 0x20, 0x74, 0x6d, // ot (tmpvar_8, tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, // pvar_8)). ) - 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, // - u_extentRadiu - 0x73, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // s.z) + (u_params - 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x70, // .x * 0.5)) / u_p - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2c, 0x20, 0x30, // arams.x). , 0 - 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, // .0, 1.0)) * (tmp - 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // var_5 * tmpvar_2 - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ));. } else {. - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // if ((u_params - 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, // .w == 1.0)) {. - 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, // lowp vec4 co - 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, // lor_9;. hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // hp vec3 tmpvar_1 - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 0;. tmpvar_ - 0x31, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 10.z = 1.0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x78, 0x79, 0x20, 0x3d, // tmpvar_10.xy = - 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, // v_position;. - 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // lowp vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // var_11;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // pvar_11 = textur - 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x28, 0x28, 0x75, 0x5f, // e2D (s_tex, ((u_ - 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // paintMat * tmpva - 0x72, 0x5f, 0x31, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, // r_10).xy / u_ext - 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x78, 0x79, 0x29, 0x29, 0x3b, 0x0a, // entRadius.xy));. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, // color_9 = - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // tmpvar_11;. - 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, // if ((u_params.z - 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // == 1.0)) {. - 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // lowp vec4 tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_12;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_12.xyz = - 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // (tmpvar_11.xyz - 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x0a, // * tmpvar_11.w);. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // tmpvar_1 - 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, // 2.w = tmpvar_11. - 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // w;. color - 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, // _9 = tmpvar_12;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, // };. i - 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, // f ((u_params.z = - 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = 2.0)) {. - 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // color_9 = colo - 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // r_9.xxxx;. - 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, // };. color_9 - 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x75, 0x5f, // = (color_9 * u_ - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // innerCol);. - 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, // color_9 = (colo - 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, // r_9 * (tmpvar_5 - 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_2));. - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x63, // result_1 = c - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, // olor_9;. } el - 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, // se {. if (( - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, // u_params.w == 2. - 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // 0)) {. re - 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x31, 0x2e, // sult_1 = vec4(1. - 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // 0, 1.0, 1.0, 1.0 - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, // );. } else - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, // {. if ((u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x2e, 0x30, // _params.w == 3.0 - 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, // )) {. l - 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // owp vec4 color_1 - 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, // 3;. low - 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, // p vec4 tmpvar_14 + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, // vec4 u_scissorE + 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xtScale;.uniform + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, // vec4 u_extentRa + 0x64, 0x69, 0x75, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, // dius;.uniform ve + 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // c4 u_params;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, // form sampler2D s + 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // _tex;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x75, // ().{. vec4 resu + 0x6c, 0x74, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // lt_1;. float tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x73, // pvar_2;. vec2 s + 0x63, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // c_3;. vec3 tmpv + 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // ar_4;. tmpvar_4 + 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // .z = 1.0;. tmpv + 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, // ar_4.xy = v_posi + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x63, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, // tion;. sc_3 = ( + 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2d, // vec2(0.5, 0.5) - + 0x20, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x75, 0x5f, 0x73, // ((. abs((u_s + 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // cissorMat * tmpv + 0x61, 0x72, 0x5f, 0x34, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x75, // ar_4).xy). - u + 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, // _scissorExtScale + 0x2e, 0x78, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, // .xy) * u_scissor + 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x7a, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, // ExtScale.zw));. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6c, 0x61, // tmpvar_2 = (cla + 0x6d, 0x70, 0x20, 0x28, 0x73, 0x63, 0x5f, 0x33, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, // mp (sc_3.x, 0.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x73, // 1.0) * clamp (s + 0x63, 0x5f, 0x33, 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // c_3.y, 0.0, 1.0) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // );. float tmpva + 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, // r_5;. tmpvar_5 + 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x28, 0x0a, 0x20, // = (min (1.0, (. + 0x20, 0x20, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x28, // (1.0 - abs((( + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x20, 0x2a, 0x20, // v_texcoord0.x * + 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, // 2.0) - 1.0))). + 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, // * u_params.y)) + 0x2a, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, // * min (1.0, v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, // xcoord0.y));. i + 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, // f ((u_params.w = + 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, // = 0.0)) {. ve + 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, // c3 tmpvar_6;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, // tmpvar_6.z = 1. + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, // 0;. tmpvar_6. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = v_position; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // . vec2 tmpvar + 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // _7;. tmpvar_7 + 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, // = (abs((u_paint + 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x2e, // Mat * tmpvar_6). + 0x78, 0x79, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, // xy) - (u_extentR + 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x78, 0x79, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, // adius.xy - u_ext + 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x29, 0x3b, 0x0a, // entRadius.zz));. + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // vec2 tmpvar_ + 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, // 8;. tmpvar_8 + 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2c, // = max (tmpvar_7, + 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, // 0.0);. resul + 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x75, 0x5f, 0x69, 0x6e, // t_1 = (mix (u_in + 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x2c, 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, // nerCol, u_outerC + 0x6f, 0x6c, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // ol, clamp (. + 0x20, 0x20, 0x28, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, // ((((. m + 0x69, 0x6e, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // in (max (tmpvar_ + 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, 0x29, // 7.x, tmpvar_7.y) + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, // , 0.0). + + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, // . sqrt(do + 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2c, 0x20, 0x74, 0x6d, 0x70, // t (tmpvar_8, tmp + 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, // var_8)). ) + 0x2d, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, // - u_extentRadius + 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // .z) + (u_params. + 0x78, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x70, 0x61, // x * 0.5)) / u_pa + 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2c, 0x20, 0x30, 0x2e, // rams.x). , 0. + 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // 0, 1.0)) * (tmpv + 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // ar_5 * tmpvar_2) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, // );. } else {. + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // if ((u_params. + 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // w == 1.0)) {. + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x3b, // vec4 color_9; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // . vec3 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // ar_10;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, // var_10.z = 1.0;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, // tmpvar_10. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = v_position; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // . vec4 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // ar_11;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, // var_11 = texture + 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, // 2D (s_tex, ((u_p + 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // aintMat * tmpvar + 0x5f, 0x31, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, // _10).xy / u_exte + 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x78, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, // ntRadius.xy));. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x74, // color_9 = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // mpvar_11;. + 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, // if ((u_params.z + 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // == 1.0)) {. + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // vec4 tmpvar_1 + 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 2;. tmpva + 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // r_12.xyz = (tmpv + 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // ar_11.xyz * tmpv + 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ar_11.w);. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, // tmpvar_12.w = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, // tmpvar_11.w;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x74, // color_9 = t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // mpvar_12;. + 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, // };. if ((u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, // params.z == 2.0) + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // ) {. colo + 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x78, // r_9 = color_9.xx + 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // xx;. };. + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, // color_9 = (co + 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, // lor_9 * u_innerC + 0x6f, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ol);. color + 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, // _9 = (color_9 * + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_5 * tmpv + 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, // ar_2));. re + 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, // sult_1 = color_9 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, // ;. } else {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // if ((u_para + 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, // ms.w == 2.0)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, // result_1 + 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // = vec4(1.0, 1.0 + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // , 1.0, 1.0);. + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // } else {. + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // if ((u_param + 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, // s.w == 3.0)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, // vec4 co + 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // lor_13;. + 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, // vec4 tmpvar_14 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // ;. tmpv 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // ar_14 = texture2 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // D (s_tex, v_texc @@ -157,872 +151,1078 @@ static const uint8_t fs_nanovg_fill_glsl[2928] = 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // var_14;. 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // if ((u_params. 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // z == 1.0)) {. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, // lowp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, // c4 tmpvar_15;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // tmpvar - 0x5f, 0x31, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // _15.xyz = (tmpva - 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_14.xyz * tmpva - 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // r_14.w);. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x77, // tmpvar_15.w - 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x3b, 0x0a, // = tmpvar_14.w;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // colo - 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, // r_13 = tmpvar_15 - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, // ;. };. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, // if ((u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, // params.z == 2.0) - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ) {. - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color_13 = color - 0x5f, 0x31, 0x33, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _13.xxxx;. - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // };. - 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, // color_13 = (col - 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // or_13 * tmpvar_2 - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, // );. res - 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, // ult_1 = (color_1 - 0x33, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x29, 0x3b, // 3 * u_innerCol); - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // . };. - 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, // };. };. }; - 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, // . gl_FragColor - 0x3d, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // = result_1;.}... + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, // vec4 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_15;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x78, // tmpvar_15.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, // yz = (tmpvar_14. + 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, // xyz * tmpvar_14. + 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // w);. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, // tmpvar_15.w = tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // pvar_14.w;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, // color_13 + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, // = tmpvar_15;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // };. + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // if ((u_param + 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, // s.z == 2.0)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color + 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x78, // _13 = color_13.x + 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, // xxx;. } + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // ;. colo + 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, // r_13 = (color_13 + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_2);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, // result_1 + 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x75, // = (color_13 * u + 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _innerCol);. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // };. };. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // };. };. gl + 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, // _FragColor = res + 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ult_1;.}... +}; +static const uint8_t fs_nanovg_fill_essl[2964] = +{ + 0x46, 0x53, 0x48, 0x0b, 0xcf, 0xda, 0x1b, 0x94, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x75, // FSH............u + 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x03, 0x01, 0x00, 0x00, 0x01, // _scissorMat..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, // ......u_paintMat + 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x69, 0x6e, 0x6e, // ...........u_inn + 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // erCol........... + 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, // u_outerCol...... + 0x00, 0x00, 0x00, 0x00, 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, // .....u_scissorEx + 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // tScale.......... + 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x02, // .u_extentRadius. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ..........u_para + 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x5f, 0x74, // ms...........s_t + 0x65, 0x78, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x0a, 0x00, 0x00, // ex.............. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // varying highp ve + 0x63, 0x32, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, // c2 v_position;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, // 2 v_texcoord0;.u + 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, // niform highp mat + 0x33, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x3b, 0x0a, // 3 u_scissorMat;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, // uniform highp ma + 0x74, 0x33, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x75, // t3 u_paintMat;.u + 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // niform highp vec + 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, // 4 u_innerCol;.un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // iform highp vec4 + 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // u_outerCol;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // form highp vec4 + 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, // u_scissorExtScal + 0x65, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // e;.uniform highp + 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, // vec4 u_extentRa + 0x64, 0x69, 0x75, 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, // dius;.uniform hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // ghp vec4 u_param + 0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s;.uniform sampl + 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, // er2D s_tex;.void + 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, // main ().{. low + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x3b, // p vec4 result_1; + 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // . highp float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // mpvar_2;. highp + 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x73, 0x63, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, // vec2 sc_3;. hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec3 tmpvar_ + 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x20, // 4;. tmpvar_4.z + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ + 0x34, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 4.xy = v_positio + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x63, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x65, 0x63, // n;. sc_3 = (vec + 0x32, 0x28, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x28, // 2(0.5, 0.5) - (( + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, // . abs((u_scis + 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // sorMat * tmpvar_ + 0x34, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x73, 0x63, // 4).xy). - u_sc + 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x78, 0x79, // issorExtScale.xy + 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, // ) * u_scissorExt + 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x7a, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // Scale.zw));. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, // pvar_2 = (clamp + 0x28, 0x73, 0x63, 0x5f, 0x33, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, // (sc_3.x, 0.0, 1. + 0x30, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x73, 0x63, 0x5f, 0x33, // 0) * clamp (sc_3 + 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, // .y, 0.0, 1.0));. + 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // highp float tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_5;. tmpvar + 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, // _5 = (min (1.0, + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x61, 0x62, 0x73, // (. (1.0 - abs + 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, // (((v_texcoord0.x + 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, // * 2.0) - 1.0))) + 0x0a, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, // . * u_params.y + 0x29, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x76, // )) * min (1.0, v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, // _texcoord0.y));. + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // if ((u_params. + 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // w == 0.0)) {. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp vec3 tmpv + 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ar_6;. tmpvar + 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _6.z = 1.0;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, // tmpvar_6.xy = v_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x69, // position;. hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec2 tmpvar_ + 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, // 7;. tmpvar_7 + 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, // = (abs((u_paintM + 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x2e, 0x78, // at * tmpvar_6).x + 0x79, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, // y) - (u_extentRa + 0x64, 0x69, 0x75, 0x73, 0x2e, 0x78, 0x79, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, // dius.xy - u_exte + 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, // ntRadius.zz));. + 0x20, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x6d, // highp vec2 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // pvar_8;. tmpv + 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // ar_8 = max (tmpv + 0x61, 0x72, 0x5f, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // ar_7, 0.0);. + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, // result_1 = (mix + 0x28, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x2c, 0x20, 0x75, 0x5f, 0x6f, // (u_innerCol, u_o + 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, // uterCol, clamp ( + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // . ((((. + 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, // min (max (tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_7.x, tmpvar + 0x5f, 0x37, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, // _7.y), 0.0). + 0x20, 0x20, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, // + . sq + 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, // rt(dot (tmpvar_8 + 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, // , tmpvar_8)). + 0x20, 0x20, 0x20, 0x29, 0x20, 0x2d, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, // ) - u_extentR + 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x75, 0x5f, 0x70, 0x61, // adius.z) + (u_pa + 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2f, // rams.x * 0.5)) / + 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x20, // u_params.x). + 0x20, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2a, 0x20, // , 0.0, 1.0)) * + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_5 * tmpv + 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, // ar_2));. } else + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, // {. if ((u_pa + 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, // rams.w == 1.0)) + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, // {. lowp vec + 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 4 color_9;. + 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp vec3 tmpv + 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // ar_10;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, // var_10.z = 1.0;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, // tmpvar_10. + 0x78, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // xy = v_position; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // . lowp vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_11;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, // tmpvar_11 = te + 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, // xture2D (s_tex, + 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, // ((u_paintMat * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x20, 0x2f, 0x20, 0x75, // mpvar_10).xy / u + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x78, 0x79, // _extentRadius.xy + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // ));. color_ + 0x39, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, // 9 = tmpvar_11;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // if ((u_para + 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, // ms.z == 1.0)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, // lowp vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 4 tmpvar_12;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x78, // tmpvar_12.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, // yz = (tmpvar_11. + 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, // xyz * tmpvar_11. + 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // w);. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ar_12.w = tmpvar + 0x5f, 0x31, 0x31, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, // _11.w;. c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // olor_9 = tmpvar_ + 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, // 12;. };. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // if ((u_params + 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, // .z == 2.0)) {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, // color_9 = + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, // color_9.xxxx;. + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, // };. col + 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, // or_9 = (color_9 + 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x29, 0x3b, 0x0a, 0x20, // * u_innerCol);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, // color_9 = ( + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // color_9 * (tmpva + 0x72, 0x5f, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, // r_5 * tmpvar_2)) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, // ;. result_1 + 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // = color_9;. + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, // } else {. i + 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, // f ((u_params.w = + 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = 2.0)) {. + 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, // result_1 = vec + 0x34, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, // 4(1.0, 1.0, 1.0, + 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, // 1.0);. } e + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // lse {. if + 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, // ((u_params.w == + 0x20, 0x33, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 3.0)) {. + 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, // lowp vec4 col + 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // or_13;. + 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // lowp vec4 tmpva + 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // r_14;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // tmpvar_14 = text + 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x76, 0x5f, // ure2D (s_tex, v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // texcoord0);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, // color_13 = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_14;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, // if ((u_par + 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, // ams.z == 1.0)) { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, // . low + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, // p vec4 tmpvar_15 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // ;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, // pvar_15.xyz = (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x74, // mpvar_14.xyz * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // mpvar_14.w);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // tmpvar_ + 0x31, 0x35, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, // 15.w = tmpvar_14 + 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .w;. + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // color_13 = tmpva + 0x72, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // r_15;. + 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, // };. if + 0x28, 0x28, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, // ((u_params.z == + 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 2.0)) {. + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x63, // color_13 = c + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, // olor_13.xxxx;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // };. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, // color_13 = + 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // (color_13 * tmpv + 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ar_2);. + 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, // result_1 = (col + 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, // or_13 * u_innerC + 0x6f, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // ol);. };. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, // };. };. + 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // };. gl_FragCo + 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x3b, 0x0a, // lor = result_1;. + 0x7d, 0x0a, 0x0a, 0x00, // }... }; -static const uint8_t fs_nanovg_fill_spv[5804] = +static const uint8_t fs_nanovg_fill_spv[5704] = { - 0x46, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x07, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, // FSH........u_par - 0x61, 0x6d, 0x73, 0x12, 0x01, 0xa0, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, // ams.......u_pain - 0x74, 0x4d, 0x61, 0x74, 0x13, 0x01, 0x30, 0x00, 0x03, 0x00, 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, // tMat..0....u_ext - 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x01, 0x90, 0x00, 0x01, 0x00, 0x0a, // entRadius....... - 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x01, 0x60, 0x00, 0x01, 0x00, // u_innerCol..`... - 0x0a, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x01, 0x70, 0x00, 0x01, // .u_outerCol..p.. - 0x00, 0x0c, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x13, 0x01, // ..u_scissorMat.. - 0x00, 0x00, 0x03, 0x00, 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, // .....u_scissorEx - 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x01, 0x80, 0x00, 0x01, 0x00, 0x18, 0x16, 0x00, 0x00, // tScale.......... - 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xa8, 0x02, 0x00, 0x00, // ..#............. + 0x46, 0x53, 0x48, 0x0b, 0xcf, 0xda, 0x1b, 0x94, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x75, // FSH............u + 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x13, 0x00, 0x00, 0x00, 0x03, // _scissorMat..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, // ......u_scissorE + 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // xtScale......... + 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0xa0, 0x00, 0x01, 0x00, // ..u_params...... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x13, // .....u_paintMat. + 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, // .0........u_exte + 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x00, 0x90, 0x00, 0x01, 0x00, 0x00, 0x00, // ntRadius........ + 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x00, 0x60, // ...u_innerCol..` + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, // ........u_outerC + 0x6f, 0x6c, 0x12, 0x00, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x5f, 0x74, // ol..p........s_t + 0x65, 0x78, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1a, 0x00, 0x84, 0x15, 0x00, 0x00, // ex0............. + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xb7, 0x02, 0x00, 0x00, // ..#............. 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, // ................ 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, // ....GLSL.std.450 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main - 0x00, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, // ....c...f...q... - 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, // ................ - 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, // main............ - 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, 0x00, // BgfxSampler2D... - 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, // ............m_sa - 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, // mpler........... - 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, // ....m_texture... - 0x05, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, // ....3...s_tex... - 0x05, 0x00, 0x06, 0x00, 0x35, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, // ....5...s_texSam - 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, // pler........8... - 0x73, 0x5f, 0x74, 0x65, 0x78, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x00, // s_texTexture.... - 0x05, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, // ....}...$Global. - 0x06, 0x00, 0x07, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x73, 0x63, // ....}.......u_sc - 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, // issorMat........ - 0x7d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, // }.......u_paintM - 0x61, 0x74, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // at......}....... - 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, // u_innerCol...... - 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, // }.......u_outerC - 0x6f, 0x6c, 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ol......}....... - 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, // u_scissorExtScal - 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, // e.......}....... - 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x00, 0x00, // u_extentRadius.. - 0x06, 0x00, 0x06, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, // ....}.......u_pa - 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x00, 0x00, // rams............ - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x63, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x70, 0x6f, // ........c...v_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x66, 0x01, 0x00, 0x00, // sition......f... - 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, // v_texcoord0..... - 0x71, 0x01, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, // q...bgfx_FragDat - 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, // a0..G...8..."... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, // ....G...8...!... - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...}....... - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...}....... - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, // #.......H...}... - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, // ............H... - 0x7d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // }...........H... - 0x7d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // }.......#...0... - 0x48, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // H...}........... - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....H...}....... - 0x23, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, // #...`...H...}... - 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ....#...p...H... - 0x7d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // }.......#....... - 0x48, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H...}.......#... - 0x90, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ....H...}....... - 0x23, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x7d, 0x00, 0x00, 0x00, // #.......G...}... - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, // ....G......."... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x63, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...c....... - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...f....... - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x71, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, // ....G...q....... - 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, // ............!... - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, // ................ - 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, // ........ ....... - 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ................ - 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ - 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x20, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ...2........... - 0x3b, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ;...2...3....... - 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ...4........... - 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ;...4...5....... - 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ...7........... - 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ;...7...8....... - 0x15, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....;... ....... - 0x2b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // +...;...<....... - 0x2b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +...;...@....... - 0x1b, 0x00, 0x03, 0x00, 0x44, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, // ....D........... - 0x62, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // b... .......+... - 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // b...c.......+... - 0x62, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // b...f.......+... - 0x07, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, // ....j.......,... - 0x0b, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, // ....m...j...j... - 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // +.......w......? - 0x17, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....x........... - 0x18, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....|...x....... - 0x1e, 0x00, 0x09, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, // ....}...|...|... + 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, // ....d...h...k... + 0x78, 0x01, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // x............... + 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, // ....main........ + 0x36, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // 6...s_texSampler + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x39, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, // ........9...s_te + 0x78, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, // xTexture........ + 0x7e, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, // ~...UniformBlock + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........~....... + 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x00, 0x00, 0x00, 0x00, // u_scissorMat.... + 0x06, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, // ....~.......u_pa + 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x00, // intMat......~... + 0x02, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x00, 0x00, // ....u_innerCol.. + 0x06, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6f, 0x75, // ....~.......u_ou + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x7e, 0x00, 0x00, 0x00, // terCol......~... + 0x04, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, // ....u_scissorExt + 0x53, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x7e, 0x00, 0x00, 0x00, // Scale.......~... + 0x05, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, // ....u_extentRadi + 0x75, 0x73, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // us......~....... + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, // u_params........ + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x64, 0x01, 0x00, 0x00, // ............d... + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, // gl_FragCoord.... + 0x05, 0x00, 0x05, 0x00, 0x68, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ....h...v_positi + 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, // on......k...v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x78, 0x01, 0x00, 0x00, // xcoord0.....x... + 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, // bgfx_FragData0.. + 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...6..."....... + 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, // G...6...!....... + 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...9..."....... + 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // G...9...!....... + 0x48, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // H...~........... + 0x48, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H...~.......#... + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...~....... + 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, // ........H...~... + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x00, 0x00, // ........H...~... + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ....#...0...H... + 0x7e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // ~............... + 0x48, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H...~.......#... + 0x60, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // `...H...~....... + 0x23, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x00, 0x00, // #...p...H...~... + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, // ....#.......H... + 0x7e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, // ~.......#....... + 0x48, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // H...~.......#... + 0xa0, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....G...~....... + 0x47, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G......."....... + 0x47, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G.......!....... + 0x47, 0x00, 0x04, 0x00, 0x64, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // G...d........... + 0x47, 0x00, 0x04, 0x00, 0x68, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...h........... + 0x47, 0x00, 0x04, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // G...k........... + 0x47, 0x00, 0x04, 0x00, 0x78, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...x........... + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // ........!....... + 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // ................ + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, // .... ........... + 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ + 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, // ................ + 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // ............ ... + 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // 5...........;... + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // 5...6....... ... + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // 8...........;... + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, // 8...9........... + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // <... .......+... + 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // <...=.......+... + 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, // <...A........... + 0x45, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, // E...........c... + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, // .......+...c... + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, // d.......+...c... + 0x67, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // g.......+....... + 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, // k.......,....... + 0x6e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // n...k...k...+... + 0x07, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x17, 0x00, 0x04, 0x00, // ....x......?.... + 0x79, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, // y............... + 0x7d, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, // }...y........... + 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, // ~...}...}....... 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, // ................ - 0x0d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...~....... - 0x7d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // }...;...~....... - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ........... - 0x7c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, // |...+...;....... - 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ........... - 0x0d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, // ....+........... - 0x00, 0x00, 0x00, 0x3f, 0x2c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, // ...?,........... - 0x8c, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // ........+....... - 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, // .......@+...;... - 0xa4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xa5, 0x00, 0x00, 0x00, // ........ ....... - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, // ........+...b... - 0xbb, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, // ................ - 0x2b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, // +...;........... - 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // +...b........... - 0x2b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // +...;........... - 0x2b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // +...;........... - 0x2c, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // ,.......4...w... - 0x77, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // w...w...w...+... - 0x07, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x20, 0x00, 0x04, 0x00, // ....8.....@@ ... - 0x62, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // b...........;... - 0x62, 0x01, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // b...c.......;... - 0x62, 0x01, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, // b...f....... ... - 0x70, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, // p...........;... - 0x70, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, // p...q........... - 0x0d, 0x00, 0x00, 0x00, 0xa7, 0x02, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, // ........6....... - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // ................ - 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, // ....=.......6... - 0x35, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // 5...=.......9... - 0x38, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, // 8...P.......:... - 0x36, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, // 6...9...>...3... - 0x3a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, // :...=.......d... - 0x63, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, // c...=.......g... - 0x66, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, // f...Q.......7... - 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // d.......Q....... - 0x38, 0x02, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, // 8...d.......P... - 0x78, 0x00, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, // x...9...7...8... - 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3a, 0x02, 0x00, 0x00, // w...A.......:... - 0x7f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, // ....@...=...|... - 0x3b, 0x02, 0x00, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, // ;...:.......x... - 0x3c, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, // <...9...;...O... - 0x0b, 0x00, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, // ....=...<...<... - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, // ................ - 0x3e, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3d, 0x02, 0x00, 0x00, // >...........=... - 0x41, 0x00, 0x05, 0x00, 0x87, 0x00, 0x00, 0x00, 0x3f, 0x02, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // A.......?....... - 0x86, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, // ....=.......@... - 0x3f, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x41, 0x02, 0x00, 0x00, // ?...O.......A... - 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // @...@........... - 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x42, 0x02, 0x00, 0x00, 0x3e, 0x02, 0x00, 0x00, // ........B...>... - 0x41, 0x02, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x87, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, // A...A.......D... - 0x7f, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, // ........=....... - 0x45, 0x02, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, // E...D...O....... - 0x46, 0x02, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // F...E...E....... - 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, // ............G... - 0x42, 0x02, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, // B...F........... - 0x48, 0x02, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // H.......G...Q... - 0x07, 0x00, 0x00, 0x00, 0x4a, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....J...H....... - 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4b, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........K....... - 0x2b, 0x00, 0x00, 0x00, 0x4a, 0x02, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // +...J...j...w... - 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4d, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, // Q.......M...H... - 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x00, // ............N... - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x4d, 0x02, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, // ....+...M...j... - 0x77, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, // w...........O... - 0x4b, 0x02, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // K...N...Q....... - 0x52, 0x02, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, // R...g........... - 0x07, 0x00, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, // ....S...R....... - 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, // ........T...S... - 0x77, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, // w...........U... - 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, // ........T....... - 0x07, 0x00, 0x00, 0x00, 0x56, 0x02, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, // ....V...w...U... - 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x57, 0x02, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // A.......W....... - 0xa4, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // ....f...=....... - 0x58, 0x02, 0x00, 0x00, 0x57, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // X...W........... - 0x59, 0x02, 0x00, 0x00, 0x56, 0x02, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, // Y...V...X....... - 0x07, 0x00, 0x00, 0x00, 0x5a, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // ....Z.......%... - 0x77, 0x00, 0x00, 0x00, 0x59, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // w...Y...Q....... - 0x5c, 0x02, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, // ....g........... - 0x07, 0x00, 0x00, 0x00, 0x5d, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // ....].......%... - 0x77, 0x00, 0x00, 0x00, 0x5c, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // w............... - 0x5e, 0x02, 0x00, 0x00, 0x5a, 0x02, 0x00, 0x00, 0x5d, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // ^...Z...]...A... - 0xa5, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, // ................ - 0xbb, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x01, 0x00, 0x00, // ....=........... - 0xa1, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, // ................ - 0xa2, 0x01, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xa4, 0x01, 0x00, 0x00, // ....j........... - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa3, 0x01, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, // ................ - 0xa6, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa5, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... - 0x07, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........d....... - 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, // Q...........d... - 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x78, 0x00, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, // ....P...x....... - 0xa8, 0x01, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ........w...A... - 0x80, 0x00, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ............<... - 0x3d, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, // =...|........... - 0x90, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, // ....x........... - 0xac, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, // ....O........... - 0xad, 0x01, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x41, 0x00, 0x05, 0x00, 0x87, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // A............... - 0xcc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, // ....=........... - 0xb0, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, // ....O........... - 0xb1, 0x01, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // A............... - 0xcc, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // ........=....... - 0xb4, 0x01, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, // ........P....... - 0x65, 0x02, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, // e............... - 0x0b, 0x00, 0x00, 0x00, 0x66, 0x02, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, 0x65, 0x02, 0x00, 0x00, // ....f.......e... - 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........h....... - 0x04, 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, // ................ - 0x6a, 0x02, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x66, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // j...h...f...Q... - 0x07, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x6a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....l...j....... - 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6e, 0x02, 0x00, 0x00, 0x6a, 0x02, 0x00, 0x00, // Q.......n...j... - 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6f, 0x02, 0x00, 0x00, // ............o... - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x6e, 0x02, 0x00, 0x00, // ....(...l...n... - 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........p....... - 0x25, 0x00, 0x00, 0x00, 0x6f, 0x02, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, // %...o...j....... - 0x0b, 0x00, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, // ....r.......(... - 0x6a, 0x02, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, // j...m........... - 0x73, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, // s.......B...r... - 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x74, 0x02, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, // ........t...p... - 0x73, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, // s...........v... - 0x74, 0x02, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // t.......A....... - 0xb6, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, // ............c... - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, // =............... - 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, // ................ - 0x8c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, // ................ - 0x76, 0x02, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // v.......A....... - 0xba, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, // ............c... - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbb, 0x01, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, // =............... - 0x88, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, // ................ - 0xbb, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, // ....+.......j... - 0x77, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, // w...P........... - 0xbd, 0x01, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, // ................ - 0x41, 0x00, 0x05, 0x00, 0x87, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // A............... - 0xe1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, // ....=........... - 0xc0, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x87, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, // ....A........... - 0x7f, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, // ........=....... - 0xc3, 0x01, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, // ................ - 0x7b, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, // {............... - 0xc3, 0x01, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ................ - 0xc7, 0x01, 0x00, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, // ....^...O....... - 0x0d, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0x7b, 0x02, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, // ........{....... - 0xf9, 0x00, 0x02, 0x00, 0xa4, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa6, 0x01, 0x00, 0x00, // ................ - 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // A............... - 0xa4, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // ........=....... - 0xcc, 0x01, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, // ................ - 0xcd, 0x01, 0x00, 0x00, 0xcc, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, // ........w....... - 0xce, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xcd, 0x01, 0x00, 0x00, // ................ - 0xcf, 0x01, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xcf, 0x01, 0x00, 0x00, // ................ - 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, // Q...........d... - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, // ....Q........... - 0x64, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x78, 0x00, 0x00, 0x00, // d.......P...x... - 0xd4, 0x01, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // ............w... - 0x41, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, // A............... - 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, // <...=...|....... - 0xd5, 0x01, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, // ........x....... - 0xd4, 0x01, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, // ........O....... - 0xd8, 0x01, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x87, 0x00, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, // ....A........... - 0x7f, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, // ........=....... - 0xda, 0x01, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, // ........O....... - 0xdb, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, // ................ - 0xd8, 0x01, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // ........=....... - 0xdd, 0x01, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // ....3...Q....... - 0x8e, 0x02, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... - 0x08, 0x00, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x56, 0x00, 0x05, 0x00, 0x44, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, // V...D........... - 0x8e, 0x02, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, // ....W........... - 0x81, 0x02, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // ........A....... - 0xe0, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, // =............... - 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, // ................ - 0x77, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // w............... - 0xfa, 0x00, 0x04, 0x00, 0xe2, 0x01, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x78, 0x00, 0x00, 0x00, // ........O...x... - 0xe6, 0x01, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ........Q....... - 0xe8, 0x01, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, // ................ - 0x78, 0x00, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, // x............... - 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, // Q............... - 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, // ....Q........... - 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ........Q....... - 0xed, 0x01, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... - 0x07, 0x00, 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ - 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, // P............... - 0xed, 0x01, 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ - 0xe3, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe3, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, // ................ - 0x0d, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0xcf, 0x01, 0x00, 0x00, // ................ - 0xef, 0x01, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // ........A....... - 0xf0, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, // =............... - 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf2, 0x01, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, // ................ - 0x9f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0xfa, 0x00, 0x04, 0x00, 0xf2, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, // ........O....... - 0xf6, 0x01, 0x00, 0x00, 0xa1, 0x02, 0x00, 0x00, 0xa1, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ - 0xf3, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xf3, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, // ................ - 0x0d, 0x00, 0x00, 0x00, 0xa2, 0x02, 0x00, 0x00, 0xa1, 0x02, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, // ................ - 0xf6, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x87, 0x00, 0x00, 0x00, // ........A....... - 0xf7, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... - 0x0d, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xf7, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, // ................ - 0x0d, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0xa2, 0x02, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, // ................ - 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0x5e, 0x02, 0x00, 0x00, // ............^... - 0x4f, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, // O............... - 0xfa, 0x01, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xce, 0x01, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // ........A....... - 0x01, 0x02, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, // =............... - 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, // ................ - 0x9f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0xfa, 0x00, 0x04, 0x00, 0x03, 0x02, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0x06, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // ........A....... - 0x07, 0x02, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, // =............... - 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, // ................ - 0x38, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8............... - 0xfa, 0x00, 0x04, 0x00, 0x09, 0x02, 0x00, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, // ........=....... - 0x0c, 0x02, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // ....3...Q....... - 0x92, 0x02, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... - 0x08, 0x00, 0x00, 0x00, 0x93, 0x02, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x56, 0x00, 0x05, 0x00, 0x44, 0x00, 0x00, 0x00, 0x89, 0x02, 0x00, 0x00, 0x93, 0x02, 0x00, 0x00, // V...D........... - 0x92, 0x02, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, // ....W........... - 0x89, 0x02, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // ....g...A....... - 0x0f, 0x02, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x0f, 0x02, 0x00, 0x00, // =............... - 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, // ................ - 0x77, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // w............... - 0xfa, 0x00, 0x04, 0x00, 0x11, 0x02, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x12, 0x02, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0x13, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x78, 0x00, 0x00, 0x00, // ........O...x... - 0x15, 0x02, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ........Q....... - 0x17, 0x02, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, // ................ - 0x78, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x17, 0x02, 0x00, 0x00, // x............... - 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, // Q............... - 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, // ....Q........... - 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ........Q....... - 0x1c, 0x02, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... - 0x07, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ - 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, // P............... - 0x1c, 0x02, 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ - 0x12, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x12, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, // ................ - 0x0d, 0x00, 0x00, 0x00, 0x9f, 0x02, 0x00, 0x00, 0x8b, 0x02, 0x00, 0x00, 0x0b, 0x02, 0x00, 0x00, // ................ - 0x1e, 0x02, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa5, 0x00, 0x00, 0x00, // ........A....... - 0x1f, 0x02, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ................ - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x1f, 0x02, 0x00, 0x00, // =....... ....... - 0xb4, 0x00, 0x05, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, // ........!... ... - 0x9f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........"....... - 0xfa, 0x00, 0x04, 0x00, 0x21, 0x02, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, // ....!...#..."... - 0xf8, 0x00, 0x02, 0x00, 0x23, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, // ....#...O....... - 0x25, 0x02, 0x00, 0x00, 0x9f, 0x02, 0x00, 0x00, 0x9f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // %............... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ - 0x22, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x22, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, // "......."....... - 0x0d, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x9f, 0x02, 0x00, 0x00, 0x12, 0x02, 0x00, 0x00, // ................ - 0x25, 0x02, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, // %...#........... - 0x28, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // (.......O...A... - 0x87, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, // ....*........... - 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x2b, 0x02, 0x00, 0x00, 0x2a, 0x02, 0x00, 0x00, // =.......+...*... - 0x85, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, // ........,...(... - 0x2b, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x0a, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // +............... - 0x0a, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa6, 0x02, 0x00, 0x00, // ................ - 0xa7, 0x02, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, // ........,..."... - 0xf9, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x00, // ................ - 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa5, 0x02, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, // ............4... - 0x05, 0x02, 0x00, 0x00, 0xa6, 0x02, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ - 0xce, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xce, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, // ................ - 0x0d, 0x00, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, // ................ - 0xa5, 0x02, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa4, 0x01, 0x00, 0x00, // ................ - 0xf8, 0x00, 0x02, 0x00, 0xa4, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, // ................ - 0xa3, 0x02, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, // ................ - 0xce, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x71, 0x01, 0x00, 0x00, 0xa3, 0x02, 0x00, 0x00, // ....>...q....... - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb0, 0x00, // ....8....... + 0x20, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, // ...........~... + 0x3b, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ;............... + 0x20, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, // ...........}... + 0x2b, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // +...<........... + 0x20, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, // ............... + 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, // +..............? + 0x2c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, // ,............... + 0x8d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, // ....+........... + 0x00, 0x00, 0x00, 0x40, 0x2b, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, // ...@+...<....... + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ........... + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, // ....+...c....... + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // ............+... + 0x3c, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // <...........+... + 0x63, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // c...........+... + 0x3c, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, // <...........+... + 0x3c, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, // <...........,... + 0x0d, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // ....5...x...x... + 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // x...x...+....... + 0x39, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x20, 0x00, 0x04, 0x00, 0x63, 0x01, 0x00, 0x00, // 9.....@@ ...c... + 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x63, 0x01, 0x00, 0x00, // ........;...c... + 0x64, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x67, 0x01, 0x00, 0x00, // d....... ...g... + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x67, 0x01, 0x00, 0x00, // ........;...g... + 0x68, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x67, 0x01, 0x00, 0x00, // h.......;...g... + 0x6b, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x77, 0x01, 0x00, 0x00, // k....... ...w... + 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x77, 0x01, 0x00, 0x00, // ........;...w... + 0x78, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, // x............... + 0xb6, 0x02, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, // =.......7...6... + 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // =.......:...9... + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, // =.......i...h... + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, // =.......l...k... + 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x41, 0x02, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, // Q.......A...i... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x42, 0x02, 0x00, 0x00, // ....Q.......B... + 0x69, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x79, 0x00, 0x00, 0x00, // i.......P...y... + 0x43, 0x02, 0x00, 0x00, 0x41, 0x02, 0x00, 0x00, 0x42, 0x02, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // C...A...B...x... + 0x41, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // A.......D....... + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, // A...=...}...E... + 0x44, 0x02, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, // D.......y...F... + 0x43, 0x02, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, // C...E...O....... + 0x47, 0x02, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G...F...F....... + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, // ............H... + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ........G...A... + 0x88, 0x00, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, // ....I........... + 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4a, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, // =.......J...I... + 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x4b, 0x02, 0x00, 0x00, 0x4a, 0x02, 0x00, 0x00, // O.......K...J... + 0x4a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, // J............... + 0x0b, 0x00, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x4b, 0x02, 0x00, 0x00, // ....L...H...K... + 0x41, 0x00, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // A.......N....... + 0x87, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, // ....=.......O... + 0x4e, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, // N...O.......P... + 0x4f, 0x02, 0x00, 0x00, 0x4f, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // O...O........... + 0x85, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, // ........Q...L... + 0x50, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, // P...........R... + 0x8e, 0x00, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ....Q...Q....... + 0x54, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, // T...R........... + 0x07, 0x00, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, // ....U.......+... + 0x54, 0x02, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // T...k...x...Q... + 0x07, 0x00, 0x00, 0x00, 0x57, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....W...R....... + 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........X....... + 0x2b, 0x00, 0x00, 0x00, 0x57, 0x02, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // +...W...k...x... + 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x59, 0x02, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, // ........Y...U... + 0x58, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5d, 0x02, 0x00, 0x00, // X...Q.......]... + 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // l............... + 0x5e, 0x02, 0x00, 0x00, 0x5d, 0x02, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, // ^...]........... + 0x07, 0x00, 0x00, 0x00, 0x5f, 0x02, 0x00, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // ...._...^...x... + 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........`....... + 0x04, 0x00, 0x00, 0x00, 0x5f, 0x02, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ...._........... + 0x61, 0x02, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // a...x...`...A... + 0xa6, 0x00, 0x00, 0x00, 0x62, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, // ....b........... + 0x67, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, // g...=.......c... + 0x62, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, // b...........d... + 0x61, 0x02, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // a...c........... + 0x65, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // e.......%...x... + 0x64, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x67, 0x02, 0x00, 0x00, // d...Q.......g... + 0x6c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, // l............... + 0x68, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // h.......%...x... + 0x67, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x69, 0x02, 0x00, 0x00, // g...........i... + 0x65, 0x02, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x00, 0x00, // e...h...A....... + 0xa9, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, // =............... + 0xb4, 0x00, 0x05, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, // ................ + 0x6b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // k.......4....... + 0xfa, 0x00, 0x04, 0x00, 0xab, 0x01, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, // ................ + 0xf8, 0x00, 0x02, 0x00, 0xac, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ........Q....... + 0xae, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ....i.......Q... + 0x07, 0x00, 0x00, 0x00, 0xaf, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........i....... + 0x50, 0x00, 0x06, 0x00, 0x79, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, // P...y........... + 0xaf, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, // ....x...A....... + 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ........=...=... + 0x7d, 0x00, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // }............... + 0x79, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, // y............... + 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, // O............... + 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ............A... + 0x88, 0x00, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, // =............... + 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, // O............... + 0xb7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // ............A... + 0xa6, 0x00, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, // ................ + 0xd5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, // ....=........... + 0xb9, 0x01, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x02, 0x00, 0x00, // ....P.......q... + 0xba, 0x01, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, // ................ + 0x72, 0x02, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x71, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, // r.......q....... + 0x0b, 0x00, 0x00, 0x00, 0x74, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....t........... + 0xb4, 0x01, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, // ............v... + 0x74, 0x02, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // t...r...Q....... + 0x78, 0x02, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // x...v.......Q... + 0x07, 0x00, 0x00, 0x00, 0x7a, 0x02, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....z...v....... + 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7b, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........{....... + 0x28, 0x00, 0x00, 0x00, 0x78, 0x02, 0x00, 0x00, 0x7a, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, // (...x...z....... + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, // ....|.......%... + 0x7b, 0x02, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, // {...k........... + 0x7e, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, // ~.......(...v... + 0x6e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, // n............... + 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x7e, 0x02, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, // ....B...~....... + 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, // ........|....... + 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, // ................ + 0xba, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, // ....A........... + 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ........d...=... + 0x07, 0x00, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, // ................ + 0x07, 0x00, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, // ................ + 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, // ................ + 0xbe, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, // ....A........... + 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ........d...=... + 0x07, 0x00, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, // ................ + 0x07, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, // ................ + 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x2b, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // +.......k...x... + 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, // P............... + 0xc3, 0x01, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ............A... + 0x88, 0x00, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, // =............... + 0x41, 0x00, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // A............... + 0xe3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, // ....=........... + 0xc8, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, // ................ + 0xc5, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcd, 0x01, 0x00, 0x00, // ................ + 0x69, 0x02, 0x00, 0x00, 0x59, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, // i...Y........... + 0xcf, 0x01, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, 0xcd, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ + 0x34, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // 4...........A... + 0xa6, 0x00, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, // ................ + 0xbc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, // ....=........... + 0xd2, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, // ................ + 0xd3, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x33, 0x02, 0x00, 0x00, // ....x.......3... + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd4, 0x01, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, // ................ + 0x06, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd5, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... + 0x07, 0x00, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........i....... + 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, // Q...........i... + 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x79, 0x00, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, // ....P...y....... + 0xd7, 0x01, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ........x...A... + 0x81, 0x00, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, // ............=... + 0x3d, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, // =...}........... + 0x90, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, // ....y........... + 0xdb, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, // ....O........... + 0xdc, 0x01, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x41, 0x00, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, 0xde, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // A............... + 0xcd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xdf, 0x01, 0x00, 0x00, // ....=........... + 0xde, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, // ....O........... + 0xdf, 0x01, 0x00, 0x00, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x88, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0xdd, 0x01, 0x00, 0x00, // ................ + 0xe0, 0x01, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, // ....V...E....... + 0x3a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, // :...7...W....... + 0x91, 0x02, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // ............A... + 0xa6, 0x00, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, // ................ + 0xd5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, // ....=........... + 0xe5, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xe7, 0x01, 0x00, 0x00, // ................ + 0xe6, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xf4, 0x01, 0x00, 0x00, // ....x........... + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xe7, 0x01, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, // ................ + 0xf4, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, // ............O... + 0x79, 0x00, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, 0x91, 0x02, 0x00, 0x00, 0x91, 0x02, 0x00, 0x00, // y............... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... + 0x07, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x91, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x8e, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, // ....y........... + 0xec, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, // ....Q........... + 0x91, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ........Q....... + 0xf0, 0x01, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... + 0x07, 0x00, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf2, 0x01, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, // Q............... + 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, // ....P........... + 0xf0, 0x01, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, 0xf2, 0x01, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, // ................ + 0xf9, 0x00, 0x02, 0x00, 0xf4, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xf4, 0x01, 0x00, 0x00, // ................ + 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x91, 0x02, 0x00, 0x00, // ................ + 0xd5, 0x01, 0x00, 0x00, 0xf3, 0x01, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // ............A... + 0xa6, 0x00, 0x00, 0x00, 0xf5, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, // ................ + 0xd5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, // ....=........... + 0xf5, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xf7, 0x01, 0x00, 0x00, // ................ + 0xf6, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xfb, 0x01, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xf7, 0x01, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, // ................ + 0xfb, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, // ............O... + 0x0d, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0xf9, 0x00, 0x02, 0x00, 0xfb, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xfb, 0x01, 0x00, 0x00, // ................ + 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb1, 0x02, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, // ................ + 0xf4, 0x01, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, // ............A... + 0x88, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, // =............... + 0x85, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xb1, 0x02, 0x00, 0x00, // ................ + 0xfd, 0x01, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, // ................ + 0x69, 0x02, 0x00, 0x00, 0x59, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, // i...Y........... + 0x04, 0x02, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ + 0x33, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x06, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // 3...........A... + 0xa6, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, // ................ + 0xbc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, // ....=........... + 0x07, 0x02, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x00, // ................ + 0x08, 0x02, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x32, 0x02, 0x00, 0x00, // ............2... + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x09, 0x02, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, // ................ + 0x0b, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0a, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ................ + 0x32, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, // 2...........A... + 0xa6, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, // ................ + 0xbc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0d, 0x02, 0x00, 0x00, // ....=........... + 0x0c, 0x02, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x00, // ................ + 0x0d, 0x02, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, // ....9.......1... + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x0e, 0x02, 0x00, 0x00, 0x0f, 0x02, 0x00, 0x00, // ................ + 0x31, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0f, 0x02, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, // 1...........V... + 0x45, 0x00, 0x00, 0x00, 0x98, 0x02, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, // E.......:...7... + 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x9a, 0x02, 0x00, 0x00, 0x98, 0x02, 0x00, 0x00, // W............... + 0x6c, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, // l...A........... + 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... + 0x07, 0x00, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, // ................ + 0xbf, 0x00, 0x00, 0x00, 0x15, 0x02, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, // ............x... + 0xf7, 0x00, 0x03, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, // ...."........... + 0x15, 0x02, 0x00, 0x00, 0x16, 0x02, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // ........"....... + 0x16, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x79, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, // ....O...y....... + 0x9a, 0x02, 0x00, 0x00, 0x9a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x02, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, // ....Q........... + 0x9a, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, // ............y... + 0x1b, 0x02, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, // ............Q... + 0x07, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x9a, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, // Q............... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x00, 0x00, // ....Q........... + 0x1b, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, // ........Q....... + 0x20, 0x02, 0x00, 0x00, 0x1b, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // ...........P... + 0x0d, 0x00, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0x1f, 0x02, 0x00, 0x00, // ....!........... + 0x20, 0x02, 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x22, 0x02, 0x00, 0x00, // ..........."... + 0xf8, 0x00, 0x02, 0x00, 0x22, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, // ...."........... + 0xae, 0x02, 0x00, 0x00, 0x9a, 0x02, 0x00, 0x00, 0x0f, 0x02, 0x00, 0x00, 0x21, 0x02, 0x00, 0x00, // ............!... + 0x16, 0x02, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, // ....A.......#... + 0x80, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... + 0x07, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, // ....$...#....... + 0xbf, 0x00, 0x00, 0x00, 0x25, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, // ....%...$....... + 0xf7, 0x00, 0x03, 0x00, 0x29, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, // ....)........... + 0x25, 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x29, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // %...&...)....... + 0x26, 0x02, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, // &...O.......(... + 0xae, 0x02, 0x00, 0x00, 0xae, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x29, 0x02, 0x00, 0x00, // ............)... + 0xf8, 0x00, 0x02, 0x00, 0x29, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, // ....)........... + 0xaf, 0x02, 0x00, 0x00, 0xae, 0x02, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, // ........"...(... + 0x26, 0x02, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, // &...........,... + 0xaf, 0x02, 0x00, 0x00, 0x59, 0x02, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, // ....Y...A....... + 0x2e, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // ............=... + 0x0d, 0x00, 0x00, 0x00, 0x2f, 0x02, 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, // ..../........... + 0x0d, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x2f, 0x02, 0x00, 0x00, // ....0...,.../... + 0xf9, 0x00, 0x02, 0x00, 0x31, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x31, 0x02, 0x00, 0x00, // ....1.......1... + 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb5, 0x02, 0x00, 0x00, 0xb6, 0x02, 0x00, 0x00, // ................ + 0x0b, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x29, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, // ....0...)....... + 0x32, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x32, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, // 2.......2....... + 0x0d, 0x00, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, // ........5....... + 0xb5, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x33, 0x02, 0x00, 0x00, // ....1.......3... + 0xf8, 0x00, 0x02, 0x00, 0x33, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, // ....3........... + 0xb3, 0x02, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x00, // ................ + 0x32, 0x02, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x34, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, // 2.......4....... + 0x34, 0x02, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xb2, 0x02, 0x00, 0x00, // 4............... + 0xcf, 0x01, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, 0xb3, 0x02, 0x00, 0x00, 0x33, 0x02, 0x00, 0x00, // ............3... + 0x3e, 0x00, 0x03, 0x00, 0x78, 0x01, 0x00, 0x00, 0xb2, 0x02, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, // >...x........... + 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb0, 0x00, // 8....... }; -static const uint8_t fs_nanovg_fill_dx9[1585] = +static const uint8_t fs_nanovg_fill_dx9[1621] = { - 0x46, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x08, 0x00, 0x05, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, // 0......u_extentR - 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x01, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x69, 0x6e, // adius.......u_in - 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x01, 0x06, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x6f, // nerCol.......u_o - 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x01, 0x07, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, // uterCol.......u_ - 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x13, 0x01, 0x03, 0x00, 0x03, 0x00, 0x08, 0x75, // paintMat.......u - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x0a, 0x00, 0x01, 0x00, 0x11, 0x75, 0x5f, // _params.......u_ - 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, // scissorExtScale. - 0x01, 0x08, 0x00, 0x01, 0x00, 0x0c, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, // ......u_scissorM - 0x61, 0x74, 0x13, 0x01, 0x00, 0x00, 0x03, 0x00, 0x94, 0x05, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, // at.............. - 0xfe, 0xff, 0x61, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, // ..a.CTAB....W... - 0x00, 0x03, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ - 0x50, 0x01, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, // P............... - 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, // ................ - 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ - 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x00, // ........(....... - 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, // ............1... - 0x02, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x43, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, // C............... - 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x00, 0xab, 0xab, 0x04, 0x00, 0x0c, 0x00, // ....s_tex....... - 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x65, 0x78, // ............u_ex - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00, // tentRadius...... - 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x69, 0x6e, // ............u_in - 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x00, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, // nerCol.u_outerCo - 0x6c, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x00, 0xab, 0xab, 0xab, // l.u_paintMat.... - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, // u_params.u_sciss - 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x75, 0x5f, 0x73, 0x63, 0x69, // orExtScale.u_sci - 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ssorMat.ps_3_0.M - 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS - 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile - 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x0b, 0x00, 0x0f, 0xa0, // r 10.1..Q....... - 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0x3f, // ...?...@.......? - 0x51, 0x00, 0x00, 0x05, 0x0c, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, // Q.............@@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x01, 0x00, 0x03, 0x90, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, // ..........U..... - 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0x8b, 0x08, 0x00, 0xe4, 0xa1, // ................ - 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0b, 0x80, 0x0b, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, // ................ - 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0xee, 0xa1, 0x01, 0x00, 0x00, 0x80, // ................ - 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, // ..........U..... - 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x01, 0x00, 0x00, 0x90, 0x0b, 0x00, 0x55, 0xa0, // ..............U. - 0x0b, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x8c, // ..............U. - 0x0b, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, // ..............U. - 0x0a, 0x00, 0x55, 0xa0, 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x00, 0x00, 0x55, 0x80, // ..U...........U. - 0x0b, 0x00, 0xff, 0xa0, 0x0a, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x01, 0x00, 0x55, 0x90, // ..............U. - 0x0b, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, // ..............U. - 0x01, 0x00, 0xaa, 0x80, 0x23, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x0a, 0x00, 0xff, 0xa0, // ....#........... - 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x80, 0x04, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, // ..............U. - 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x03, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, // ................ - 0x02, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x80, 0x02, 0x00, 0xe4, 0x80, // ................ - 0x05, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0c, 0x80, 0x09, 0x00, 0xaa, 0xa1, // ................ - 0x09, 0x00, 0x44, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0c, 0x80, 0x02, 0x00, 0xe4, 0x81, // ..D............. - 0x02, 0x00, 0x44, 0x8b, 0x0b, 0x00, 0x00, 0x03, 0x03, 0x00, 0x03, 0x80, 0x02, 0x00, 0xee, 0x80, // ..D............. - 0x0c, 0x00, 0x00, 0xa0, 0x5a, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x03, 0x00, 0xe4, 0x80, // ....Z........... - 0x03, 0x00, 0xe4, 0x80, 0x0c, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, // ................ - 0x00, 0x00, 0xff, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, // ................ - 0x0b, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x02, 0x00, 0xff, 0x80, // ................ - 0x0a, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x0c, 0x00, 0x00, 0xa0, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, 0x02, 0x00, 0xaa, 0x80, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, 0x09, 0x00, 0xaa, 0xa1, // ................ - 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x0a, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x80, // ................ - 0x00, 0x00, 0xff, 0x80, 0x06, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x0a, 0x00, 0x00, 0xa0, // ................ - 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0x00, 0x80, // ................ - 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, // ..............U. - 0x06, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x09, 0x00, 0x00, 0xa0, 0x06, 0x00, 0x00, 0x02, // ................ - 0x03, 0x00, 0x02, 0x80, 0x09, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x05, 0x80, // ......U......... - 0x02, 0x00, 0xd4, 0x80, 0x03, 0x00, 0xd4, 0x80, 0x42, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, // ........B....... - 0x01, 0x00, 0xe8, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0d, 0x80, // ................ - 0x01, 0x00, 0x77, 0x81, 0x0a, 0x00, 0xa7, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x07, 0x80, // ..w............. - 0x02, 0x00, 0xff, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0x80, // ........X....... - 0x01, 0x00, 0xaa, 0x8c, 0x03, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, // ............X... - 0x02, 0x00, 0x0e, 0x80, 0x01, 0x00, 0xff, 0x8c, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0xe4, 0x80, // ................ - 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x06, 0x00, 0xe4, 0xa0, // ................ - 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0xe4, 0x80, // ..........U..... - 0x29, 0x00, 0x02, 0x02, 0x0a, 0x00, 0xff, 0xa0, 0x01, 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0x02, // ).........U..... - 0x03, 0x00, 0x0f, 0x80, 0x0b, 0x00, 0xff, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, // ........*....... - 0x01, 0x00, 0x02, 0x80, 0x0c, 0x00, 0x55, 0xa0, 0x29, 0x00, 0x02, 0x02, 0x0a, 0x00, 0xff, 0xa0, // ......U.)....... - 0x01, 0x00, 0x55, 0x80, 0x42, 0x00, 0x00, 0x03, 0x04, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, // ..U.B........... - 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x07, 0x80, 0x04, 0x00, 0xff, 0x80, // ................ - 0x04, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0x80, 0x01, 0x00, 0xaa, 0x8c, // ....X........... - 0x05, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0e, 0x80, // ........X....... - 0x01, 0x00, 0xff, 0x8c, 0x04, 0x00, 0x00, 0x80, 0x04, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, // ................ - 0x04, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x0f, 0x80, 0x04, 0x00, 0xe4, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x2a, 0x00, 0x00, 0x00, // ............*... - 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0f, 0x80, 0x0c, 0x00, 0x00, 0xa0, 0x2b, 0x00, 0x00, 0x00, // ............+... - 0x2b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x8c, // +...X........... - 0x02, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0x80, // ................ - 0x06, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x81, // ................ - 0x07, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xff, 0x80, // ................ - 0x02, 0x00, 0xe4, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, // ................ - 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x08, 0x0f, 0x80, // ..U.....X....... - 0x00, 0x00, 0xaa, 0x81, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, // ................ - 0x00, // . + 0x46, 0x53, 0x48, 0x0b, 0xcf, 0xda, 0x1b, 0x94, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x05, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x75, // _tex0..........u + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x01, 0x09, // _extentRadius... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, // ........u_innerC + 0x6f, 0x6c, 0x12, 0x01, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x6f, // ol...........u_o + 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x01, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // uterCol......... + 0x00, 0x0a, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x13, 0x01, 0x03, 0x00, // ..u_paintMat.... + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, // .......u_params. + 0x01, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, // ..........u_scis + 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x01, 0x08, 0x00, 0x01, // sorExtScale..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, // ......u_scissorM + 0x61, 0x74, 0x13, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x05, 0x00, 0x00, // at.............. + 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x61, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, // ......a.CTAB.... + 0x57, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, // W............... + 0x00, 0x91, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....P........... + 0x01, 0x00, 0x02, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, // ................ + 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0xf4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, // ............(... + 0x02, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x31, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, // 1............... + 0x00, 0x00, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....C........... + 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x00, 0xab, 0xab, // ........s_tex... + 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x00, 0xab, // u_extentRadius.. + 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x00, 0x75, 0x5f, 0x6f, 0x75, 0x74, // u_innerCol.u_out + 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, // erCol.u_paintMat + 0x00, 0xab, 0xab, 0xab, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x75, 0x5f, 0x73, // ....u_params.u_s + 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x75, // cissorExtScale.u + 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x00, 0x70, 0x73, 0x5f, 0x33, // _scissorMat.ps_3 + 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, // _0.Microsoft (R) + 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, // HLSL Shader Com + 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, // piler 10.1..Q... + 0x0b, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0xbf, // .......?...@.... + 0x00, 0x00, 0x80, 0x3f, 0x51, 0x00, 0x00, 0x05, 0x0c, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x00, // ...?Q........... + 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, // ..@@............ + 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, // ................ + 0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0x80, // ................ + 0x02, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xe4, 0x8b, // ................ + 0x08, 0x00, 0xe4, 0xa1, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0b, 0x80, 0x0b, 0x00, 0xe4, 0xa0, // ................ + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0xee, 0xa1, // ................ + 0x01, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0x80, // ..............U. + 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x01, 0x00, 0x00, 0x90, // ................ + 0x0b, 0x00, 0x55, 0xa0, 0x0b, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, // ..U............. + 0x00, 0x00, 0x55, 0x8c, 0x0b, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, // ..U............. + 0x00, 0x00, 0x55, 0x80, 0x0a, 0x00, 0x55, 0xa0, 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, // ..U...U......... + 0x00, 0x00, 0x55, 0x80, 0x0b, 0x00, 0xff, 0xa0, 0x0a, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, // ..U............. + 0x01, 0x00, 0x55, 0x90, 0x0b, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, // ..U............. + 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0xaa, 0x80, 0x23, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, // ..U.....#....... + 0x0a, 0x00, 0xff, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x80, 0x04, 0x00, 0xe4, 0xa0, // ................ + 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x03, 0x80, 0x03, 0x00, 0xe4, 0xa0, // ..U............. + 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x80, // ................ + 0x02, 0x00, 0xe4, 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0c, 0x80, // ................ + 0x09, 0x00, 0xaa, 0xa1, 0x09, 0x00, 0x44, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0c, 0x80, // ......D......... + 0x02, 0x00, 0xe4, 0x81, 0x02, 0x00, 0x44, 0x8b, 0x0b, 0x00, 0x00, 0x03, 0x03, 0x00, 0x03, 0x80, // ......D......... + 0x02, 0x00, 0xee, 0x80, 0x0c, 0x00, 0x00, 0xa0, 0x5a, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, // ........Z....... + 0x03, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x0c, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, // ................ + 0x00, 0x00, 0xff, 0x80, 0x0b, 0x00, 0x00, 0x03, 0x01, 0x00, 0x04, 0x80, 0x02, 0x00, 0xaa, 0x80, // ................ + 0x02, 0x00, 0xff, 0x80, 0x0a, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xaa, 0x80, // ................ + 0x0c, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, // ................ + 0x02, 0x00, 0xaa, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, // ................ + 0x09, 0x00, 0xaa, 0xa1, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x0a, 0x00, 0x00, 0xa0, // ................ + 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x80, 0x06, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, // ................ + 0x0a, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0xff, 0x80, // ................ + 0x01, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, // ................ + 0x00, 0x00, 0x55, 0x80, 0x06, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x80, 0x09, 0x00, 0x00, 0xa0, // ..U............. + 0x06, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x80, 0x09, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, // ..........U..... + 0x01, 0x00, 0x05, 0x80, 0x02, 0x00, 0xd4, 0x80, 0x03, 0x00, 0xd4, 0x80, 0x42, 0x00, 0x00, 0x03, // ............B... + 0x02, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe8, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, // ................ + 0x01, 0x00, 0x0d, 0x80, 0x01, 0x00, 0x77, 0x81, 0x0a, 0x00, 0xa7, 0xa0, 0x05, 0x00, 0x00, 0x03, // ......w......... + 0x03, 0x00, 0x07, 0x80, 0x02, 0x00, 0xff, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, // ............X... + 0x02, 0x00, 0x07, 0x80, 0x01, 0x00, 0xaa, 0x8c, 0x03, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80, // ................ + 0x58, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0e, 0x80, 0x01, 0x00, 0xff, 0x8c, 0x02, 0x00, 0x00, 0x80, // X............... + 0x02, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x80, // ................ + 0x06, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, // ..............U. + 0x02, 0x00, 0xe4, 0x80, 0x29, 0x00, 0x02, 0x02, 0x0a, 0x00, 0xff, 0xa0, 0x01, 0x00, 0x55, 0x80, // ....).........U. + 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0f, 0x80, 0x0b, 0x00, 0xff, 0xa0, 0x2a, 0x00, 0x00, 0x00, // ............*... + 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x80, 0x0c, 0x00, 0x55, 0xa0, 0x29, 0x00, 0x02, 0x02, // ..........U.)... + 0x0a, 0x00, 0xff, 0xa0, 0x01, 0x00, 0x55, 0x80, 0x42, 0x00, 0x00, 0x03, 0x04, 0x00, 0x0f, 0x80, // ......U.B....... + 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x07, 0x80, // ................ + 0x04, 0x00, 0xff, 0x80, 0x04, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0x80, // ........X....... + 0x01, 0x00, 0xaa, 0x8c, 0x05, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, // ............X... + 0x04, 0x00, 0x0e, 0x80, 0x01, 0x00, 0xff, 0x8c, 0x04, 0x00, 0x00, 0x80, 0x04, 0x00, 0xe4, 0x80, // ................ + 0x05, 0x00, 0x00, 0x03, 0x04, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0xe4, 0x80, // ................ + 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x0f, 0x80, 0x04, 0x00, 0xe4, 0x80, 0x06, 0x00, 0xe4, 0xa0, // ................ + 0x2a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0f, 0x80, 0x0c, 0x00, 0x00, 0xa0, // *............... + 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, // +...+...X....... + 0x01, 0x00, 0x00, 0x8c, 0x02, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, // ................ + 0x02, 0x00, 0x0f, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, // ................ + 0x02, 0x00, 0xe4, 0x81, 0x07, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0f, 0x80, // ................ + 0x00, 0x00, 0xff, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, // ................ + 0x02, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x58, 0x00, 0x00, 0x04, // ......U.....X... + 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xaa, 0x81, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, // ..... }; -static const uint8_t fs_nanovg_fill_dx11[2364] = +static const uint8_t fs_nanovg_fill_dx11[2416] = { - 0x46, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x08, 0x00, 0x0c, 0x75, 0x5f, 0x73, 0x63, 0x69, // FSH........u_sci - 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x75, 0x5f, // ssorMat.......u_ - 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x13, 0x00, 0x30, 0x00, 0x03, 0x00, 0x0a, 0x75, // paintMat..0....u - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x00, 0x60, 0x00, 0x01, 0x00, 0x0a, // _innerCol..`.... + 0x46, 0x53, 0x48, 0x0b, 0xcf, 0xda, 0x1b, 0x94, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0c, 0x75, // FSH............u + 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x13, 0x00, 0x00, 0x00, 0x03, // _scissorMat..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, // ......u_paintMat + 0x13, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x69, 0x6e, 0x6e, // ..0........u_inn + 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x00, 0x60, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // erCol..`........ 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x00, 0x70, 0x00, 0x01, 0x00, // u_outerCol..p... - 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, // .u_scissorExtSca - 0x6c, 0x65, 0x12, 0x00, 0x80, 0x00, 0x01, 0x00, 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, // le.......u_exten - 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x00, 0x90, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, // tRadius.......u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x05, 0x73, 0x5f, 0x74, // params.......s_t - 0x65, 0x78, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x08, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ex0.........DXBC - 0x21, 0x36, 0x2a, 0x19, 0x73, 0x28, 0xce, 0xe0, 0xff, 0xcd, 0x27, 0x27, 0x8e, 0x5c, 0x18, 0x73, // !6*.s(....''...s - 0x01, 0x00, 0x00, 0x00, 0x9c, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... - 0x9c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... - 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, // ................ - 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, // SV_POSITION.TEXC - 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, // OORD....OSGN,... - 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ ....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, // SV_TARGET...SHDR - 0xc4, 0x07, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // ....@.......Y... - 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, // F. .........Z... - 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, // .`......X....p.. - 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, // ....UU..b...2... - 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xc2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....b........... - 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, // e.... ......h... - 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8...2....... - 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // V.......F. ..... - 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2...2....... - 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, // F. ............. - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // ....F........... - 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 2.......F....... - 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // F. ............. - 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, // 2.......F....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. .A....... - 0x08, 0x00, 0x00, 0x00, 0x32, 0x20, 0x00, 0x0e, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2 ..2....... - 0x46, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x8a, 0x20, 0x00, // F...A......... . - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, // .........@.....? - 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // ...?........8... - 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, // ........2..."... - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // ....*........@.. - 0x00, 0x00, 0x00, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x08, // ...@.@.......... - 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0xc1, 0x00, 0x00, 0x00, // "............... - 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x38, 0x00, 0x00, 0x08, // .....@.....?8... - 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // "............... - 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x07, // .. .........3... - 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // "............... - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x33, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, // .@.....?3...B... - 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // ....:........@.. - 0x00, 0x00, 0x80, 0x3f, 0x38, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?8..."....... - 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // *............... - 0x18, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, // ....B.......:. . - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........@...... - 0x1f, 0x00, 0x04, 0x03, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, // ....*.......8... - 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........V....... - 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, // .. .........2... - 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... - 0x03, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x32, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........2....... - 0xa6, 0x8a, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // .. .A........... - 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, // F. ............. - 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ........A....... - 0x34, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, // 4...........:... - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x07, // ....*.......3... - 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x0a, 0xc2, 0x00, 0x10, 0x00, // .@......4....... - 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // .............@.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x0f, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, // ....B........... - 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x05, // ............K... - 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // B.......*....... - 0x00, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, // ....B.......*... - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, // ................ - 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // B.......*....... - 0x2a, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // *. .A........... - 0x32, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, // 2...B......... . - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, // .........@.....? - 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x20, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, // *........ ..B... - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, // ....*......... . - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. .A....... - 0x06, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // ....F. ......... - 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, // 2............... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, // ........8...B... - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8.... ...... - 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... - 0x12, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........B....... + 0x00, 0x00, 0x00, 0x00, 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, // .....u_scissorEx + 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // tScale.......... + 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, // .u_extentRadius. + 0x00, 0x90, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ..........u_para + 0x6d, 0x73, 0x12, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x5f, 0x74, // ms...........s_t + 0x65, 0x78, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x73, 0x5f, 0x74, // ex0..........s_t + 0x65, 0x78, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x08, 0x00, 0x00, // ex0............. + 0x44, 0x58, 0x42, 0x43, 0x21, 0x36, 0x2a, 0x19, 0x73, 0x28, 0xce, 0xe0, 0xff, 0xcd, 0x27, 0x27, // DXBC!6*.s(....'' + 0x8e, 0x5c, 0x18, 0x73, 0x01, 0x00, 0x00, 0x00, 0x9c, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ...s............ + 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, // ,...........ISGN + 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // h...........P... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x0c, 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. + 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, // TEXCOORD....OSGN + 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ,........... ... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, // ....SV_TARGET... + 0x53, 0x48, 0x44, 0x52, 0xc4, 0x07, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x00, // SHDR....@....... + 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, // Y...F. ......... + 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, // Z....`......X... + 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, // .p......UU..b... + 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0xc2, 0x10, 0x10, 0x00, // 2.......b....... + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, // h.......8...2... + 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, // ....V.......F. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x32, 0x00, 0x10, 0x00, // ........2...2... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... + 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, // ....2.......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... + 0x00, 0x00, 0x00, 0x0a, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x80, // ....2.......F... + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, // ........F. .A... + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x32, 0x20, 0x00, 0x0e, 0x32, 0x00, 0x10, 0x00, // ........2 ..2... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F...A....... + 0xe6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, // .. ..........@.. + 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?...?........ + 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 8............... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x09, // ............2... + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ".......*....... + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, // .@.....@.@...... + 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, // ...."........... + 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // .........@.....? + 0x38, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 8..."........... + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, // ...... ......... + 0x33, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 3..."........... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x33, 0x00, 0x00, 0x07, // .....@.....?3... + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // B.......:....... + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x38, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, // .@.....?8..."... + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // ....*........... + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........B....... 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // :. ..........@.. - 0x00, 0x00, 0x80, 0x3f, 0x1f, 0x00, 0x04, 0x03, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...?....*....... + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x04, 0x03, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........*....... 0x38, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... 0x01, 0x00, 0x00, 0x00, 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ...... ......... 0x32, 0x00, 0x00, 0x0a, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x84, 0x20, 0x00, // 2............. . 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x84, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x84, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, // ........E....... - 0x01, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, // ............F~.. + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x32, 0x00, 0x10, 0x00, // ............2... + 0x01, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... .A....... + 0x09, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ....F. ......... + 0x00, 0x00, 0x00, 0x09, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x80, // ................ + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, // ............A... + 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....4........... + 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // :.......*....... + 0x33, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, // 3............... + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x0a, // .....@......4... + 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .@.............. + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........B....... + 0xe6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x4b, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, // K...B.......*... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........B....... + 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // *............... + 0x00, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, // ....B.......*... + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x80, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....*. .A....... + 0x09, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2...B....... + 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, // .. ..........@.. + 0x00, 0x00, 0x00, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x20, 0x00, 0x08, // ...?*........ .. + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // B.......*....... + 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // .. ............. + 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00, // ........F. .A... + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F. ..... + 0x07, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....2........... + 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // F. .........8... + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // B............... + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x20, 0x10, 0x00, // ........8.... .. + 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ............F... + 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, // ............B... + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, // ....:. ......... + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x1f, 0x00, 0x04, 0x03, 0x2a, 0x00, 0x10, 0x00, // .@.....?....*... + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8........... + 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // V......... ..... + 0x04, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....2........... + 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, // .. ............. + 0x01, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // ................ + 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x08, // .. ............. + 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x06, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, // .. .........E... + 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // F~.......`...... + 0x18, 0x00, 0x00, 0x0b, 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, // .............. . + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........@...... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, 0x07, // .......?...@8... + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // r............... + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, // F.......7...r... + 0x01, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ............F... + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, // ....F.......7... + 0xe2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x06, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........V....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // 8...........F... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ....F. ......... + 0x38, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, // 8..."........... + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // ............8... + 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // . ......V....... + 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x08, // F............... + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ".......:. ..... + 0x0a, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x04, 0x03, // .....@.....@.... + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, // .....@.....?...? + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x12, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x08, // ...?...?........ + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // ".......:. ..... + 0x0a, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x1f, 0x00, 0x04, 0x03, // .....@....@@.... + 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, // ........E....... + 0x01, 0x00, 0x00, 0x00, 0xe6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, // ............F~.. 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0b, // .....`.......... - 0xc2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // .......... ..... - 0x0a, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .....@.......... - 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, // ...?...@8...r... + 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // b......... ..... + 0x0a, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // .....@.........? + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, // ...@....8...r... 0x02, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ............F... 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....7...r....... - 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ........F....... + 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // V.......F....... 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0xe2, 0x00, 0x10, 0x00, // F.......7....... - 0x01, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, // ................ - 0x01, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, // ....V.......8... - 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... - 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // F. .........8... - 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // "............... - 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x20, 0x10, 0x00, // ........8.... .. - 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ....V.......F... - 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, // ............"... - 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, // ....:. ......... - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x04, 0x03, 0x1a, 0x00, 0x10, 0x00, // .@.....@........ - 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....6.... ...... - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, // .@.....?...?...? - 0x00, 0x00, 0x80, 0x3f, 0x12, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, // ...?........"... - 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, // ....:. ......... - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x1f, 0x00, 0x04, 0x03, 0x1a, 0x00, 0x10, 0x00, // .@....@@........ - 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....E........... - 0xe6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F~...... - 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0b, 0x62, 0x00, 0x10, 0x00, // .`..........b... - 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, // ...... ......... - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x40, // .@.........?...@ - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....8...r....... - 0xf6, 0x0f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... - 0x37, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, // 7...r.......V... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // ....F.......F... - 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, 0xe2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....7........... - 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x56, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, // V.......8....... - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ............F... - 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8.... ...... - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // F.......F. ..... - 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, // ................ - 0x15, 0x00, 0x00, 0x01, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0xb0, 0x00, // ....>....... + 0x01, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x56, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // ....V.......8... + 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F.......8.... .. + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, // ................ + 0x15, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0xb0, 0x00, // ........>....... }; -static const uint8_t fs_nanovg_fill_mtl[3462] = +static const uint8_t fs_nanovg_fill_mtl[3752] = { - 0x46, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x07, 0x00, 0x0c, 0x75, 0x5f, 0x73, 0x63, 0x69, // FSH........u_sci - 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, // ssorMat.......u_ - 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x03, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, // paintMat.......u - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, // _innerCol....... - 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, // u_outerCol...... - 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, // .u_scissorExtSca - 0x6c, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, // le.......u_exten - 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, 0x5f, // tRadius.......u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0xf5, 0x0c, 0x00, 0x00, // params.......... - 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, // using namespace - 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // metal;.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, // atMtlShaderInput - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x70, 0x6f, // {. float2 v_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, // sition;. float2 - 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, // v_texcoord0;.}; - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // .struct xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, // haderOutput {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, // float4 gl_FragCo - 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // lor;.};.struct x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, // latMtlShaderUnif - 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, // orm {. float3x3 - 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x20, // u_scissorMat;. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, // float3x3 u_pain - 0x74, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, // tMat;. float4 u - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // _innerCol;. flo - 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, // at4 u_outerCol;. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, // float4 u_sciss - 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // orExtScale;. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, // oat4 u_extentRad - 0x69, 0x75, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // ius;. float4 u_ - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, // params;.};.fragm - 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // ent xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // rOutput xlatMtlM - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ain (xlatMtlShad - 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, // erInput _mtl_i [ - 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // stant xlatMtlSha - 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // derUniform& _mtl - 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // _u [[buffer(0)]] - 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, // . , texture2d - 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x20, 0x5b, 0x5b, // <float> s_tex [[ - 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, // texture(0)]], sa - 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, // mpler _mtlsmp_s_ - 0x74, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, // tex [[sampler(0) - 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, // ]]).{. xlatMtlS - 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // haderOutput _mtl - 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, // _o;. float4 res - 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ult_1 = 0;. flo - 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, // at tmpvar_2 = 0; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x63, 0x5f, 0x33, 0x20, 0x3d, // . float2 sc_3 = - 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, // 0;. float3 tmp - 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // var_4 = 0;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_4.z = 1.0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, // tmpvar_4.xy = _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // mtl_i.v_position - 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x63, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, // ;. sc_3 = (floa - 0x74, 0x32, 0x28, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2d, 0x20, 0x28, // t2(0.5, 0.5) - ( - 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // (. abs((_mtl_ - 0x75, 0x2e, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x20, 0x2a, // u.u_scissorMat * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x0a, 0x20, // tmpvar_4).xy). - 0x20, 0x20, 0x2d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x73, 0x63, 0x69, // - _mtl_u.u_sci - 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x78, 0x79, 0x29, // ssorExtScale.xy) - 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, // * _mtl_u.u_scis - 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x7a, 0x77, 0x29, 0x29, // sorExtScale.zw)) - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, // ;. tmpvar_2 = ( - 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x73, 0x63, 0x5f, 0x33, 0x2e, 0x78, 0x2c, 0x20, 0x30, // clamp (sc_3.x, 0 - 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, // .0, 1.0) * clamp - 0x20, 0x28, 0x73, 0x63, 0x5f, 0x33, 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // (sc_3.y, 0.0, 1 - 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // .0));. float tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // pvar_5 = 0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, // pvar_5 = (min (1 - 0x2e, 0x30, 0x2c, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, // .0, (. (1.0 - - 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, // abs(((_mtl_i.v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x32, 0x2e, // texcoord0.x * 2. - 0x30, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2a, // 0) - 1.0))). * - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // _mtl_u.u_params - 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x2c, // .y)) * min (1.0, - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // _mtl_i.v_texcoo - 0x72, 0x64, 0x30, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, // rd0.y));. if (( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, // _mtl_u.u_params. - 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, // w == 0.0)) {. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // float3 tmpvar_6 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = 0;. tmpvar - 0x5f, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _6.z = 1.0;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // tmpvar_6.xy = _m - 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // tl_i.v_position; - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, // . float2 tmpv - 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // ar_7 = 0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x5f, // pvar_7 = (abs((_ - 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, // mtl_u.u_paintMat - 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x2e, 0x78, 0x79, 0x29, // * tmpvar_6).xy) - 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x65, 0x78, 0x74, // - (_mtl_u.u_ext - 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x78, 0x79, 0x20, 0x2d, 0x20, 0x5f, // entRadius.xy - _ - 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, // mtl_u.u_extentRa - 0x64, 0x69, 0x75, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // dius.zz));. f - 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, // loat2 tmpvar_8 = - 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, // 0;. tmpvar_8 - 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // = max (tmpvar_7 - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, // , 0.0);. resu - 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x69, 0x78, 0x20, 0x28, 0x5f, 0x6d, 0x74, // lt_1 = (mix (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x2c, 0x20, // l_u.u_innerCol, - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, // _mtl_u.u_outerCo - 0x6c, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // l, clamp (. - 0x20, 0x28, 0x28, 0x28, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x69, // ((((. mi - 0x6e, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, // n (max (tmpvar_7 - 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x79, 0x29, 0x2c, // .x, tmpvar_7.y), - 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x0a, // 0.0). + . - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x64, 0x6f, 0x74, // sqrt(dot - 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, // (tmpvar_8, tmpv - 0x61, 0x72, 0x5f, 0x38, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2d, // ar_8)). ) - - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, // _mtl_u.u_extent - 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x6d, 0x74, // Radius.z) + (_mt - 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x20, 0x2a, // l_u.u_params.x * - 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // 0.5)) / _mtl_u. - 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, // u_params.x). - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, // , 0.0, 1.0)) * ( - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // tmpvar_5 * tmpva - 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, // r_2));. } else - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // {. if ((_mtl_ - 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, // u.u_params.w == - 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, // 1.0)) {. fl - 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x30, // oat4 color_9 = 0 - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, // ;. float3 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // mpvar_10 = 0;. - 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x7a, 0x20, // tmpvar_10.z - 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, // = 1.0;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // var_10.xy = _mtl - 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, // _i.v_position;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // float4 tmpv - 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // ar_11 = 0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, // tmpvar_11 = s_t - 0x65, 0x78, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, // ex.sample(_mtlsm - 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, // p_s_tex, (float2 - 0x29, 0x28, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x69, // )(((_mtl_u.u_pai - 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // ntMat * tmpvar_1 - 0x30, 0x29, 0x2e, 0x78, 0x79, 0x20, 0x2f, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // 0).xy / _mtl_u.u - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, 0x78, 0x79, // _extentRadius.xy - 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // )));. color - 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, // _9 = tmpvar_11;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // if ((_mtl_ - 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, // u.u_params.z == - 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 1.0)) {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, // float4 tmpvar_12 - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, // = 0;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, // pvar_12.xyz = (t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x74, // mpvar_11.xyz * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, // mpvar_11.w);. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x2e, 0x77, // tmpvar_12.w - 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x2e, 0x77, 0x3b, 0x0a, // = tmpvar_11.w;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, // color_9 - 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, // = tmpvar_12;. - 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, // };. if ( - 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // (_mtl_u.u_params - 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, // .z == 2.0)) {. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, // color_9 = - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, // color_9.xxxx;. - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, // };. col - 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, // or_9 = (color_9 - 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, // * _mtl_u.u_inner - 0x43, 0x6f, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // Col);. colo - 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x39, 0x20, 0x2a, // r_9 = (color_9 * - 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // (tmpvar_5 * tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, // var_2));. r - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // esult_1 = color_ - 0x39, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, // 9;. } else {. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // if ((_mtl_ - 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, // u.u_params.w == - 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 2.0)) {. - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // result_1 = float - 0x34, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, // 4(1.0, 1.0, 1.0, - 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, // 1.0);. } e - 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // lse {. if - 0x20, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ((_mtl_u.u_para - 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, // ms.w == 3.0)) {. + 0x46, 0x53, 0x48, 0x0b, 0xcf, 0xda, 0x1b, 0x94, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0c, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x11, 0x01, 0xff, 0xff, 0x01, // _texSampler..... + 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0c, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x54, 0x65, 0x78, 0x74, 0x75, // ......s_texTextu + 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0c, 0x75, 0x5f, 0x73, // re...........u_s + 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x13, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, // cissorMat....... + 0x00, 0xfd, 0x7f, 0x11, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, // ....u_scissorExt + 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x08, // Scale........... + 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0xa0, 0x00, 0x01, 0x00, 0x00, 0x00, // u_params........ + 0xfd, 0x7f, 0x0a, 0x75, 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x13, 0x01, 0x30, // ...u_paintMat..0 + 0x00, 0x03, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, // ........u_extent + 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x01, 0x90, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, // Radius.......... + 0x0a, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x12, 0x01, 0x60, 0x00, 0x01, // .u_innerCol..`.. + 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x0a, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, // ......u_outerCol + 0x12, 0x01, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0x05, 0x73, 0x5f, 0x74, 0x65, 0x78, // ..p........s_tex + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x7f, 0xb6, 0x0d, 0x00, 0x00, 0x23, 0x69, // ..............#i + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, // nclude <metal_st + 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, // dlib>.#include < + 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, // simd/simd.h>..us + 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me + 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, // tal;..struct _Gl + 0x6f, 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // obal.{. float + 0x33, 0x78, 0x33, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, // 3x3 u_scissorMat + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x75, // ;. float3x3 u + 0x5f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // _paintMat;. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, // loat4 u_innerCol + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6f, // ;. float4 u_o + 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // uterCol;. flo + 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, // at4 u_scissorExt + 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // Scale;. float + 0x34, 0x20, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, // 4 u_extentRadius + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, // ;. float4 u_p + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, // arams;.};..const + 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, 0x34, 0x20, // ant float4 _694 + 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // = {};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, // float4 bgfx_ + 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, // FragData0 [[colo + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // r(0)]];.};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // ct xlatMtlMain_i + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, // n.{. float2 v + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // _position [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // loat2 v_texcoord + 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, // 0 [[user(locn1)] + 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, // ];.};..fragment + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, // xlatMtlMain_out + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, // xlatMtlMain(xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, // MtlMain_in in [[ + 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, // stage_in]], cons + 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, 0x5f, 0x6d, // tant _Global& _m + 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, // tl_u [[buffer(0) + 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, // ]], texture2d<fl + 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, // oat> s_tex [[tex + 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, // ture(0)]], sampl + 0x65, 0x72, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // er s_texSampler + 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, // [[sampler(0)]]). + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // {. xlatMtlMai + 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, // n_out out = {};. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x35, 0x39, 0x34, 0x20, // float2 _594 + 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2d, 0x20, // = float2(0.5) - + 0x28, 0x28, 0x61, 0x62, 0x73, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // ((abs((_mtl_u.u_ + 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, // scissorMat * flo + 0x61, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // at3(in.v_positio + 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x20, 0x2d, 0x20, 0x5f, // n, 1.0)).xy) - _ + 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, // mtl_u.u_scissorE + 0x78, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x78, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, // xtScale.xy) * _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x73, 0x63, 0x69, 0x73, 0x73, 0x6f, 0x72, 0x45, 0x78, // tl_u.u_scissorEx + 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x7a, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // tScale.zw);. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, // float _601 = fas + 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x5f, 0x35, 0x39, 0x34, 0x2e, 0x78, 0x2c, // t::clamp(_594.x, + 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, // 0.0, 1.0) * fas + 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x5f, 0x35, 0x39, 0x34, 0x2e, 0x79, 0x2c, // t::clamp(_594.y, + 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 0.0, 1.0);. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, // float _617 = fas + 0x74, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x28, 0x31, 0x2e, 0x30, // t::min(1.0, (1.0 + 0x20, 0x2d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // - abs((in.v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x20, // coord0.x * 2.0) + 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // - 1.0)) * _mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x66, // .u_params.y) * f + 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x69, 0x6e, // ast::min(1.0, in + 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x79, 0x29, 0x3b, // .v_texcoord0.y); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, 0x30, // . float4 _690 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // ;. if (_mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x30, // .u_params.w == 0 + 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .0). {. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x36, 0x33, 0x30, 0x20, 0x3d, 0x20, // float2 _630 = + 0x61, 0x62, 0x73, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // abs((_mtl_u.u_pa + 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, // intMat * float3( + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, // in.v_position, 1 + 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // .0)).xy) - (_mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, // _u.u_extentRadiu + 0x73, 0x2e, 0x78, 0x79, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x5f, 0x6d, // s.xy - float2(_m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, // tl_u.u_extentRad + 0x69, 0x75, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ius.z));. + 0x20, 0x5f, 0x36, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // _690 = mix(_mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x2c, 0x20, 0x5f, // _u.u_innerCol, _ + 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, // mtl_u.u_outerCol + 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, // , float4(fast::c + 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x28, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x69, // lamp((((fast::mi + 0x6e, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x33, 0x30, // n(fast::max(_630 + 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x36, 0x33, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, // .x, _630.y), 0.0 + 0x29, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, // ) + length(fast: + 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x33, 0x30, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // :max(_630, float + 0x32, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // 2(0.0)))) - _mtl + 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, // _u.u_extentRadiu + 0x73, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // s.z) + (_mtl_u.u + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, // _params.x * 0.5) + 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, // ) / _mtl_u.u_par + 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // ams.x, 0.0, 1.0) + 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x36, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x30, // )) * (_617 * _60 + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, // 1);. }. el + 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // se. {. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, 0x31, 0x3b, 0x0a, 0x20, 0x20, // float4 _691;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // if (_mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x31, // .u_params.w == 1 + 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, // .0). {. 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // float4 - 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // color_13 = 0;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // float4 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_14 = 0;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // tmpvar_ - 0x31, 0x34, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // 14 = s_tex.sampl - 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2c, // e(_mtlsmp_s_tex, - 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // (float2)(_mtl_i - 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x29, 0x3b, 0x0a, // .v_texcoord0));. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, // color_ - 0x31, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x3b, 0x0a, // 13 = tmpvar_14;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x5f, // if ((_ + 0x20, 0x5f, 0x36, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2e, 0x73, 0x61, // _657 = s_tex.sa + 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, // mple(s_texSample + 0x72, 0x2c, 0x20, 0x28, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // r, ((_mtl_u.u_pa + 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, // intMat * float3( + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, // in.v_position, 1 + 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x20, 0x2f, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // .0)).xy / _mtl_u + 0x2e, 0x75, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x2e, // .u_extentRadius. + 0x78, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // xy));. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x38, 0x38, 0x3b, 0x0a, 0x20, // float4 _688;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, // if (_ 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, // mtl_u.u_params.z - 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, // == 1.0)) {. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, // float4 t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // mpvar_15 = 0;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // tmpvar - 0x5f, 0x31, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // _15.xyz = (tmpva - 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_14.xyz * tmpva - 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // r_14.w);. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, 0x2e, 0x77, // tmpvar_15.w - 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x34, 0x2e, 0x77, 0x3b, 0x0a, // = tmpvar_14.w;. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, // colo - 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x35, // r_13 = tmpvar_15 - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, // ;. };. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x5f, 0x6d, // if ((_m - 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, // tl_u.u_params.z - 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // == 2.0)) {. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, // color_13 - 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, // = color_13.xxxx; - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, // . };. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, // color_13 - 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x74, // = (color_13 * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // mpvar_2);. - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x28, // result_1 = ( - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // color_13 * _mtl_ - 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x29, 0x3b, 0x0a, 0x20, // u.u_innerCol);. - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // };. - 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x20, // };. };. };. - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // _mtl_o.gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x3b, // olor = result_1; - 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}... + 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // == 1.0). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6c, // _688 = fl + 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x36, 0x35, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, // oat4(_657.xyz * + 0x5f, 0x36, 0x35, 0x37, 0x2e, 0x77, 0x2c, 0x20, 0x5f, 0x36, 0x35, 0x37, 0x2e, 0x77, 0x29, 0x3b, // _657.w, _657.w); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, // . }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, // _6 + 0x38, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x35, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // 88 = _657;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x38, 0x39, // float4 _689 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, // ;. if + 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // (_mtl_u.u_param + 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, // s.z == 2.0). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x20, 0x3d, // _689 = + 0x20, 0x5f, 0x36, 0x38, 0x38, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // _688.xxxx;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x20, 0x3d, 0x20, // _689 = + 0x5f, 0x36, 0x38, 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _688;. + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x5f, 0x36, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x36, 0x38, 0x39, 0x20, 0x2a, 0x20, 0x5f, // _691 = (_689 * _ + 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, // mtl_u.u_innerCol + 0x29, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x36, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x30, 0x31, // ) * (_617 * _601 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, // );. }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, // float4 _692;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, // if (_mt + 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, // l_u.u_params.w = + 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = 2.0). + 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, // _692 = floa + 0x74, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // t4(1.0);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, // float4 _69 + 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 3;. + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // if (_mtl_u.u_ + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x2e, 0x30, 0x29, // params.w == 3.0) + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, // float4 _6 + 0x36, 0x36, 0x20, 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // 66 = s_tex.sampl + 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, // e(s_texSampler, + 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x3b, // in.v_texcoord0); + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x38, 0x36, // float4 _686 + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // ;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // if (_mtl_u + 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x31, // .u_params.z == 1 + 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // .0). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x20, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, // _686 = float4( + 0x5f, 0x36, 0x36, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x36, 0x36, 0x2e, // _666.xyz * _666. + 0x77, 0x2c, 0x20, 0x5f, 0x36, 0x36, 0x36, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // w, _666.w);. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, // { + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // . + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x20, 0x3d, 0x20, // _686 = + 0x5f, 0x36, 0x36, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _666;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x38, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x20, // float4 _687;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, // if (_mtl_u.u_pa + 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x7a, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x0a, 0x20, // rams.z == 2.0). + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, // _68 + 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x2e, 0x78, 0x78, 0x78, 0x78, 0x3b, 0x0a, 0x20, // 7 = _686.xxxx;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, // else. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x38, 0x37, // _687 + 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // = _686;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // + 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x36, 0x38, 0x37, 0x20, // _693 = (_687 + 0x2a, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // * _601) * _mtl_u + 0x2e, 0x75, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x20, // .u_innerCol;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, // e + 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // lse. + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // {. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x20, 0x3d, // _693 = + 0x20, 0x5f, 0x36, 0x39, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _694;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x39, 0x32, 0x20, 0x3d, 0x20, // _692 = + 0x5f, 0x36, 0x39, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // _693;. + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // }. + 0x5f, 0x36, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, // _691 = _692;. + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, // }. _ + 0x36, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 690 = _691;. + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // }. out.bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x30, 0x3b, // ragData0 = _690; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, // . return out; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0xd0, 0x00, // .}...... }; extern const uint8_t* fs_nanovg_fill_pssl; extern const uint32_t fs_nanovg_fill_pssl_size; diff --git a/3rdparty/bgfx/examples/common/nanovg/makefile b/3rdparty/bgfx/examples/common/nanovg/makefile index 9dd5826c317..554063e5829 100644 --- a/3rdparty/bgfx/examples/common/nanovg/makefile +++ b/3rdparty/bgfx/examples/common/nanovg/makefile @@ -1,6 +1,6 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # include ../../../scripts/shader-embeded.mk diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp b/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp index db392092c8b..3a0af013e61 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp @@ -23,7 +23,7 @@ #include "nanovg.h" -#include <bx/macros.h> +#include <bx/bx.h> BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4701) // error C4701: potentially uninitialized local variable 'cint' used // -Wunused-function and 4505 must be file scope, can't be disabled between push/pop. @@ -347,7 +347,7 @@ error: NVGparams* nvgInternalParams(NVGcontext* ctx) { - return &ctx->params; + return &ctx->params; } void nvgDeleteInternal(NVGcontext* ctx) @@ -373,7 +373,7 @@ void nvgDeleteInternal(NVGcontext* ctx) free(ctx); } -void nvgBeginFrame(NVGcontext* ctx, int windowWidth, int windowHeight, float devicePixelRatio) +void nvgBeginFrame(NVGcontext* ctx, float windowWidth, float windowHeight, float devicePixelRatio) { /* printf("Tris: draws:%d fill:%d stroke:%d text:%d TOT:%d\n", ctx->drawCallCount, ctx->fillTriCount, ctx->strokeTriCount, ctx->textTriCount, @@ -1421,7 +1421,8 @@ static void nvg__chooseBevel(int bevel, NVGpoint* p0, NVGpoint* p1, float w, } static NVGvertex* nvg__roundJoin(NVGvertex* dst, NVGpoint* p0, NVGpoint* p1, - float lw, float rw, float lu, float ru, int ncap, float fringe) + float lw, float rw, float lu, float ru, int ncap, + float fringe) { int i, n; float dlx0 = p0->dy; @@ -1554,36 +1555,39 @@ static NVGvertex* nvg__bevelJoin(NVGvertex* dst, NVGpoint* p0, NVGpoint* p1, } static NVGvertex* nvg__buttCapStart(NVGvertex* dst, NVGpoint* p, - float dx, float dy, float w, float d, float aa) + float dx, float dy, float w, float d, + float aa, float u0, float u1) { float px = p->x - dx*d; float py = p->y - dy*d; float dlx = dy; float dly = -dx; - nvg__vset(dst, px + dlx*w - dx*aa, py + dly*w - dy*aa, 0,0); dst++; - nvg__vset(dst, px - dlx*w - dx*aa, py - dly*w - dy*aa, 1,0); dst++; - nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++; - nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++; + nvg__vset(dst, px + dlx*w - dx*aa, py + dly*w - dy*aa, u0,0); dst++; + nvg__vset(dst, px - dlx*w - dx*aa, py - dly*w - dy*aa, u1,0); dst++; + nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; + nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; return dst; } static NVGvertex* nvg__buttCapEnd(NVGvertex* dst, NVGpoint* p, - float dx, float dy, float w, float d, float aa) + float dx, float dy, float w, float d, + float aa, float u0, float u1) { float px = p->x + dx*d; float py = p->y + dy*d; float dlx = dy; float dly = -dx; - nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++; - nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++; - nvg__vset(dst, px + dlx*w + dx*aa, py + dly*w + dy*aa, 0,0); dst++; - nvg__vset(dst, px - dlx*w + dx*aa, py - dly*w + dy*aa, 1,0); dst++; + nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; + nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; + nvg__vset(dst, px + dlx*w + dx*aa, py + dly*w + dy*aa, u0,0); dst++; + nvg__vset(dst, px - dlx*w + dx*aa, py - dly*w + dy*aa, u1,0); dst++; return dst; } static NVGvertex* nvg__roundCapStart(NVGvertex* dst, NVGpoint* p, - float dx, float dy, float w, int ncap, float aa) + float dx, float dy, float w, int ncap, + float aa, float u0, float u1) { int i; float px = p->x; @@ -1594,16 +1598,17 @@ static NVGvertex* nvg__roundCapStart(NVGvertex* dst, NVGpoint* p, for (i = 0; i < ncap; i++) { float a = i/(float)(ncap-1)*NVG_PI; float ax = cosf(a) * w, ay = sinf(a) * w; - nvg__vset(dst, px - dlx*ax - dx*ay, py - dly*ax - dy*ay, 0,1); dst++; + nvg__vset(dst, px - dlx*ax - dx*ay, py - dly*ax - dy*ay, u0,1); dst++; nvg__vset(dst, px, py, 0.5f,1); dst++; } - nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++; - nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++; + nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; + nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; return dst; } static NVGvertex* nvg__roundCapEnd(NVGvertex* dst, NVGpoint* p, - float dx, float dy, float w, int ncap, float aa) + float dx, float dy, float w, int ncap, + float aa, float u0, float u1) { int i; float px = p->x; @@ -1611,13 +1616,13 @@ static NVGvertex* nvg__roundCapEnd(NVGvertex* dst, NVGpoint* p, float dlx = dy; float dly = -dx; NVG_NOTUSED(aa); - nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++; - nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++; + nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++; + nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++; for (i = 0; i < ncap; i++) { float a = i/(float)(ncap-1)*NVG_PI; float ax = cosf(a) * w, ay = sinf(a) * w; nvg__vset(dst, px, py, 0.5f,1); dst++; - nvg__vset(dst, px - dlx*ax + dx*ay, py - dly*ax + dy*ay, 0,1); dst++; + nvg__vset(dst, px - dlx*ax + dx*ay, py - dly*ax + dy*ay, u0,1); dst++; } return dst; } @@ -1693,15 +1698,24 @@ static void nvg__calculateJoins(NVGcontext* ctx, float w, int lineJoin, float mi } -static int nvg__expandStroke(NVGcontext* ctx, float w, int lineCap, int lineJoin, float miterLimit) +static int nvg__expandStroke(NVGcontext* ctx, float w, float fringe, int lineCap, int lineJoin, float miterLimit) { NVGpathCache* cache = ctx->cache; NVGvertex* verts; NVGvertex* dst; int cverts, i, j; - float aa = ctx->fringeWidth; + float aa = fringe;//ctx->fringeWidth; + float u0 = 0.0f, u1 = 1.0f; int ncap = nvg__curveDivs(w, NVG_PI, ctx->tessTol); // Calculate divisions per half circle. + w += aa * 0.5f; + + // Disable the gradient used for antialiasing when antialiasing is not used. + if (aa == 0.0f) { + u0 = 0.5f; + u1 = 0.5f; + } + nvg__calculateJoins(ctx, w, lineJoin, miterLimit); // Calculate max vertex usage. @@ -1762,42 +1776,42 @@ static int nvg__expandStroke(NVGcontext* ctx, float w, int lineCap, int lineJoin dy = p1->y - p0->y; nvg__normalize(&dx, &dy); if (lineCap == NVG_BUTT) - dst = nvg__buttCapStart(dst, p0, dx, dy, w, -aa*0.5f, aa); + dst = nvg__buttCapStart(dst, p0, dx, dy, w, -aa*0.5f, aa, u0, u1); else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE) - dst = nvg__buttCapStart(dst, p0, dx, dy, w, w-aa, aa); + dst = nvg__buttCapStart(dst, p0, dx, dy, w, w-aa, aa, u0, u1); else if (lineCap == NVG_ROUND) - dst = nvg__roundCapStart(dst, p0, dx, dy, w, ncap, aa); + dst = nvg__roundCapStart(dst, p0, dx, dy, w, ncap, aa, u0, u1); } for (j = s; j < e; ++j) { if ((p1->flags & (NVG_PT_BEVEL | NVG_PR_INNERBEVEL)) != 0) { if (lineJoin == NVG_ROUND) { - dst = nvg__roundJoin(dst, p0, p1, w, w, 0, 1, ncap, aa); + dst = nvg__roundJoin(dst, p0, p1, w, w, u0, u1, ncap, aa); } else { - dst = nvg__bevelJoin(dst, p0, p1, w, w, 0, 1, aa); + dst = nvg__bevelJoin(dst, p0, p1, w, w, u0, u1, aa); } } else { - nvg__vset(dst, p1->x + (p1->dmx * w), p1->y + (p1->dmy * w), 0,1); dst++; - nvg__vset(dst, p1->x - (p1->dmx * w), p1->y - (p1->dmy * w), 1,1); dst++; + nvg__vset(dst, p1->x + (p1->dmx * w), p1->y + (p1->dmy * w), u0,1); dst++; + nvg__vset(dst, p1->x - (p1->dmx * w), p1->y - (p1->dmy * w), u1,1); dst++; } p0 = p1++; } if (loop) { // Loop it - nvg__vset(dst, verts[0].x, verts[0].y, 0,1); dst++; - nvg__vset(dst, verts[1].x, verts[1].y, 1,1); dst++; + nvg__vset(dst, verts[0].x, verts[0].y, u0,1); dst++; + nvg__vset(dst, verts[1].x, verts[1].y, u1,1); dst++; } else { // Add cap dx = p1->x - p0->x; dy = p1->y - p0->y; nvg__normalize(&dx, &dy); if (lineCap == NVG_BUTT) - dst = nvg__buttCapEnd(dst, p1, dx, dy, w, -aa*0.5f, aa); + dst = nvg__buttCapEnd(dst, p1, dx, dy, w, -aa*0.5f, aa, u0, u1); else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE) - dst = nvg__buttCapEnd(dst, p1, dx, dy, w, w-aa, aa); + dst = nvg__buttCapEnd(dst, p1, dx, dy, w, w-aa, aa, u0, u1); else if (lineCap == NVG_ROUND) - dst = nvg__roundCapEnd(dst, p1, dx, dy, w, ncap, aa); + dst = nvg__roundCapEnd(dst, p1, dx, dy, w, ncap, aa, u0, u1); } path->nstroke = (int)(dst - verts); @@ -1956,13 +1970,13 @@ void nvgBezierTo(NVGcontext* ctx, float c1x, float c1y, float c2x, float c2y, fl void nvgQuadTo(NVGcontext* ctx, float cx, float cy, float x, float y) { - float x0 = ctx->commandx; - float y0 = ctx->commandy; - float vals[] = { NVG_BEZIERTO, - x0 + 2.0f/3.0f*(cx - x0), y0 + 2.0f/3.0f*(cy - y0), - x + 2.0f/3.0f*(cx - x), y + 2.0f/3.0f*(cy - y), - x, y }; - nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); + float x0 = ctx->commandx; + float y0 = ctx->commandy; + float vals[] = { NVG_BEZIERTO, + x0 + 2.0f/3.0f*(cx - x0), y0 + 2.0f/3.0f*(cy - y0), + x + 2.0f/3.0f*(cx - x), y + 2.0f/3.0f*(cy - y), + x, y }; + nvg__appendCommands(ctx, vals, NVG_COUNTOF(vals)); } void nvgArcTo(NVGcontext* ctx, float x1, float y1, float x2, float y2, float radius) @@ -2221,6 +2235,7 @@ void nvgStroke(NVGcontext* ctx) const NVGpath* path; int i; + if (strokeWidth < ctx->fringeWidth) { // If the stroke width is less than pixel size, use alpha to emulate coverage. // Since coverage is area, scale by alpha*alpha. @@ -2237,9 +2252,9 @@ void nvgStroke(NVGcontext* ctx) nvg__flattenPaths(ctx); if (ctx->params.edgeAntiAlias && state->shapeAntiAlias) - nvg__expandStroke(ctx, strokeWidth*0.5f + ctx->fringeWidth*0.5f, state->lineCap, state->lineJoin, state->miterLimit); + nvg__expandStroke(ctx, strokeWidth*0.5f, ctx->fringeWidth, state->lineCap, state->lineJoin, state->miterLimit); else - nvg__expandStroke(ctx, strokeWidth*0.5f, state->lineCap, state->lineJoin, state->miterLimit); + nvg__expandStroke(ctx, strokeWidth*0.5f, 0.0f, state->lineCap, state->lineJoin, state->miterLimit); ctx->params.renderStroke(ctx->params.userPtr, &strokePaint, state->compositeOperation, &state->scissor, ctx->fringeWidth, strokeWidth, ctx->cache->paths, ctx->cache->npaths); @@ -2426,12 +2441,12 @@ float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char* while (fonsTextIterNext(ctx->fs, &iter, &q)) { float c[4*2]; if (iter.prevGlyphIndex == -1) { // can not retrieve glyph? - if (!nvg__allocTextAtlas(ctx)) - break; // no memory :( if (nverts != 0) { nvg__renderText(ctx, verts, nverts); nverts = 0; } + if (!nvg__allocTextAtlas(ctx)) + break; // no memory :( iter = prevIter; fonsTextIterNext(ctx->fs, &iter, &q); // try again if (iter.prevGlyphIndex == -1) // still can not find glyph? diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg.h b/3rdparty/bgfx/examples/common/nanovg/nanovg.h index 074ae96a7fe..bf4574b7b52 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg.h +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg.h @@ -138,7 +138,7 @@ struct NVGtextRow { typedef struct NVGtextRow NVGtextRow; enum NVGimageFlags { - NVG_IMAGE_GENERATE_MIPMAPS = 1<<0, // Generate mipmaps during creation of the image. + NVG_IMAGE_GENERATE_MIPMAPS = 1<<0, // Generate mipmaps during creation of the image. NVG_IMAGE_REPEATX = 1<<1, // Repeat image in X direction. NVG_IMAGE_REPEATY = 1<<2, // Repeat image in Y direction. NVG_IMAGE_FLIPY = 1<<3, // Flips (inverses) image in Y direction when rendered. @@ -154,7 +154,7 @@ enum NVGimageFlags { // For example, GLFW returns two dimension for an opened window: window size and // frame buffer size. In that case you would set windowWidth/Height to the window size // devicePixelRatio to: frameBufferWidth / windowWidth. -void nvgBeginFrame(NVGcontext* ctx, int windowWidth, int windowHeight, float devicePixelRatio); +void nvgBeginFrame(NVGcontext* ctx, float windowWidth, float windowHeight, float devicePixelRatio); // Cancels drawing the current frame. void nvgCancelFrame(NVGcontext* ctx); @@ -271,7 +271,7 @@ void nvgLineCap(NVGcontext* ctx, int cap); void nvgLineJoin(NVGcontext* ctx, int join); // Sets the transparency applied to all rendered shapes. -// Alreade transparent paths will get proportionally more transparent as well. +// Already transparent paths will get proportionally more transparent as well. void nvgGlobalAlpha(NVGcontext* ctx, float alpha); // @@ -395,7 +395,7 @@ NVGpaint nvgLinearGradient(NVGcontext* ctx, float sx, float sy, float ex, float NVGcolor icol, NVGcolor ocol); // Creates and returns a box gradient. Box gradient is a feathered rounded rectangle, it is useful for rendering -// drop shadows or hilights for boxes. Parameters (x,y) define the top-left corner of the rectangle, +// drop shadows or highlights for boxes. Parameters (x,y) define the top-left corner of the rectangle, // (w,h) define the size of the rectangle, r defines the corner radius, and f feather. Feather defines how blurry // the border of the rectangle is. Parameter icol specifies the inner color and ocol the outer color of the gradient. // The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint(). @@ -408,7 +408,7 @@ NVGpaint nvgBoxGradient(NVGcontext* ctx, float x, float y, float w, float h, NVGpaint nvgRadialGradient(NVGcontext* ctx, float cx, float cy, float inr, float outr, NVGcolor icol, NVGcolor ocol); -// Creates and returns an image patter. Parameters (ox,oy) specify the left-top location of the image pattern, +// Creates and returns an image pattern. Parameters (ox,oy) specify the left-top location of the image pattern, // (ex,ey) the size of one image, angle rotation around the top-left corner, image is handle to the image to render. // The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint(). NVGpaint nvgImagePattern(NVGcontext* ctx, float ox, float oy, float ex, float ey, @@ -647,7 +647,7 @@ struct NVGparams { int (*renderDeleteTexture)(void* uptr, int image); int (*renderUpdateTexture)(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data); int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h); - void (*renderViewport)(void* uptr, int width, int height, float devicePixelRatio); + void (*renderViewport)(void* uptr, float width, float height, float devicePixelRatio); void (*renderCancel)(void* uptr); void (*renderFlush)(void* uptr); void (*renderFill)(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths); diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp index 77699841c01..fccee88db6e 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ // @@ -48,7 +48,7 @@ static const bgfx::EmbeddedShader s_embeddedShaders[] = namespace { - static bgfx::VertexDecl s_nvgDecl; + static bgfx::VertexLayout s_nvgLayout; enum GLNVGshaderType { @@ -271,7 +271,7 @@ namespace gl->u_scissorExtScale = bgfx::createUniform("u_scissorExtScale", bgfx::UniformType::Vec4); gl->u_extentRadius = bgfx::createUniform("u_extentRadius", bgfx::UniformType::Vec4); gl->u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4); - gl->s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Int1); + gl->s_tex = bgfx::createUniform("s_tex", bgfx::UniformType::Sampler); if (bgfx::getRendererType() == bgfx::RendererType::Direct3D9) { @@ -282,7 +282,7 @@ namespace gl->u_halfTexel.idx = bgfx::kInvalidHandle; } - s_nvgDecl + s_nvgLayout .begin() .add(bgfx::Attrib::Position, 2, bgfx::AttribType::Float) .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) @@ -370,7 +370,11 @@ namespace uint32_t pitch = tex->width * bytesPerPixel; const bgfx::Memory* mem = bgfx::alloc(w * h * bytesPerPixel); - bx::gather(mem->data, data + y * pitch + x * bytesPerPixel, w * bytesPerPixel, h, pitch); + bx::gather(mem->data, // dst + data + y * pitch + x * bytesPerPixel, // src + pitch, // srcStride + w * bytesPerPixel, // stride + h); // num bgfx::updateTexture2D( tex->id @@ -554,11 +558,11 @@ namespace gl->th = handle; } - static void nvgRenderViewport(void* _userPtr, int width, int height, float devicePixelRatio) + static void nvgRenderViewport(void* _userPtr, float width, float height, float devicePixelRatio) { struct GLNVGcontext* gl = (struct GLNVGcontext*)_userPtr; - gl->view[0] = (float)width; - gl->view[1] = (float)height; + gl->view[0] = width; + gl->view[1] = height; bgfx::setViewRect(gl->viewId, 0, 0, width * devicePixelRatio, height * devicePixelRatio); } @@ -758,12 +762,24 @@ namespace if (gl->ncalls > 0) { - bgfx::allocTransientVertexBuffer(&gl->tvb, gl->nverts, s_nvgDecl); + int avail = bgfx::getAvailTransientVertexBuffer(gl->nverts, s_nvgLayout); + if (avail < gl->nverts) + { + gl->nverts = avail; + BX_WARN(true, "Vertex number truncated due to transient vertex buffer overflow"); + if (gl->nverts < 2) + { + goto _cleanup; + } + } + + bgfx::allocTransientVertexBuffer(&gl->tvb, gl->nverts, s_nvgLayout); int allocated = gl->tvb.size/gl->tvb.stride; if (allocated < gl->nverts) { + // this branch should never be taken as we've already checked the transient vertex buffer size gl->nverts = allocated; BX_WARN(true, "Vertex number truncated due to transient vertex buffer overflow"); } @@ -801,6 +817,7 @@ namespace } } +_cleanup: // Reset calls gl->nverts = 0; gl->npaths = 0; @@ -1225,6 +1242,61 @@ NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* _ctx, int32_t _width, int32 return framebuffer; } +NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int32_t imageFlags, bgfx::ViewId viewId) +{ + NVGLUframebuffer* framebuffer = nvgluCreateFramebuffer(ctx, imageFlags); + + if (framebuffer != NULL) + { + nvgluSetViewFramebuffer(viewId, framebuffer); + } + + return framebuffer; +} + +NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* _ctx, int32_t _imageFlags) +{ + BX_UNUSED(_imageFlags); + bgfx::TextureHandle textures[] = + { + bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, false, 1, bgfx::TextureFormat::RGBA8, BGFX_TEXTURE_RT), + bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, false, 1, bgfx::TextureFormat::D24S8, BGFX_TEXTURE_RT | BGFX_TEXTURE_RT_WRITE_ONLY) + }; + bgfx::FrameBufferHandle fbh = bgfx::createFrameBuffer( + BX_COUNTOF(textures) + , textures + , true + ); + + if (!bgfx::isValid(fbh) ) + { + return NULL; + } + + struct NVGparams* params = nvgInternalParams(_ctx); + struct GLNVGcontext* gl = (struct GLNVGcontext*)params->userPtr; + struct GLNVGtexture* tex = glnvg__allocTexture(gl); + + if (NULL == tex) + { + bgfx::destroy(fbh); + return NULL; + } + + tex->width = 0; + tex->height = 0; + tex->type = NVG_TEXTURE_RGBA; + tex->flags = _imageFlags | NVG_IMAGE_PREMULTIPLIED; + tex->id = bgfx::getTexture(fbh); + + NVGLUframebuffer* framebuffer = BX_NEW(gl->allocator, NVGLUframebuffer); + framebuffer->ctx = _ctx; + framebuffer->image = tex->id.idx; + framebuffer->handle = fbh; + + return framebuffer; +} + void nvgluBindFramebuffer(NVGLUframebuffer* _framebuffer) { static NVGcontext* s_prevCtx = NULL; @@ -1265,3 +1337,19 @@ void nvgluSetViewFramebuffer(bgfx::ViewId _viewId, NVGLUframebuffer* _framebuffe bgfx::setViewFrameBuffer(_viewId, _framebuffer->handle); bgfx::setViewMode(_viewId, bgfx::ViewMode::Sequential); } + +int nvgCreateBgfxTexture(struct NVGcontext *_ctx, + bgfx::TextureHandle _id, + int _width, + int _height, + int _flags) { + struct NVGparams *params = nvgInternalParams(_ctx); + struct GLNVGcontext *gl = (struct GLNVGcontext *)params->userPtr; + struct GLNVGtexture *tex = glnvg__allocTexture(gl); + tex->id = _id; + tex->width = _width; + tex->height = _height; + tex->flags = _flags; + tex->type = NVG_TEXTURE_RGBA; + return tex->id.idx; +} diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h index 90bf95a7ea4..ca7a4f20264 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef NANOVG_BGFX_H_HEADER_GUARD @@ -62,6 +62,12 @@ NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* _ctx, int32_t _width, int32 NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* _ctx, int32_t _width, int32_t _height, int32_t _imageFlags); /// +NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* _ctx, int32_t _imageFlags, bgfx::ViewId _viewId); + +/// +NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* _ctx, int32_t _imageFlags); + +/// void nvgluBindFramebuffer(NVGLUframebuffer* _framebuffer); /// diff --git a/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.bin.h b/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.bin.h index 5b2853828be..5086c83f54d 100644 --- a/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.bin.h +++ b/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.bin.h @@ -1,265 +1,304 @@ -static const uint8_t vs_nanovg_fill_glsl[541] = +static const uint8_t vs_nanovg_fill_glsl[511] = { - 0x56, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x75, 0x5f, 0x68, 0x61, // wSize.......u_ha - 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0xeb, 0x01, 0x00, // lfTexel......... - 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // .attribute highp - 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // vec2 a_position - 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, // ;.attribute high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec2 a_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // d0;.varying high - 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // p vec2 v_positio - 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // n;.varying highp - 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec2 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, // vec4 u_viewSize - 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.uniform highp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, // vec4 u_halfTexel - 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ - 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // . v_position = - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // a_position;. v_ - 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x5f, 0x74, // texcoord0 = (a_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x2b, 0x20, 0x75, 0x5f, 0x68, 0x61, 0x6c, // excoord0 + u_hal - 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, // fTexel.xy);. hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ghp vec4 tmpvar_ - 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, // 1;. tmpvar_1.zw - 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // = vec2(0.0, 1.0 - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, // );. tmpvar_1.x - 0x3d, 0x20, 0x28, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // = (((2.0 * a_pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, // ition.x) / u_vie - 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x78, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // wSize.x) - 1.0); - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, // . tmpvar_1.y = - 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, // (1.0 - ((2.0 * a - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2f, 0x20, 0x75, // _position.y) / u - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, // _viewSize.y));. - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, // gl_Position = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // mpvar_1;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewSize....... + 0x00, 0x00, 0x00, 0x0b, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, // ....u_halfTexel. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, // .............att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, // ribute vec2 a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // sition;.attribut + 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // e vec2 a_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, // d0;.varying vec2 + 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, // v_position;.var + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ying vec2 v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, // oord0;.uniform v + 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x0a, // ec4 u_viewSize;. + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x68, // uniform vec4 u_h + 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // alfTexel;.void m + 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, // ain ().{. v_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // ition = a_positi + 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // on;. v_texcoord + 0x30, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // 0 = (a_texcoord0 + 0x20, 0x2b, 0x20, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2e, 0x78, // + u_halfTexel.x + 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // y);. vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // zw = vec2(0.0, 1 + 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // .0);. tmpvar_1. + 0x78, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5f, 0x70, // x = (((2.0 * a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x76, // osition.x) / u_v + 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x78, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, // iewSize.x) - 1.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x20, // );. tmpvar_1.y + 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, // = (1.0 - ((2.0 * + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2f, // a_position.y) / + 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x79, 0x29, 0x29, 0x3b, // u_viewSize.y)); + 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_1;.}... +}; +static const uint8_t vs_nanovg_fill_essl[553] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewSize....... + 0x00, 0x00, 0x00, 0x0b, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, // ....u_halfTexel. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, // .............att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, // 2 a_position;.at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // tribute highp ve + 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c2 a_texcoord0;. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // varying highp ve + 0x63, 0x32, 0x20, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, // c2 v_position;.v + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec + 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, // 2 v_texcoord0;.u + 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // niform highp vec + 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x0a, 0x75, 0x6e, // 4 u_viewSize;.un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // iform highp vec4 + 0x20, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x3b, 0x0a, 0x76, 0x6f, // u_halfTexel;.vo + 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, // id main ().{. v + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, // _position = a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // sition;. v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // oord0 = (a_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x2b, 0x20, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, // ord0 + u_halfTex + 0x65, 0x6c, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // el.xy);. highp + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, // tmpvar_1.zw = v + 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // ec2(0.0, 1.0);. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x28, // tmpvar_1.x = (( + 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // (2.0 * a_positio + 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, // n.x) / u_viewSiz + 0x65, 0x2e, 0x78, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, // e.x) - 1.0);. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, // mpvar_1.y = (1.0 + 0x20, 0x2d, 0x20, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // - ((2.0 * a_pos + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, // ition.y) / u_vie + 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // wSize.y));. gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // Position = tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r_1;.}... }; static const uint8_t vs_nanovg_fill_spv[1481] = { - 0x56, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0b, 0x75, 0x5f, 0x68, 0x61, 0x6c, // VSH........u_hal - 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x10, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, // fTexel.......u_v - 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x90, 0x05, 0x00, // iewSize......... - 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xb1, 0x00, 0x00, // ...#............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0............... - 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // n....G...J...S.. - 0x00, 0x57, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, // .W...Z.......... - 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, // n............$Gl - 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // obal............ - 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, // .u_viewSize..... - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, // .........u_halfT - 0x65, 0x78, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exel............ - 0x00, 0x05, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // .....G...a_posit - 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, // ion......J...a_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x53, 0x00, 0x00, // excoord0.....S.. - 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // .@entryPointOutp - 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ut.gl_Position.. - 0x00, 0x05, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, // .....W...@entryP - 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x70, 0x6f, 0x73, // ointOutput.v_pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x5a, 0x00, 0x00, // ition........Z.. - 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, // .@entryPointOutp - 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x00, // ut.v_texcoord0.. - 0x00, 0x48, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...........#.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .....H.......... - 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x00, // .#.......G...... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, // .....G.......".. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G...G...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G...J...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, // .....G...S...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G...W...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....G...Z...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, // .............!.. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, // ................ - 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // . .............. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, // ................ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // ............. .. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, // .....+.......... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, // .....+.......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, // ................ - 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... .......... - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .....;.......... - 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... .......... - 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, // .....+.......%.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, // .....+.......&.. - 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // ....@....'... .. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, // .....+...'...(.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ..... ...-...... - 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, // .....+.......1.. - 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, // ....?+...'...3.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ..... ...F...... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, // .....;...F...G.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, // .....;...F...J.. - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ..... ...R...... - 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // .....;...R...S.. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ..... ...V...... - 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, // .....;...V...W.. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, // .....;...V...Z.. - 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, // ................ - 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .6.............. - 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .............=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, // .....H...G...=.. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, // .....K...J...A.. - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, // .....v.......... - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, // .=.......w...v.. - 0x00, 0x4f, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, // .O.......x...w.. - 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, // .w.............. - 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, // .....y...K...x.. - 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, // .Q.......|...H.. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, // .............}.. - 0x00, 0x26, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2d, 0x00, 0x00, // .&...|...A...-.. - 0x00, 0x7e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, // .~.......%...(.. - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, // .=...........~.. - 0x00, 0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, // .............}.. - 0x00, 0x7f, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, // ................ - 0x00, 0x80, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....1...Q...... - 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, // .....H.......... - 0x00, 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, // .........&...... - 0x00, 0x41, 0x00, 0x06, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .A...-.......... - 0x00, 0x25, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .%...3...=...... - 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // ................ - 0x00, 0x87, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, // .............P.. - 0x00, 0x09, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, // ................ - 0x00, 0x14, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....1.......... - 0x00, 0x8d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, // .........1...R.. - 0x00, 0x09, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, // ................ - 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, // .....>...S...... - 0x00, 0x3e, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .>...W...H...>.. - 0x00, 0x5a, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, // .Z...y.......8.. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0b, 0x75, // VSH............u + 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, // _halfTexel...... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, // .....u_viewSize. + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x05, 0x00, 0x00, 0x03, 0x02, 0x23, // ...............# + 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, // ................ + 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, // .GLSL.std.450... + 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0a, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... + 0x00, 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // .C...F...O...S.. + 0x00, 0x56, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, // .V.............. + 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, // .........main... + 0x00, 0x05, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // .........Uniform + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x00, // Block........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x00, // .....u_viewSize. + 0x00, 0x06, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x68, // .............u_h + 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, // alfTexel........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x70, // .........C...a_p + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, // osition......F.. + 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x0a, // .a_texcoord0.... + 0x00, 0x4f, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // .O...@entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // Output.gl_Positi + 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x53, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, // on.......S...@en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, // tryPointOutput.v + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, // _position....... + 0x00, 0x56, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, // .V...@entryPoint + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // Output.v_texcoor + 0x64, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // d0...H.......... + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, // .#.......H...... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, // .....#.......G.. + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, // .........G...... + 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, // .".......G...... + 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, // .!.......G...C.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, // .........G...F.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, // .........G...O.. + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, // .........G...S.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, // .........G...V.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, // ................ + 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // .!.............. + 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // ..... .......... + 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // ................ + 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, // ................ + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, // . .......+...... + 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .........+...... + 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, // ................ + 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, // ......... ...... + 0x00, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, // .........;...... + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, // ......... ...... + 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, // .........+...... + 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .%.......+...... + 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, // .&......@....'.. + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, // . .......+...'.. + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, // .(....... ...-.. + 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .........+...... + 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, // .1......?+...'.. + 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, // .3....... ...B.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, // .........;...B.. + 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, // .C.......;...B.. + 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, // .F....... ...N.. + 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, // .........;...N.. + 0x00, 0x4f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, // .O....... ...R.. + 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, // .........;...R.. + 0x00, 0x53, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, // .S.......;...R.. + 0x00, 0x56, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, // .V.......6...... + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, // ................ + 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, // .....=.......D.. + 0x00, 0x43, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, // .C...=.......G.. + 0x00, 0x46, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, // .F...A.......s.. + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // .........=...... + 0x00, 0x74, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // .t...s...O...... + 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .u...t...t...... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, // .............v.. + 0x00, 0x47, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .G...u...Q...... + 0x00, 0x79, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, // .y...D.......... + 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, // .....z...&...y.. + 0x00, 0x41, 0x00, 0x06, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // .A...-...{...... + 0x00, 0x25, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .%...(...=...... + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .|...{.......... + 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, // .}...z...|...... + 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, // .....~...}...1.. + 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, // .Q...........D.. + 0x00, 0x01, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, // ................ + 0x00, 0x26, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2d, 0x00, 0x00, // .&.......A...-.. + 0x00, 0x82, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, // .........%...3.. + 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, // .=.............. + 0x00, 0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, // ................ + 0x00, 0x83, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, // ................ + 0x00, 0x31, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, // .1.......P...... + 0x00, 0x86, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, // .....~.......... + 0x00, 0x31, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, // .1...>...O...... + 0x00, 0x3e, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .>...S...D...>.. + 0x00, 0x56, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, // .V...v.......8.. 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x20, 0x00, // ....... . }; -static const uint8_t vs_nanovg_fill_dx9[426] = +static const uint8_t vs_nanovg_fill_dx9[438] = { - 0x56, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0b, 0x75, 0x5f, 0x68, 0x61, 0x6c, // VSH........u_hal - 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x01, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, // fTexel.......u_v - 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x78, 0x01, 0x00, // iewSize......x.. - 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, // .......(.CTAB... - 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, // .r.............. - 0x00, 0x00, 0x91, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, // .....k...D...... - 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, // .....P.......`.. - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........P...... - 0x00, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x00, 0x01, 0x00, 0x03, // .u_halfTexel.... - 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, // .............u_v - 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // iewSize.vs_3_0.M - 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS - 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile - 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, // r 10.1...Q...... - 0xa0, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........?....... - 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, // ................ - 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ - 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, // ................ - 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x80, 0x02, 0x00, 0x03, 0xe0, 0x02, 0x00, 0x00, // ................ - 0x03, 0x02, 0x00, 0x03, 0xe0, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x90, 0x06, 0x00, 0x00, // ................ - 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, // ................ - 0x80, 0x00, 0x00, 0xd0, 0x90, 0x00, 0x00, 0xd0, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, // ................ - 0xe0, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x06, 0x00, 0x00, // ...U............ - 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, // .......U........ - 0xe0, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, // ...........U.... - 0x02, 0x00, 0x00, 0x0c, 0xe0, 0x02, 0x00, 0x64, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, // .......d........ - 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // .......... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0b, 0x75, // VSH............u + 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x01, 0x00, 0x01, 0x00, // _halfTexel...... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, // .....u_viewSize. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, // .........x...... + 0xff, 0xfe, 0xff, 0x28, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, // ...(.CTAB....r.. + 0x00, 0x00, 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, // ................ + 0x00, 0x6b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, // .k...D.......... + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .P.......`...... + 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x68, // .....P.......u_h + 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, // alfTexel........ + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, // .........u_viewS + 0x69, 0x7a, 0x65, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, // ize.vs_3_0.Micro + 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, // soft (R) HLSL Sh + 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, // ader Compiler 10 + 0x2e, 0x31, 0x00, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, // .1...Q.......... + 0xbf, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, // ....?........... + 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, // ................ + 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, // ................ + 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0xe0, 0x1f, 0x00, 0x00, // ................ + 0x02, 0x05, 0x00, 0x01, 0x80, 0x02, 0x00, 0x03, 0xe0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, // ................ + 0xe0, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xe4, 0x90, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, // ................ + 0x80, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0xd0, // ................ + 0x90, 0x00, 0x00, 0xd0, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x55, // ...............U + 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, // ................ + 0x80, 0x00, 0x00, 0x55, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0xaa, // ...U............ + 0x80, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0c, // .......U........ + 0xe0, 0x02, 0x00, 0x64, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0xe0, 0x00, 0x00, 0xe4, // ...d............ + 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ...... }; -static const uint8_t vs_nanovg_fill_dx11[579] = +static const uint8_t vs_nanovg_fill_dx11[587] = { - 0x56, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x44, // wSize..........D - 0x58, 0x42, 0x43, 0x99, 0x64, 0x1c, 0x9f, 0xec, 0x38, 0xd9, 0xd2, 0x91, 0x86, 0xde, 0x66, 0x7d, // XBC.d...8.....f} - 0x52, 0x06, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // R.............., - 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, // ...........ISGNL - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, // ...........8.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ - 0x03, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...A............ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, // ...........POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0x4f, // ION.TEXCOORD...O - 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, // SGNh...........P - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x5c, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ................ - 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, // .......SV_POSITI - 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, // ON.TEXCOORD....S - 0x48, 0x44, 0x52, 0x24, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x49, 0x00, 0x00, 0x00, 0x59, // HDR$...@...I...Y - 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, // ...F. ........._ - 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, // ...2......._...2 - 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......g.... ... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x01, // .......e...2 ... - 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xc2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, // ...e.... ......h - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x32, 0x00, 0x10, 0x00, 0x00, // ...........2.... - 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x00, // ...F.......F.... - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......2.......F - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F. ...... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ........ ....... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, // ........@....... - 0x00, 0x00, 0x08, 0x22, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, // ..." ..........A - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x36, // ........@.....?6 - 0x00, 0x00, 0x08, 0xc2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, // .... .......@... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x36, // ..............?6 - 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x00, // ...2 ......F.... - 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xc2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, // ...6.... ....... - 0x14, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x10, // .......>........ - 0x00, 0x10, 0x00, // ... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xda, 0x1b, 0x94, 0x01, 0x00, 0x0a, 0x75, // VSH............u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // _viewSize....... + 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x99, 0x64, 0x1c, 0x9f, 0xec, // .......DXBC.d... + 0x38, 0xd9, 0xd2, 0x91, 0x86, 0xde, 0x66, 0x7d, 0x52, 0x06, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x1c, // 8.....f}R....... + 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf0, // .......,........ + 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, // ...ISGNL........ + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ...8............ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A.... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, // ................ + 0x03, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, // ...POSITION.TEXC + 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, // OORD...OSGNh.... + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......P........ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x53, // ...............S + 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, // V_POSITION.TEXCO + 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x24, 0x01, 0x00, 0x00, 0x40, // ORD....SHDR$...@ + 0x00, 0x01, 0x00, 0x49, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, // ...I...Y...F. .. + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x00, // ......._...2.... + 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, // ..._...2.......g + 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, // .... ..........e + 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xc2, // ...2 ......e.... + 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, // ......h........ + 0x00, 0x00, 0x07, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x00, // ...2.......F.... + 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x08, 0x32, // ...F...........2 + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // .......F.......F + 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, // . .............. + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ............... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x08, 0x22, 0x20, 0x10, 0x00, 0x00, // @.........." ... + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // .......A........ + 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x36, 0x00, 0x00, 0x08, 0xc2, 0x20, 0x10, 0x00, 0x00, // @.....?6.... ... + 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....@........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x01, // ......?6...2 ... + 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xc2, // ...F.......6.... + 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x14, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, // ..............> + 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x10, 0x00, // ........... }; -static const uint8_t vs_nanovg_fill_mtl[904] = +static const uint8_t vs_nanovg_fill_mtl[941] = { - 0x56, 0x53, 0x48, 0x05, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie - 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x75, 0x5f, 0x68, 0x61, // wSize.......u_ha - 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x56, 0x03, 0x00, // lfTexel......V.. - 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, // .using namespace - 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, // metal;.struct x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x70, // t {. float2 a_p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // osition [[attrib - 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // ute(0)]];. floa - 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, // t2 a_texcoord0 [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, // tlShaderOutput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // . float4 gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // ition [[position - 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x5f, 0x70, // ]];. float2 v_p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // osition;. float - 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, // 2 v_texcoord0;.} - 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.struct xlatMtl - 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, // ShaderUniform {. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, // float4 u_viewS - 0x69, 0x7a, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // ize;. float4 u_ - 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, // halfTexel;.};.ve - 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // rtex xlatMtlShad - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // erOutput xlatMtl - 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // Main (xlatMtlSha - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, // derInput _mtl_i + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xda, 0x1b, 0x94, 0x02, 0x00, 0x0b, 0x75, // VSH............u + 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x02, 0x01, 0x10, 0x00, 0x01, 0x00, // _halfTexel...... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x02, // .....u_viewSize. + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, // .........h...#in + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, // clude <metal_std + 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, // lib>.#include <s + 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, // imd/simd.h>..usi + 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, // ng namespace met + 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, // al;..struct _Glo + 0x62, 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // bal.{. float4 + 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, // u_viewSize;. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, // float4 u_halfTe + 0x78, 0x65, 0x6c, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // xel;.};..struct + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, // xlatMtlMain_out. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x65, 0x6e, // {. float2 _en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, // _position [[user + 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // (locn0)]];. f + 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, // loat2 _entryPoin + 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // tOutput_v_texcoo + 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, // rd0 [[user(locn1 + 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // )]];. float4 + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, // gl_Position [[po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, // sition]];.};..st + 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // ruct xlatMtlMain + 0x5f, 0x69, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, // _in.{. float2 + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, // a_position [[at + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // tribute(0)]];. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // float2 a_texco + 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // ord0 [[attribute + 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, // (1)]];.};..verte + 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, // x xlatMtlMain_ou + 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, // t xlatMtlMain(xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, // atMtlMain_in in 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, // [[stage_in]], co - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // nstant xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, // aderUniform& _mt - 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, // l_u [[buffer(0)] - 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // ]).{. xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // aderOutput _mtl_ - 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x70, 0x6f, // o;. _mtl_o.v_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // sition = _mtl_i. - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // a_position;. _m - 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // tl_o.v_texcoord0 - 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, // = (_mtl_i.a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x2b, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // coord0 + _mtl_u. - 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2e, 0x78, 0x79, 0x29, 0x3b, // u_halfTexel.xy); - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // . float4 tmpvar - 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // _1 = 0;. tmpvar - 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, // _1.zw = float2(0 - 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // .0, 1.0);. tmpv - 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, // ar_1.x = (((2.0 - 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // * _mtl_i.a_posit - 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // ion.x) / _mtl_u. - 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x78, 0x29, 0x20, 0x2d, 0x20, // u_viewSize.x) - - 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // 1.0);. tmpvar_1 - 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x32, 0x2e, // .y = (1.0 - ((2. - 0x30, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, // 0 * _mtl_i.a_pos + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x26, 0x20, // nstant _Global& + 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, // _mtl_u [[buffer( + 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, // 0)]]).{. xlat + 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, // MtlMain_out out + 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, // = {};. out.gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, // _Position = floa + 0x74, 0x34, 0x28, 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, // t4(((2.0 * in.a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x6d, // position.x) / _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, // tl_u.u_viewSize. + 0x78, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, // x) - 1.0, 1.0 - + 0x28, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, // ((2.0 * in.a_pos 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // ition.y) / _mtl_ - 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x79, 0x29, 0x29, // u.u_viewSize.y)) - 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // ;. _mtl_o.gl_Po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // sition = tmpvar_ - 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // 1;. return _mtl - 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _o;.}... + 0x75, 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x79, 0x29, 0x2c, // u.u_viewSize.y), + 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, // 0.0, 1.0);. + 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // out._entryPointO + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // utput_v_position + 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // = in.a_position + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, // ;. out._entry + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, // PointOutput_v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x74, // xcoord0 = in.a_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x2b, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // excoord0 + _mtl_ + 0x75, 0x2e, 0x75, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x2e, 0x78, 0x79, // u.u_halfTexel.xy + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, // ;. return out + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x20, 0x00, // ;.}........ . }; extern const uint8_t* vs_nanovg_fill_pssl; extern const uint32_t vs_nanovg_fill_pssl_size; diff --git a/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.sc b/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.sc index b1cb88e4d5a..f96214dabaa 100644 --- a/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.sc +++ b/3rdparty/bgfx/examples/common/nanovg/vs_nanovg_fill.sc @@ -3,7 +3,7 @@ $output v_position, v_texcoord0 #include "../common.sh" -#define NEED_HALF_TEXEL (BGFX_SHADER_LANGUAGE_HLSL < 4) +#define NEED_HALF_TEXEL (BGFX_SHADER_LANGUAGE_HLSL < 400) uniform vec4 u_viewSize; diff --git a/3rdparty/bgfx/examples/common/packrect.h b/3rdparty/bgfx/examples/common/packrect.h index 994b31c95b3..bdc4c1f83ba 100644 --- a/3rdparty/bgfx/examples/common/packrect.h +++ b/3rdparty/bgfx/examples/common/packrect.h @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef RECTPACK_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/common/ps/fs_particle.bin.h b/3rdparty/bgfx/examples/common/ps/fs_particle.bin.h index 54a50f1bd2e..371f6928f5a 100644 --- a/3rdparty/bgfx/examples/common/ps/fs_particle.bin.h +++ b/3rdparty/bgfx/examples/common/ps/fs_particle.bin.h @@ -1,237 +1,263 @@ -static const uint8_t fs_particle_glsl[403] = +static const uint8_t fs_particle_glsl[389] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x73, 0x01, 0x00, 0x00, 0x76, // Color......s...v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // arying highp vec - 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary - 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, // ing highp vec4 v - 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif - 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, // orm sampler2D s_ - 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // texColor;.void m - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, // ain ().{. lowp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // vec4 rgba_1;. l - 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec4 tmpvar_ - 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, // 2;. tmpvar_2 = - 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, // texture2D (s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // Color, v_texcoor - 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, // d0.xy);. rgba_1 - 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // .xyz = ((tmpvar_ - 0x32, 0x2e, 0x78, 0x78, 0x78, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // 2.xxx * v_color0 - 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // .xyz) * (tmpvar_ - 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, // 2.x * v_color0.w - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, // ));. rgba_1.w = - 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, // ((tmpvar_2.x * - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, // v_color0.w) * (1 - 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // .0 - v_texcoord0 - 0x2e, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // .z));. gl_FragC - 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, // olor = rgba_1;.} - 0x0a, 0x0a, 0x00, // ... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, // ...]...varying v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, // ec4 v_color0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // rying vec4 v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // coord0;.uniform + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // sampler2D s_texC + 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // olor;.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x67, 0x62, 0x61, // ().{. vec4 rgba + 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // _1;. vec4 tmpva + 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, // r_2;. tmpvar_2 + 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, // = texture2D (s_t + 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // exColor, v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, // ord0.xy);. rgba + 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // _1.xyz = ((tmpva + 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x78, 0x78, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // r_2.xxx * v_colo + 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // r0.xyz) * (tmpva + 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r_2.x * v_color0 + 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x2e, 0x77, // .w));. rgba_1.w + 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, // = ((tmpvar_2.x + 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, // * v_color0.w) * + 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // (1.0 - v_texcoor + 0x64, 0x30, 0x2e, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // d0.z));. gl_Fra + 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x3b, // gColor = rgba_1; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; -static const uint8_t fs_particle_spv[1414] = +static const uint8_t fs_particle_essl[411] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x74, 0x05, 0x00, 0x00, 0x03, 0x02, // FSH.......t..... - 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, // #............... - 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, // ..GLSL.std.450.. - 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ - 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, // ..........main.. - 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x10, 0x00, // ..i...l...w..... - 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, // ................ - 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma - 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x42, 0x67, // in............Bg - 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, 0x00, 0x06, 0x00, // fxSampler2D..... - 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, // ..........m_samp - 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, // ler............. - 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // ..m_texture..... - 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // .. ...s_texColor - 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......"...s_texC - 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x00, // olorSampler..... - 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ..%...s_texColor - 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x69, 0x00, // Texture.......i. - 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // ..v_color0...... - 0x05, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // ..l...v_texcoord - 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x77, 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // 0.....w...bgfx_F - 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ragData0..G...%. - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x25, 0x00, // ..".......G...%. - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, // ..!.......G...i. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, // ..........G...l. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x77, 0x00, // ..........G...w. - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..!............. - 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. . - 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, // ................ - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ......... - 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, // ......;....... . - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, // ...... ...!..... - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, // ......;...!...". - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...$..... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, // ......;...$...%. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, // ..........1..... - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ......J......... - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, // ..+......._..... - 0x80, 0x3f, 0x20, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, // .? ...h......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...h...i..... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x00, // ..;...h...l..... - 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, // .. ...v......... - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x03, 0x00, // ..;...v...w..... - 0x00, 0x00, 0x2e, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x36, 0x00, // ..............6. - 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..........=..... - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..#..."...=..... - 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, // ..&...%...P..... - 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..'...#...&...>. - 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // .. ...'...=..... - 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, // ..j...i...=..... - 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, // ..m...l...=..... - 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ...... ...Q..... - 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x6d, 0x00, // ..O...........m. - 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x00, // ..m...........V. - 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xbe, 0x00, // ..1............. - 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xb9, 0x00, // ..W............. - 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x97, 0x00, // ......O...J..... - 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x99, 0x00, // ......O...J..... - 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..j...j......... - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x9a, 0x00, // ..........J..... - 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, // ................ - 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9c, 0x00, // ..J............. - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x6a, 0x00, // ..Q...........j. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xa0, 0x00, // ..........J..... - 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, 0x00, // ..........O..... - 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q. - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x6a, 0x00, // ..Q...........j. - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa7, 0x00, // ................ - 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q..... - 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x83, 0x00, // ......m......... - 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0xa9, 0x00, // .........._..... - 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xa7, 0x00, // ................ - 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc6, 0x00, // ......R......... - 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..............>. - 0x03, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..w...........8. - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor....... + 0x00, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // ...s...varying h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ighp vec4 v_colo + 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, // r0;.varying high + 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // p vec4 v_texcoor + 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, // d0;.uniform samp + 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // ler2D s_texColor + 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x67, 0x62, // . lowp vec4 rgb + 0x61, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // a_1;. lowp vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // var_2 = texture2 + 0x44, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, // D (s_texColor, v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, // _texcoord0.xy);. + 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, // rgba_1.xyz = ( + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x78, 0x78, 0x20, 0x2a, 0x20, // (tmpvar_2.xxx * + 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, // v_color0.xyz) * + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x76, 0x5f, // (tmpvar_2.x * v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, // color0.w));. rg + 0x62, 0x61, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // ba_1.w = ((tmpva + 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r_2.x * v_color0 + 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x76, 0x5f, 0x74, // .w) * (1.0 - v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // excoord0.z));. + 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x72, // gl_FragColor = r + 0x67, 0x62, 0x61, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // gba_1;.}... }; -static const uint8_t fs_particle_dx9[328] = +static const uint8_t fs_particle_spv[1303] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, // Color0.....(.... - 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, // ..... .CTAB....S - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, // ................ - 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ...L...0........ - 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...<.......s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // Color........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // .......ps_3_0.Mi - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL - 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler - 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, // 10.1..Q........ - 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, // ..?............. - 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, // ................ - 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, // ................ - 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, // ...B............ - 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // ................ - 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x54, 0x80, 0x00, // .............T.. - 0x00, 0x93, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, // ................ - 0x00, 0xff, 0x90, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x01, // ................ - 0x00, 0xaa, 0x91, 0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, // .............U.. - 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ........ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // _texColor0...... + 0x02, 0x1a, 0x00, 0xec, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0a, // .........#...... + 0x00, 0x08, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, // ...........GLSL. + 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, // std.450......... + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x6d, // ...main....j...m + 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, // ...p...}........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, // ................ + 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, // ...........main. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x23, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, // .......#...s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, // ColorSampler.... + 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // ...&...s_texColo + 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x6a, // rTexture.......j + 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, // ...gl_FragCoord. + 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // .......m...v_col + 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x76, // or0........p...v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x7d, // _texcoord0.....} + 0x00, 0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, // ...bgfx_FragData + 0x30, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // 0..G...#...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, // ...G...#...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, // ...G...&...".... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, // ...G...&...!.... + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, // ...G...j........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...m........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, // ...G...p........ + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, // ...G...}........ + 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, // ...........!.... + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, // ................ + 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, // ....... ........ + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, // ................ + 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, // ............... + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, // ..."...........; + 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // ..."...#....... + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, // ...%...........; + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, // ...%...&........ + 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x4b, // ...2...........K + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, // ...........+.... + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x20, 0x00, 0x04, 0x00, 0x69, // ...`......? ...i + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, // ...........;...i + 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, // ...j.......;...i + 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, // ...m.......;...i + 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7c, // ...p....... ...| + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7c, // ...........;...| + 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x03, 0x00, 0x0d, // ...}............ + 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, // .......6........ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, // ................ + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, // ...=.......$...# + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, // ...=.......'...& + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6d, // ...=.......n...m + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, // ...=.......q...p + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x71, // ...O...........q + 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, // ...q...........V + 0x00, 0x05, 0x00, 0x32, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, // ...2.......'...$ + 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc5, // ...W............ + 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xa1, // .......O...K.... + 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xa3, // .......O...K.... + 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ...n...n........ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xa4, // ...........K.... + 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, // ................ + 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa6, // ...K............ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x6e, // ...Q...........n + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xaa, // ...........K.... + 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x09, 0x00, 0x0d, // ...........O.... + 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, // ...............Q + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x6e, // ...Q...........n + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb1, // ................ + 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, // ...........Q.... + 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x83, // .......q........ + 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xb3, // ...........`.... + 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xb1, // ................ + 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xd2, // .......R........ + 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, // ...............> + 0x00, 0x03, 0x00, 0x7d, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, // ...}...........8 + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ....... }; -static const uint8_t fs_particle_dx11[519] = +static const uint8_t fs_particle_dx9[336] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, // FSH........s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x44, // Color0.........D - 0x58, 0x42, 0x43, 0xdd, 0x04, 0xf1, 0x4a, 0xaa, 0xb0, 0xdf, 0xe0, 0xf5, 0x18, 0x2f, 0x3b, 0x6e, // XBC...J....../;n - 0xa9, 0x0e, 0x0a, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, // ..............., - 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, // ...........ISGNl - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, // ...........P.... - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, // ...........b.... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, // ................ - 0x07, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ...SV_POSITION.C - 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, // OLOR.TEXCOORD..O - 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, // .......SV_TARGET - 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x08, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x42, // ...SHDR....@...B - 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, // ...Z....`......X - 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, // ....p......UU..b - 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, // ...........b...r - 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, // .......e.... ... - 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, // ...h.......E.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, // .......F.......F - 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ~.......`......8 - 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ..."............ - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, // ...........8.... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, // .......F.......6 - 0x19, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x20, 0x10, 0x00, 0x00, // .......8...r ... - 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x1f, 0x10, 0x00, 0x01, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, // .......".......* - 0x10, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, // ...A........@... - 0x00, 0x80, 0x3f, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ..?8.... ....... - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, // ...............> - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // ....... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x43, // ...(......... .C + 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x01, // TAB....S........ + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, // ...........L...0 + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, // ...........<.... + 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor... + 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, // ...............p + 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, // s_3_0.Microsoft + 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, // (R) HLSL Shader + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, // Compiler 10.1..Q + 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........?..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, // ................ + 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, // ...........B.... + 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x0f, 0x80, 0x00, 0x00, 0x54, 0x80, 0x00, 0x00, 0x93, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, // .....T.......... + 0x08, 0x07, 0x80, 0x00, 0x00, 0xf9, 0x80, 0x00, 0x00, 0xff, 0x90, 0x02, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xaa, 0x91, 0x05, 0x00, 0x00, 0x03, 0x00, // ................ + 0x08, 0x08, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // .....U.......... }; -static const uint8_t fs_particle_mtl[808] = +static const uint8_t fs_particle_dx11[548] = { - 0x46, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x75, 0x73, // FSH...........us - 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me - 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // . float4 v_colo - 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, // r0;. float4 v_t - 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // excoord0;.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // rOutput {. floa - 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // t4 gl_FragColor; - 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.struct xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, // tlShaderUniform - 0x7b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // {.};.fragment xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, // atMtlShaderOutpu - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, // t xlatMtlMain (x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, // latMtlShaderInpu - 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, // t _mtl_i [[stage - 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, // _in]], constant - 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, // xlatMtlShaderUni - 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, // form& _mtl_u [[b - 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, // uffer(0)]]. , - 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texture2d<float - 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, // > s_texColor [[t - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, // exture(0)]], sam - 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, // pler _mtlsmp_s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, // exColor [[sample - 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, // r(0)]]).{. xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, // MtlShaderOutput - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // _mtl_o;. float4 - 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, // rgba_1 = 0;. f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // loat4 tmpvar_2 = - 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // 0;. tmpvar_2 = - 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, // s_texColor.samp - 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, // le(_mtlsmp_s_tex - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, // Color, (float2)( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _mtl_i.v_texcoor - 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // d0.xy));. rgba_ - 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 1.xyz = ((tmpvar - 0x5f, 0x32, 0x2e, 0x78, 0x78, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // _2.xxx * _mtl_i. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, // v_color0.xyz) * - 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x6d, // (tmpvar_2.x * _m - 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, // tl_i.v_color0.w) - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, // );. rgba_1.w = - 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x5f, // ((tmpvar_2.x * _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, // mtl_i.v_color0.w - 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // ) * (1.0 - _mtl_ - 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x7a, 0x29, // i.v_texcoord0.z) - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, // );. _mtl_o.gl_F - 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, // ragColor = rgba_ - 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // 1;. return _mtl - 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _o;.}... + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, // _texColor0...... + 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, // ....s_texColor0. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ............DXBC + 0xdd, 0x04, 0xf1, 0x4a, 0xaa, 0xb0, 0xdf, 0xe0, 0xf5, 0x18, 0x2f, 0x3b, 0x6e, 0xa9, 0x0e, 0x0a, // ...J....../;n... + 0x01, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ............,... + 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // ........ISGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, // R.TEXCOORD..OSGN + 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // ,........... ... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, // ....SV_TARGET... + 0x53, 0x48, 0x44, 0x52, 0x08, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, // SHDR....@...B... + 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, // Z....`......X... + 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, // .p......UU..b... + 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........b...r... + 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....e.... ...... + 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x09, 0xf2, 0x00, 0x10, 0x00, // h.......E....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, // ....F.......F~.. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, // .....`......8... + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // "............... + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xf2, 0x00, 0x10, 0x00, // ........8....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x19, 0x10, 0x00, // ....F.......6... + 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8...r ...... + 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x1f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x10, 0x80, // ....".......*... + 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, // A........@.....? + 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, // 8.... .......... + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ............>... + 0x00, 0x00, 0x00, 0x00, // .... +}; +static const uint8_t fs_particle_mtl[856] = +{ + 0x46, 0x53, 0x48, 0x0b, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x73, // FSH............s + 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // _texColorSampler + 0x11, 0x01, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x73, 0x5f, 0x74, 0x65, 0x78, // ...........s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x11, 0x01, 0xff, 0xff, // ColorTexture.... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // .......s_texColo + 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x02, 0x00, 0x00, 0x23, // r..............# + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, // include <metal_s + 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, // tdlib>.#include + 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, // <simd/simd.h>..u + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, // sing namespace m + 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // etal;..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x67, 0x66, 0x78, 0x5f, // float4 bgfx_ + 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, // FragData0 [[colo + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, // r(0)]];.};..stru + 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, // ct xlatMtlMain_i + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, // n.{. float4 v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, // _color0 [[user(l + 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ocn0)]];. flo + 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // at4 v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, // .};..fragment xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, // atMtlMain_out xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // atMtlMain(xlatMt + 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, // lMain_in in [[st + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, // age_in]], textur + 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, // e2d<float> s_tex + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, // Color [[texture( + 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x73, 0x5f, // 0)]], sampler s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, // texColorSampler + 0x5b, 0x5b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, // [[sampler(0)]]). + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // {. xlatMtlMai + 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, // n_out out = {};. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x39, 0x36, 0x20, // float4 _196 + 0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, // = s_texColor.sam + 0x70, 0x6c, 0x65, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, // ple(s_texColorSa + 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // mpler, in.v_texc + 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, // oord0.xy);. f + 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x5f, // loat3 _167 = ((_ + 0x31, 0x39, 0x36, 0x2e, 0x78, 0x78, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, // 196.xxx * in.v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x39, // olor0.xyz) * _19 + 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // 6.x) * in.v_colo + 0x72, 0x30, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // r0.w;. float4 + 0x20, 0x5f, 0x32, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, // _207 = float4(_ + 0x31, 0x36, 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x31, 0x36, 0x37, 0x2e, 0x79, 0x2c, 0x20, 0x5f, // 167.x, _167.y, _ + 0x31, 0x36, 0x37, 0x2e, 0x7a, 0x2c, 0x20, 0x5f, 0x31, 0x39, 0x36, 0x2e, 0x78, 0x29, 0x3b, 0x0a, // 167.z, _196.x);. + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x30, 0x37, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, // _207.w = (_1 + 0x39, 0x36, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // 96.x * in.v_colo + 0x72, 0x30, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x69, // r0.w) * (1.0 - i + 0x6e, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x7a, 0x29, // n.v_texcoord0.z) + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, // ;. out.bgfx_F + 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x37, 0x3b, // ragData0 = _207; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, // . return out; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, 0x00, 0x20, 0x00, // .}.... . }; extern const uint8_t* fs_particle_pssl; extern const uint32_t fs_particle_pssl_size; diff --git a/3rdparty/bgfx/examples/common/ps/fs_particle.sc b/3rdparty/bgfx/examples/common/ps/fs_particle.sc index 486a7cdff18..f8fc5f27736 100644 --- a/3rdparty/bgfx/examples/common/ps/fs_particle.sc +++ b/3rdparty/bgfx/examples/common/ps/fs_particle.sc @@ -1,8 +1,8 @@ $input v_color0, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/ps/makefile b/3rdparty/bgfx/examples/common/ps/makefile index 72fbea92955..554063e5829 100644 --- a/3rdparty/bgfx/examples/common/ps/makefile +++ b/3rdparty/bgfx/examples/common/ps/makefile @@ -1,9 +1,9 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # -include ../../../../bgfx/scripts/shader-embeded.mk +include ../../../scripts/shader-embeded.mk rebuild: @make -s --no-print-directory clean all diff --git a/3rdparty/bgfx/examples/common/ps/particle_system.cpp b/3rdparty/bgfx/examples/common/ps/particle_system.cpp index c7a57d5b0fd..721779f1123 100644 --- a/3rdparty/bgfx/examples/common/ps/particle_system.cpp +++ b/3rdparty/bgfx/examples/common/ps/particle_system.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx/bgfx.h> @@ -37,7 +37,7 @@ struct PosColorTexCoord0Vertex static void init() { - ms_decl + ms_layout .begin() .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) @@ -45,10 +45,10 @@ struct PosColorTexCoord0Vertex .end(); } - static bgfx::VertexDecl ms_decl; + static bgfx::VertexLayout ms_layout; }; -bgfx::VertexDecl PosColorTexCoord0Vertex::ms_decl; +bgfx::VertexLayout PosColorTexCoord0Vertex::ms_layout; void EmitterUniforms::reset() { @@ -190,7 +190,7 @@ namespace ps m_dt = 0.0f; m_uniforms.reset(); m_num = 0; - bx::memSet(&m_aabb, 0, sizeof(Aabb) ); + bx::memSet(&m_aabb, 0, sizeof(bx::Aabb) ); m_rng.reset(); } @@ -248,7 +248,7 @@ namespace ps Particle& particle = m_particles[m_num]; m_num++; - bx::Vec3 pos; + bx::Vec3 pos(bx::init::None); switch (m_shape) { default: @@ -281,7 +281,7 @@ namespace ps break; } - bx::Vec3 dir; + bx::Vec3 dir(bx::init::None); switch (m_direction) { default: @@ -329,7 +329,7 @@ namespace ps bx::EaseFn easeBlend = bx::getEaseFunc(m_uniforms.m_easeBlend); bx::EaseFn easeScale = bx::getEaseFunc(m_uniforms.m_easeScale); - Aabb aabb = + bx::Aabb aabb = { { bx::kInfinity, bx::kInfinity, bx::kInfinity }, { -bx::kInfinity, -bx::kInfinity, -bx::kInfinity }, @@ -375,32 +375,37 @@ namespace ps const bx::Vec3 vdir = { _mtxView[1]*scale, _mtxView[5]*scale, _mtxView[9]*scale }; PosColorTexCoord0Vertex* vertex = &_outVertices[current*4]; - bx::store(&vertex->m_x, bx::sub(bx::sub(pos, udir), vdir) ); - aabbExpand(aabb, &vertex->m_x); + + const bx::Vec3 ul = bx::sub(bx::sub(pos, udir), vdir); + bx::store(&vertex->m_x, ul); + aabbExpand(aabb, ul); vertex->m_abgr = abgr; vertex->m_u = _uv[0]; vertex->m_v = _uv[1]; vertex->m_blend = blend; ++vertex; - bx::store(&vertex->m_x, bx::sub(bx::add(pos, udir), vdir) ); - aabbExpand(aabb, &vertex->m_x); + const bx::Vec3 ur = bx::sub(bx::add(pos, udir), vdir); + bx::store(&vertex->m_x, ur); + aabbExpand(aabb, ur); vertex->m_abgr = abgr; vertex->m_u = _uv[2]; vertex->m_v = _uv[1]; vertex->m_blend = blend; ++vertex; - bx::store(&vertex->m_x, bx::add(bx::add(pos, udir), vdir) ); - aabbExpand(aabb, &vertex->m_x); + const bx::Vec3 br = bx::add(bx::add(pos, udir), vdir); + bx::store(&vertex->m_x, br); + aabbExpand(aabb, br); vertex->m_abgr = abgr; vertex->m_u = _uv[2]; vertex->m_v = _uv[3]; vertex->m_blend = blend; ++vertex; - bx::store(&vertex->m_x, bx::add(bx::sub(pos, udir), vdir) ); - aabbExpand(aabb, &vertex->m_x); + const bx::Vec3 bl = bx::add(bx::sub(pos, udir), vdir); + bx::store(&vertex->m_x, bl); + aabbExpand(aabb, bl); vertex->m_abgr = abgr; vertex->m_u = _uv[0]; vertex->m_v = _uv[3]; @@ -420,7 +425,7 @@ namespace ps bx::RngMwc m_rng; EmitterUniforms m_uniforms; - Aabb m_aabb; + bx::Aabb m_aabb; Particle* m_particles; uint32_t m_num; @@ -453,7 +458,7 @@ namespace ps m_num = 0; - s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Sampler); m_texture = bgfx::createTexture2D( SPRITE_TEXTURE_SIZE , SPRITE_TEXTURE_SIZE @@ -530,7 +535,7 @@ namespace ps bgfx::TransientVertexBuffer tvb; bgfx::TransientIndexBuffer tib; - const uint32_t numVertices = bgfx::getAvailTransientVertexBuffer(m_num*4, PosColorTexCoord0Vertex::ms_decl); + const uint32_t numVertices = bgfx::getAvailTransientVertexBuffer(m_num*4, PosColorTexCoord0Vertex::ms_layout); const uint32_t numIndices = bgfx::getAvailTransientIndexBuffer(m_num*6); const uint32_t max = bx::uint32_min(numVertices/4, numIndices/6); BX_WARN(m_num == max @@ -542,7 +547,7 @@ namespace ps if (0 < max) { bgfx::allocTransientBuffers(&tvb - , PosColorTexCoord0Vertex::ms_decl + , PosColorTexCoord0Vertex::ms_layout , max*4 , &tib , max*6 @@ -621,7 +626,7 @@ namespace ps void updateEmitter(EmitterHandle _handle, const EmitterUniforms* _uniforms) { - BX_CHECK(m_emitterAlloc.isValid(_handle.idx) + BX_ASSERT(isValid(_handle) , "destroyEmitter handle %d is not valid." , _handle.idx ); @@ -638,9 +643,9 @@ namespace ps } } - void getAabb(EmitterHandle _handle, Aabb& _outAabb) + void getAabb(EmitterHandle _handle, bx::Aabb& _outAabb) { - BX_CHECK(m_emitterAlloc.isValid(_handle.idx) + BX_ASSERT(isValid(_handle) , "getAabb handle %d is not valid." , _handle.idx ); @@ -649,7 +654,7 @@ namespace ps void destroyEmitter(EmitterHandle _handle) { - BX_CHECK(m_emitterAlloc.isValid(_handle.idx) + BX_ASSERT(isValid(_handle) , "destroyEmitter handle %d is not valid." , _handle.idx ); @@ -725,7 +730,7 @@ void psUpdateEmitter(EmitterHandle _handle, const EmitterUniforms* _uniforms) s_ctx.updateEmitter(_handle, _uniforms); } -void psGetAabb(EmitterHandle _handle, Aabb& _outAabb) +void psGetAabb(EmitterHandle _handle, bx::Aabb& _outAabb) { s_ctx.getAabb(_handle, _outAabb); } diff --git a/3rdparty/bgfx/examples/common/ps/particle_system.h b/3rdparty/bgfx/examples/common/ps/particle_system.h index 36659ef5dad..38c124ed975 100644 --- a/3rdparty/bgfx/examples/common/ps/particle_system.h +++ b/3rdparty/bgfx/examples/common/ps/particle_system.h @@ -1,17 +1,16 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef PARTICLE_SYSTEM_H_HEADER_GUARD #define PARTICLE_SYSTEM_H_HEADER_GUARD #include <bx/allocator.h> +#include <bx/bounds.h> #include <bx/easing.h> #include <bx/rng.h> -#include "../bounds.h" - struct EmitterHandle { uint16_t idx; }; struct EmitterSpriteHandle { uint16_t idx; }; @@ -92,7 +91,7 @@ EmitterHandle psCreateEmitter(EmitterShape::Enum _shape, EmitterDirection::Enum void psUpdateEmitter(EmitterHandle _handle, const EmitterUniforms* _uniforms = NULL); /// -void psGetAabb(EmitterHandle _handle, Aabb& _outAabb); +void psGetAabb(EmitterHandle _handle, bx::Aabb& _outAabb); /// void psDestroyEmitter(EmitterHandle _handle); diff --git a/3rdparty/bgfx/examples/common/ps/vs_particle.bin.h b/3rdparty/bgfx/examples/common/ps/vs_particle.bin.h index 02d9a5b3589..9a7638dc0a8 100644 --- a/3rdparty/bgfx/examples/common/ps/vs_particle.bin.h +++ b/3rdparty/bgfx/examples/common/ps/vs_particle.bin.h @@ -1,71 +1,101 @@ -static const uint8_t vs_particle_glsl[420] = +static const uint8_t vs_particle_glsl[386] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x7f, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ....attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 a_color - 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, // 0;.attribute hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // hp vec3 a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // on;.attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ghp vec4 a_texco - 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // ord0;.varying hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ghp vec4 v_color - 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.varying highp - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec4 v_texcoord - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp - 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve - 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz - 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, // = a_position;. - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, // gl_Position = (u - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, // _modelViewProj * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // tmpvar_1);. v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color0 = a_color - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // 0;. v_texcoord0 - 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // = a_texcoord0;. - 0x7d, 0x0a, 0x0a, 0x00, // }... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ........U...attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // ibute vec4 a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, // or0;.attribute v + 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // ec3 a_position;. + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // attribute vec4 a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // _texcoord0;.vary + 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color + 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // 0;.varying vec4 + 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // v_texcoord0;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl + 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m + 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, // mpvar_1);. v_co + 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // lor0 = a_color0; + 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, // . v_texcoord0 = + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, // a_texcoord0;.}. + 0x0a, 0x00, // .. }; -static const uint8_t vs_particle_spv[1250] = +static const uint8_t vs_particle_essl[428] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xb4, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, // ......#......... - 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, // ........GLSL.std - 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // .450............ - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ................ - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // main....<...@... - 0x43, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, // C...N...Q...T... - 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ................ - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, // ....main........ - 0x24, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x07, 0x00, // $...$Global..... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, // ............attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0;.attri + 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // bute highp vec3 + 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ibute highp vec4 + 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, // a_texcoord0;.va + 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // rying highp vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // v_color0;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, // ng highp vec4 v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // texcoord0;.unifo + 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, // rm highp mat4 u_ + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, // modelViewProj;.v + 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. + 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // highp vec4 tmpva + 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. + 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 1.0;. tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // r_1.xyz = a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // tion;. gl_Posit + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // ion = (u_modelVi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // 1);. v_color0 = + 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, // a_color0;. v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // excoord0 = a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // coord0;.}... +}; +static const uint8_t vs_particle_spv[1222] = +{ + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, // ..............#. + 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........n....... + 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, // GLSL.std.450.... + 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, // ........main.... + 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, // 5...9...<...G... + 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, // J...M........... + 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, // ............main + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x24, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x69, 0x66, // ........$...Unif + 0x6f, 0x72, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, // ormBlock........ 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // $.......u_modelV 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x05, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, // iewProj.....&... - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........<...a_co - 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, // lor0........@... + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x63, 0x6f, // ........5...a_co + 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, // lor0........9... 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, // a_position...... - 0x43, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // C...a_texcoord0. - 0x05, 0x00, 0x0a, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....N...@entryPo + 0x3c, 0x00, 0x00, 0x00, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, // <...a_texcoord0. + 0x05, 0x00, 0x0a, 0x00, 0x47, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, // ....G...@entryPo 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // intOutput.gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x51, 0x00, 0x00, 0x00, // ition.......Q... + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x00, 0x4a, 0x00, 0x00, 0x00, // ition.......J... 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, // @entryPointOutpu 0x74, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, // t.v_color0...... - 0x54, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // T...@entryPointO + 0x4d, 0x00, 0x00, 0x00, 0x40, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, // M...@entryPointO 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // utput.v_texcoord 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0...H...$....... 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....H...$....... 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, // #.......H...$... 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, // ............G... 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, // $.......G...&... - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, // ".......G...<... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, // ........G...@... - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, // ........G...C... - 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, // ........G...N... - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, // ........G...Q... - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, // ........G...T... + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, // ".......G...&... + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, // !.......G...5... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, // ........G...9... + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, // ........G...<... + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, // ........G...G... + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, // ........G...J... + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, // ........G...M... 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, // !............... 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, // .... ........... @@ -78,156 +108,158 @@ static const uint8_t vs_particle_spv[1250] = 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // #... ...%....... 0x24, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, // $...;...%...&... 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .... ...'....... - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // #... ...;....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....;...;...<... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...?....... - 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ....;...?...@... - 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, // ....;...;...C... - 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...M....... - 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, // ....;...M...N... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, // ....;...M...Q... - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, // ....;...M...T... + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // #... ...4....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, // ....;...4...5... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // .... ...8....... + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // ....;...8...9... + 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // ....;...4...<... + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // .... ...F....... + 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, // ....;...F...G... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, // ....;...F...J... + 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, // ....;...F...M... 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // ....6........... 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, // ................ + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, // =.......6...5... + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, // =.......:...9... 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, // =.......=...<... - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // =.......A...@... - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, // =.......D...C... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, // Q.......l...A... - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, // ....Q.......m... - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // A.......Q....... - 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // n...A.......P... - 0x07, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, // ....o...l...m... - 0x6e, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, // n.......A...'... - 0x70, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // p...&.......=... - 0x23, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // #...q...p....... - 0x07, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, // ....r...o...q... - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, // Q.......y...r... - 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, // ............z... - 0x79, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, // y...R........... - 0x7a, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // z...r.......>... - 0x4e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, // N.......>...Q... - 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, // =...>...T...D... - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....8........... - 0x40, 0x00, // @. + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, // Q.......g...:... + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, // ....Q.......h... + 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, // :.......Q....... + 0x69, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, // i...:.......P... + 0x07, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, // ....j...g...h... + 0x69, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, // i.......A...'... + 0x6b, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, // k...&.......=... + 0x23, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, // #...l...k....... + 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, // ....m...j...l... + 0x3e, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, // >...G...m...>... + 0x4a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, // J...6...>...M... + 0x3d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x03, 0x05, 0x00, // =.......8....... + 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_particle_dx9[349] = +static const uint8_t vs_particle_dx9[357] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, // 8.........!.CTAB - 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, // ....W........... - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // ........P...0... - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........@....... - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, // u_modelViewProj. - 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, // vs_3_0.Microsoft - 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // (R) HLSL Shader - 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, // Compiler 10.1.. - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................ - 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ - 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ - 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, // ................ - 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ......U......... - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, // ................ - 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, // ................ - 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, // ................ - 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, // ................ - 0x02, 0x00, 0x0f, 0xe0, 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ............. + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // ........8....... + 0xfe, 0xff, 0x21, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, // ..!.CTAB....W... + 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, // ................ + 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, // P...0........... + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // @.......u_modelV + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, // iewProj......... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, // ........vs_3_0.M + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, // icrosoft (R) HLS + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, // L Shader Compile + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // r 10.1.......... + 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0xe0, // ................ + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, // ................ + 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, // ................ + 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0f, 0xe0, 0x02, 0x00, 0xe4, 0x90, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, // ..... }; -static const uint8_t vs_particle_dx11[622] = +static const uint8_t vs_particle_dx11[630] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x94, 0x83, 0x4e, 0xd2, 0x28, 0xd5, 0xeb, 0x87, // @...DXBC..N.(... - 0x3e, 0xf5, 0xa1, 0x65, 0x63, 0x87, 0x0e, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, // >..ec.......@... - 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, // ....,........... - 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ISGNh........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........V....... - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // ................ - 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // _............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, // ........COLOR.PO - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // SITION.TEXCOORD. - 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // OSGNl........... - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // P............... - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ - 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // b............... - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, // ........SV_POSIT - 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, // ION.COLOR.TEXCOO - 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x28, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, // RD..SHDR(...@... - 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // J...Y...F. ..... - 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ...._........... - 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // _...r......._... - 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, // ........g.... .. - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, // ........e.... .. - 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....e.... ...... - 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, // h.......8....... - 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....V.......F. . - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // ........2....... - 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... - 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, // ........@...DXBC + 0x94, 0x83, 0x4e, 0xd2, 0x28, 0xd5, 0xeb, 0x87, 0x3e, 0xf5, 0xa1, 0x65, 0x63, 0x87, 0x0e, 0xf7, // ..N.(...>..ec... + 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, // ....@.......,... + 0x9c, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, // ........ISGNh... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // V............... + 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........_....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // ................ + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, // COLOR.POSITION.T + 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, // EXCOORD.OSGNl... + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........P....... + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........b....... + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // ................ + 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, // SV_POSITION.COLO + 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, // R.TEXCOORD..SHDR + 0x28, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, // (...@...J...Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0xf2, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........_...r... + 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ...._........... + 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // g.... .......... + 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, // e.... ......e... + 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // . ......h....... + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ....F. ......... 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ - 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, // F............ .. - 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // ....F.......F. . - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, // ........6.... .. - 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, // ....F.......6... - 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // . ......F....... - 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // >...........@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....F. ......... + 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ........F....... + 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, // ..... ......F... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, // 6.... ......F... + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, // ....6.... ...... + 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, // F.......>....... + 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ....@. }; -static const uint8_t vs_particle_mtl[777] = +static const uint8_t vs_particle_mtl[842] = { - 0x56, 0x53, 0x48, 0x05, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0xe4, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, // ....using namesp - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // ace metal;.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // t xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // nput {. float4 - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, // a_color0 [[attri - 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // bute(0)]];. flo - 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, // at3 a_position [ - 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [attribute(1)]]; - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, // . float4 a_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // oord0 [[attribut - 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // e(2)]];.};.struc - 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO - 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // utput {. float4 - 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, // gl_Position [[p - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // osition]];. flo - 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, // at4 v_color0;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // float4 v_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // d0;.};.struct xl - 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, // atMtlShaderUnifo - 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, // rm {. float4x4 - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; - 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // .};.vertex xlatM - 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, // tlShaderOutput x - 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, // latMtlMain (xlat - 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, // MtlShaderInput _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, // mtl_i [[stage_in - 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, // ]], constant xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor - 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, // m& _mtl_u [[buff - 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, // er(0)]]).{. xla - 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, // tMtlShaderOutput - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // _mtl_o;. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // 4 tmpvar_1 = 0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, // tmpvar_1.w = 1 - 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // .0;. tmpvar_1.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, // yz = _mtl_i.a_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // sition;. _mtl_o - 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, // .gl_Position = ( - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // _mtl_u.u_modelVi - 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_ - 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, // 1);. _mtl_o.v_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, // olor0 = _mtl_i.a - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // _color0;. _mtl_ - 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, // o.v_texcoord0 = - 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // _mtl_i.a_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, // d0;. return _mt - 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // l_o;.}... + 0x56, 0x53, 0x48, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x23, 0x69, 0x6e, 0x63, // ............#inc + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, // lude <metal_stdl + 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, // ib>.#include <si + 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, // md/simd.h>..usin + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, // g namespace meta + 0x6c, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, // l;..struct _Glob + 0x61, 0x6c, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // al.{. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // 4 u_modelViewPro + 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, // j;.};..struct xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x0a, 0x7b, 0x0a, // atMtlMain_out.{. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, // float4 _entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, // olor0 [[user(loc + 0x6e, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // n0)]];. float + 0x34, 0x20, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, // 4 _entryPointOut + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, // put_v_texcoord0 + 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x31, 0x29, 0x5d, 0x5d, 0x3b, // [[user(locn1)]]; + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, // . float4 gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // osition [[positi + 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // on]];.};..struct + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x0a, // xlatMtlMain_in. + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, // {. float4 a_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // olor0 [[attribut + 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // e(0)]];. floa + 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, // t3 a_position [[ + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, // attribute(1)]];. + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // float4 a_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // coord0 [[attribu + 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x76, 0x65, 0x72, // te(2)]];.};..ver + 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, // tex xlatMtlMain_ + 0x6f, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x28, // out xlatMtlMain( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x20, 0x69, // xlatMtlMain_in i + 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, // n [[stage_in]], + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // constant _Global + 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, // & _mtl_u [[buffe + 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x6c, // r(0)]]).{. xl + 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, // atMtlMain_out ou + 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, // t = {};. out. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x6d, // gl_Position = _m + 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, // Proj * float4(in + 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x31, 0x2e, 0x30, // .a_position, 1.0 + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, 0x74, 0x72, // );. out._entr + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x5f, 0x63, // yPointOutput_v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // olor0 = in.a_col + 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x5f, 0x65, 0x6e, // or0;. out._en + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, // tryPointOutput_v + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, // _texcoord0 = in. + 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, // a_texcoord0;. + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // return out;.}.. + 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ........@. }; extern const uint8_t* vs_particle_pssl; extern const uint32_t vs_particle_pssl_size; diff --git a/3rdparty/bgfx/examples/common/ps/vs_particle.sc b/3rdparty/bgfx/examples/common/ps/vs_particle.sc index eed38abe4f2..446ac1d97b9 100644 --- a/3rdparty/bgfx/examples/common/ps/vs_particle.sc +++ b/3rdparty/bgfx/examples/common/ps/vs_particle.sc @@ -2,8 +2,8 @@ $input a_position, a_color0, a_texcoord0 $output v_color0, v_texcoord0 /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include <bgfx_shader.sh> diff --git a/3rdparty/bgfx/examples/common/shaderlib.sh b/3rdparty/bgfx/examples/common/shaderlib.sh index 2bcd43d7df2..d4953d04403 100644 --- a/3rdparty/bgfx/examples/common/shaderlib.sh +++ b/3rdparty/bgfx/examples/common/shaderlib.sh @@ -1,6 +1,6 @@ /* - * Copyright 2011-2018 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #ifndef __SHADERLIB_SH__ @@ -10,10 +10,10 @@ vec4 encodeRE8(float _r) { float exponent = ceil(log2(_r) ); return vec4(_r / exp2(exponent) - , 0.0 - , 0.0 - , (exponent + 128.0) / 255.0 - ); + , 0.0 + , 0.0 + , (exponent + 128.0) / 255.0 + ); } float decodeRE8(vec4 _re8) @@ -62,9 +62,9 @@ vec3 decodeNormalSphereMap(vec2 _encodedNormal) vec2 octahedronWrap(vec2 _val) { - // Reference: - // Octahedron normal vector encoding - // http://kriscg.blogspot.com/2014/04/octahedron-normal-vector-encoding.html + // Reference(s): + // - Octahedron normal vector encoding + // https://web.archive.org/web/20191027010600/https://knarkowicz.wordpress.com/2014/04/16/octahedron-normal-vector-encoding/comment-page-1/ return (1.0 - abs(_val.yx) ) * mix(vec2_splat(-1.0), vec2_splat(1.0), vec2(greaterThanEqual(_val.xy, vec2_splat(0.0) ) ) ); } @@ -89,9 +89,9 @@ vec3 decodeNormalOctahedron(vec2 _encodedNormal) vec3 convertRGB2XYZ(vec3 _rgb) { - // Reference: - // RGB/XYZ Matrices - // http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html + // Reference(s): + // - RGB/XYZ Matrices + // https://web.archive.org/web/20191027010220/http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html vec3 xyz; xyz.x = dot(vec3(0.4124564, 0.3575761, 0.1804375), _rgb); xyz.y = dot(vec3(0.2126729, 0.7151522, 0.0721750), _rgb); @@ -110,16 +110,18 @@ vec3 convertXYZ2RGB(vec3 _xyz) vec3 convertXYZ2Yxy(vec3 _xyz) { - // Reference: - // http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_xyY.html + // Reference(s): + // - XYZ to xyY + // https://web.archive.org/web/20191027010144/http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_xyY.html float inv = 1.0/dot(_xyz, vec3(1.0, 1.0, 1.0) ); return vec3(_xyz.y, _xyz.x*inv, _xyz.y*inv); } vec3 convertYxy2XYZ(vec3 _Yxy) { - // Reference: - // http://www.brucelindbloom.com/index.html?Eqn_xyY_to_XYZ.html + // Reference(s): + // - xyY to XYZ + // https://web.archive.org/web/20191027010036/http://www.brucelindbloom.com/index.html?Eqn_xyY_to_XYZ.html vec3 xyz; xyz.x = _Yxy.x*_Yxy.y/_Yxy.z; xyz.y = _Yxy.x; @@ -248,9 +250,9 @@ vec4 toFilmic(vec4 _rgba) vec3 toAcesFilmic(vec3 _rgb) { - // Reference: - // ACES Filmic Tone Mapping Curve - // https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ + // Reference(s): + // - ACES Filmic Tone Mapping Curve + // https://web.archive.org/web/20191027010704/https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ float aa = 2.51f; float bb = 0.03f; float cc = 2.43f; @@ -369,9 +371,9 @@ float random(vec2 _uv) vec3 fixCubeLookup(vec3 _v, float _lod, float _topLevelCubeSize) { - // Reference: - // Seamless cube-map filtering - // http://the-witness.net/news/2012/02/seamless-cube-map-filtering/ + // Reference(s): + // - Seamless cube-map filtering + // https://web.archive.org/web/20190411181934/http://the-witness.net/news/2012/02/seamless-cube-map-filtering/ float ax = abs(_v.x); float ay = abs(_v.y); float az = abs(_v.z); @@ -385,11 +387,45 @@ vec3 fixCubeLookup(vec3 _v, float _lod, float _topLevelCubeSize) vec2 texture2DBc5(sampler2D _sampler, vec2 _uv) { -#if BGFX_SHADER_LANGUAGE_HLSL && BGFX_SHADER_LANGUAGE_HLSL <= 3 +#if BGFX_SHADER_LANGUAGE_HLSL && BGFX_SHADER_LANGUAGE_HLSL <= 300 return texture2D(_sampler, _uv).yx; #else return texture2D(_sampler, _uv).xy; #endif } +mat3 cofactor(mat4 _m) +{ + // Reference: + // Cofactor of matrix. Use to transform normals. The code assumes the last column of _m is [0,0,0,1]. + // https://www.shadertoy.com/view/3s33zj + // https://github.com/graphitemaster/normals_revisited + return mat3( + _m[1][1]*_m[2][2]-_m[1][2]*_m[2][1], + _m[1][2]*_m[2][0]-_m[1][0]*_m[2][2], + _m[1][0]*_m[2][1]-_m[1][1]*_m[2][0], + _m[0][2]*_m[2][1]-_m[0][1]*_m[2][2], + _m[0][0]*_m[2][2]-_m[0][2]*_m[2][0], + _m[0][1]*_m[2][0]-_m[0][0]*_m[2][1], + _m[0][1]*_m[1][2]-_m[0][2]*_m[1][1], + _m[0][2]*_m[1][0]-_m[0][0]*_m[1][2], + _m[0][0]*_m[1][1]-_m[0][1]*_m[1][0] + ); +} + +float toClipSpaceDepth(float _depthTextureZ) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return _depthTextureZ * 2.0 - 1.0; +#else + return _depthTextureZ; +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) +{ + vec4 wpos = mul(_invViewProj, vec4(_clipPos, 1.0) ); + return wpos.xyz / wpos.w; +} + #endif // __SHADERLIB_SH__ diff --git a/3rdparty/bgfx/examples/makefile b/3rdparty/bgfx/examples/makefile index 9f1dd73b437..225ee641b31 100644 --- a/3rdparty/bgfx/examples/makefile +++ b/3rdparty/bgfx/examples/makefile @@ -1,11 +1,62 @@ # -# Copyright 2011-2018 Branimir Karadzic. All rights reserved. -# License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +# Copyright 2011-2022 Branimir Karadzic. All rights reserved. +# License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE # +all: + @make -s --no-print-directory build -C 01-cubes +#embedded @make -s --no-print-directory -C 02-metaballs + @make -s --no-print-directory build -C 03-raymarch + @make -s --no-print-directory build -C 04-mesh + @make -s --no-print-directory build -C 05-instancing + @make -s --no-print-directory build -C 06-bump + @make -s --no-print-directory build -C 07-callback + @make -s --no-print-directory build -C 08-update + @make -s --no-print-directory build -C 09-hdr +#embedded @make -s --no-print-directory build -C 10-font +#embedded @make -s --no-print-directory build -C 11-fontsdf + @make -s --no-print-directory build -C 12-lod + @make -s --no-print-directory build -C 13-stencil + @make -s --no-print-directory build -C 14-shadowvolumes + @make -s --no-print-directory build -C 15-shadowmaps-simple + @make -s --no-print-directory build -C 16-shadowmaps +#embedded @make -s --no-print-directory build -C 17-drawstress + @make -s --no-print-directory build -C 18-ibl + @make -s --no-print-directory build -C 19-oit +#embedded @make -s --no-print-directory build -C 20-nanovg + @make -s --no-print-directory build -C 21-deferred +#reused @make -s --no-print-directory build -C 22-windows + @make -s --no-print-directory build -C 23-vectordisplay + @make -s --no-print-directory build -C 24-nbody +#reused @make -s --no-print-directory build -C 25-c99 +#reused @make -s --no-print-directory build -C 26-occlusion + @make -s --no-print-directory build -C 27-terrain + @make -s --no-print-directory build -C 28-wireframe +#reused @make -s --no-print-directory build -C 29-debugdraw + @make -s --no-print-directory build -C 30-picking + @make -s --no-print-directory build -C 31-rsm +#reused @make -s --no-print-directory build -C 32-particles + @make -s --no-print-directory build -C 33-pom +#reused @make -s --no-print-directory build -C 34-mvs +#reused @make -s --no-print-directory build -C 35-dynamic + @make -s --no-print-directory build -C 36-sky +# @make -s --no-print-directory build -C 37-gpudrivenrendering + @make -s --no-print-directory build -C 38-bloom +# @make -s --no-print-directory build -C 39-assao + @make -s --no-print-directory build -C 40-svt + @make -s --no-print-directory build -C 41-tess + @make -s --no-print-directory build -C 42-bunnylod + @make -s --no-print-directory build -C 43-denoise + @make -s --no-print-directory build -C 44-sss + @make -s --no-print-directory build -C 45-bokeh + @make -s --no-print-directory build -C 46-fsr + @make -s --no-print-directory build -C 47-pixelformats + @make -s --no-print-directory build -C 48-drawindirect + @make -s --no-print-directory build -C 49-hextile + rebuild: @make -s --no-print-directory rebuild -C 01-cubes - @make -s --no-print-directory rebuild -C 02-metaballs +#embedded @make -s --no-print-directory rebuild -C 02-metaballs @make -s --no-print-directory rebuild -C 03-raymarch @make -s --no-print-directory rebuild -C 04-mesh @make -s --no-print-directory rebuild -C 05-instancing @@ -13,32 +64,50 @@ rebuild: @make -s --no-print-directory rebuild -C 07-callback @make -s --no-print-directory rebuild -C 08-update @make -s --no-print-directory rebuild -C 09-hdr -# @make -s --no-print-directory rebuild -C 10-font -# @make -s --no-print-directory rebuild -C 11-fontsdf +#embedded @make -s --no-print-directory rebuild -C 10-font +#embedded @make -s --no-print-directory rebuild -C 11-fontsdf @make -s --no-print-directory rebuild -C 12-lod @make -s --no-print-directory rebuild -C 13-stencil @make -s --no-print-directory rebuild -C 14-shadowvolumes @make -s --no-print-directory rebuild -C 15-shadowmaps-simple @make -s --no-print-directory rebuild -C 16-shadowmaps - @make -s --no-print-directory rebuild -C 17-drawstress +#embedded @make -s --no-print-directory rebuild -C 17-drawstress @make -s --no-print-directory rebuild -C 18-ibl @make -s --no-print-directory rebuild -C 19-oit -# @make -s --no-print-directory rebuild -C 20-nanovg +#embedded @make -s --no-print-directory rebuild -C 20-nanovg @make -s --no-print-directory rebuild -C 21-deferred +#reused @make -s --no-print-directory rebuild -C 22-windows @make -s --no-print-directory rebuild -C 23-vectordisplay @make -s --no-print-directory rebuild -C 24-nbody -# @make -s --no-print-directory rebuild -C 25-c99 -# @make -s --no-print-directory rebuild -C 26-occlusion +#reused @make -s --no-print-directory rebuild -C 25-c99 +#reused @make -s --no-print-directory rebuild -C 26-occlusion @make -s --no-print-directory rebuild -C 27-terrain @make -s --no-print-directory rebuild -C 28-wireframe +#reused @make -s --no-print-directory rebuild -C 29-debugdraw @make -s --no-print-directory rebuild -C 30-picking @make -s --no-print-directory rebuild -C 31-rsm +#reused @make -s --no-print-directory rebuild -C 32-particles @make -s --no-print-directory rebuild -C 33-pom -# @make -s --no-print-directory rebuild -C 34-mvs -# @make -s --no-print-directory rebuild -C 35-dynamic +#reused @make -s --no-print-directory rebuild -C 34-mvs +#reused @make -s --no-print-directory rebuild -C 35-dynamic @make -s --no-print-directory rebuild -C 36-sky # @make -s --no-print-directory rebuild -C 37-gpudrivenrendering @make -s --no-print-directory rebuild -C 38-bloom +# @make -s --no-print-directory rebuild -C 39-assao + @make -s --no-print-directory rebuild -C 40-svt + @make -s --no-print-directory rebuild -C 41-tess + @make -s --no-print-directory rebuild -C 42-bunnylod + @make -s --no-print-directory rebuild -C 43-denoise + @make -s --no-print-directory rebuild -C 44-sss + @make -s --no-print-directory rebuild -C 45-bokeh + @make -s --no-print-directory rebuild -C 46-fsr + @make -s --no-print-directory rebuild -C 47-pixelformats + @make -s --no-print-directory rebuild -C 48-drawindirect + @make -s --no-print-directory rebuild -C 49-hextile + +rebuild-embedded: + @make -s --no-print-directory rebuild -C 02-metaballs + @make -s --no-print-directory rebuild -C 17-drawstress @make -s --no-print-directory rebuild -C common/debugdraw @make -s --no-print-directory rebuild -C common/font @make -s --no-print-directory rebuild -C common/imgui diff --git a/3rdparty/bgfx/examples/runtime/font/NotoEmoji-Regular.ttf b/3rdparty/bgfx/examples/runtime/font/NotoEmoji-Regular.ttf Binary files differnew file mode 100644 index 00000000000..19b7badf4af --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/font/NotoEmoji-Regular.ttf diff --git a/3rdparty/bgfx/examples/runtime/font/glyph_long.png b/3rdparty/bgfx/examples/runtime/font/glyph_long.png Binary files differnew file mode 100644 index 00000000000..d405e403255 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/font/glyph_long.png diff --git a/3rdparty/bgfx/examples/runtime/font/glyph_space.png b/3rdparty/bgfx/examples/runtime/font/glyph_space.png Binary files differnew file mode 100644 index 00000000000..f51742c3299 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/font/glyph_space.png diff --git a/3rdparty/bgfx/examples/runtime/iOS-Info.plist b/3rdparty/bgfx/examples/runtime/ios-info.plist index f5f3fc1a2de..f5f3fc1a2de 100644 --- a/3rdparty/bgfx/examples/runtime/iOS-Info.plist +++ b/3rdparty/bgfx/examples/runtime/ios-info.plist diff --git a/3rdparty/bgfx/examples/runtime/meshes/bunny.bin b/3rdparty/bgfx/examples/runtime/meshes/bunny.bin Binary files differindex f0fed0880d0..ef3127bc740 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/bunny.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/bunny.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/bunny_decimated.bin b/3rdparty/bgfx/examples/runtime/meshes/bunny_decimated.bin Binary files differindex 176344675cf..58ec040be08 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/bunny_decimated.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/bunny_decimated.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/bunny_patched.bin b/3rdparty/bgfx/examples/runtime/meshes/bunny_patched.bin Binary files differindex e8645370ea9..3af10d214d8 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/bunny_patched.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/bunny_patched.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/column.bin b/3rdparty/bgfx/examples/runtime/meshes/column.bin Binary files differindex a58c780d121..3a9f3783f7e 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/column.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/column.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/hollowcube.bin b/3rdparty/bgfx/examples/runtime/meshes/hollowcube.bin Binary files differindex 1ed9d7cc9b2..43e4717df29 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/hollowcube.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/hollowcube.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/orb.bin b/3rdparty/bgfx/examples/runtime/meshes/orb.bin Binary files differindex ff8d16628a8..034ad075655 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/orb.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/orb.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/platform.bin b/3rdparty/bgfx/examples/runtime/meshes/platform.bin Binary files differindex de63c2457b8..6e5a46395a2 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/platform.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/platform.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/test_scene.bin b/3rdparty/bgfx/examples/runtime/meshes/test_scene.bin Binary files differindex bf234cb0b37..c7e7472d9b5 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/test_scene.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/test_scene.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/tree.bin b/3rdparty/bgfx/examples/runtime/meshes/tree.bin Binary files differindex aec00bfb2b5..cb3931b9560 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/tree.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/tree.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_1.bin b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_1.bin Binary files differindex 26ed0727b6c..7ee3b77c5b5 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_1.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_1.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_2.bin b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_2.bin Binary files differindex 97f939dbd3f..5c6398e6326 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_2.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod0_2.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_1.bin b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_1.bin Binary files differindex 563e82c917d..7f15af46711 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_1.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_1.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_2.bin b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_2.bin Binary files differindex 1983f836087..d4f48db0043 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_2.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod1_2.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_1.bin b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_1.bin Binary files differindex d2aa057f6ca..a61a7f86eb7 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_1.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_1.bin diff --git a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_2.bin b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_2.bin Binary files differindex 886d7b3bebe..91d37b78f7a 100644 --- a/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_2.bin +++ b/3rdparty/bgfx/examples/runtime/meshes/tree1b_lod2_2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_apply.bin Binary files differnew file mode 100644 index 00000000000..fdd6bb65f47 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_importance_map.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_importance_map.bin Binary files differnew file mode 100644 index 00000000000..fcc1c197a08 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_importance_map.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q0.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q0.bin Binary files differnew file mode 100644 index 00000000000..466468d2285 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q0.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q1.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q1.bin Binary files differnew file mode 100644 index 00000000000..fe8872a5413 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q2.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q2.bin Binary files differnew file mode 100644 index 00000000000..cd0a74de879 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin Binary files differnew file mode 100644 index 00000000000..ee238de05aa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q3base.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q3base.bin Binary files differnew file mode 100644 index 00000000000..aad9afd7ab5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_generate_q3base.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin Binary files differnew file mode 100644 index 00000000000..ce92e7a20f0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_apply.bin Binary files differnew file mode 100644 index 00000000000..460f8458816 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..f89ef75a761 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_half_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_half_apply.bin Binary files differnew file mode 100644 index 00000000000..ce6886e2148 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_non_smart_half_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_a.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_a.bin Binary files differnew file mode 100644 index 00000000000..b197c027b1e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_a.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_b.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_b.bin Binary files differnew file mode 100644 index 00000000000..bbd2dd23d08 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_postprocess_importance_map_b.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depth_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depth_mip.bin Binary files differnew file mode 100644 index 00000000000..901cfb04b48 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depth_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths.bin Binary files differnew file mode 100644 index 00000000000..a4a3c2eeecb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals.bin Binary files differnew file mode 100644 index 00000000000..58ee1ef28fa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals_half.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals_half.bin Binary files differnew file mode 100644 index 00000000000..0547b75c853 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_and_normals_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_half.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_half.bin Binary files differnew file mode 100644 index 00000000000..5c1859e873a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_prepare_depths_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..2b14e06adc8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_smart_blur_wide.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_smart_blur_wide.bin Binary files differnew file mode 100644 index 00000000000..5ad198f0a71 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_assao_smart_blur_wide.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_drawindirect.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_drawindirect.bin Binary files differnew file mode 100755 index 00000000000..5df326d7050 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_drawindirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_drawindirect_count.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_drawindirect_count.bin Binary files differnew file mode 100644 index 00000000000..33deac00875 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_drawindirect_count.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_bilinear_16.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_bilinear_16.bin Binary files differnew file mode 100644 index 00000000000..b6844ecdfcb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_bilinear_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_bilinear_32.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_bilinear_32.bin Binary files differnew file mode 100644 index 00000000000..b6844ecdfcb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_bilinear_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_easu_16.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_easu_16.bin Binary files differnew file mode 100644 index 00000000000..7631fd15125 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_easu_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_easu_32.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_easu_32.bin Binary files differnew file mode 100644 index 00000000000..3a2124a102a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_easu_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_rcas_16.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_rcas_16.bin Binary files differnew file mode 100644 index 00000000000..bc1eea9158e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_rcas_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_rcas_32.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_rcas_32.bin Binary files differnew file mode 100644 index 00000000000..46c1ba6ce05 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_fsr_rcas_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_copy_z.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_copy_z.bin Binary files differnew file mode 100644 index 00000000000..a46deb31ce7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_copy_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_downscale_hi_z.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_downscale_hi_z.bin Binary files differindex 2752459098c..242f5666fe6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_downscale_hi_z.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_downscale_hi_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_occlude_props.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_occlude_props.bin Binary files differindex e65b53dfac0..4573b98ac92 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_occlude_props.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_occlude_props.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_stream_compaction.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_stream_compaction.bin Binary files differindex 944ef164534..4fa810c525a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_stream_compaction.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_gdr_stream_compaction.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_indirect.bin Binary files differindex 9d76e2dca86..bf62923fe8b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_indirect.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_init_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_init_instances.bin Binary files differindex f6d19ff3704..e0bf8a661db 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_init_instances.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_init_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_init.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_init.bin Binary files differnew file mode 100644 index 00000000000..a577ac8fc7c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_init.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_lod.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_lod.bin Binary files differnew file mode 100644 index 00000000000..742890f486e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_lod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_update_draw.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_update_draw.bin Binary files differnew file mode 100644 index 00000000000..2eb6e5c8cce --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_update_draw.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_update_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_update_indirect.bin Binary files differnew file mode 100644 index 00000000000..466a05ab693 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_terrain_update_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update.bin Binary files differindex 7af1c161e82..6d6a6612c0b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update_instances.bin Binary files differindex 8079696a125..e546b214470 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update_instances.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/cs_update_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_albedo_output.bin Binary files differindex d48f03cd088..974de8bc91b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_assao_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_assao_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..d80c9be53ff --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_assao_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..d723252cf74 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bloom_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bloom_combine.bin Binary files differindex 86c11d50efe..2b41fef87bc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bloom_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bloom_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_copy.bin Binary files differnew file mode 100644 index 00000000000..40c1b942814 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..adfd0a11e02 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_combine.bin Binary files differnew file mode 100644 index 00000000000..0f459946b73 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_debug.bin Binary files differnew file mode 100644 index 00000000000..f5955d4127e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_downsample.bin Binary files differnew file mode 100644 index 00000000000..bebe7ebec75 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_second_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_second_pass.bin Binary files differnew file mode 100644 index 00000000000..0cda7938337 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_second_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_single_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_single_pass.bin Binary files differnew file mode 100644 index 00000000000..b77066a599f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_dof_single_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..41e5cd61afa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..2db9fef0d05 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..4f726b0187c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bokeh_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bump.bin Binary files differindex c6f5a6f8318..45117553f34 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..24a371dfa11 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_callback.bin Binary files differindex 4716b766f5b..24a371dfa11 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_cubes.bin Binary files differindex 2b9f62d1e75..470ed651b7d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_clear_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_clear_uav.bin Binary files differnew file mode 100644 index 00000000000..d2465220fa6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_clear_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_combine.bin Binary files differindex d1fa77c8ab6..731d23df3fc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_combine_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_combine_ta.bin Binary files differnew file mode 100644 index 00000000000..e4b07cd2294 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_combine_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug.bin Binary files differindex 12ee53584a9..69ea57862f5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin Binary files differindex 2b9f62d1e75..ad8da66e3c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug_ta.bin Binary files differnew file mode 100644 index 00000000000..5d2dc6f4aaa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_debug_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_geom.bin Binary files differindex c6e5ac9999e..04270173c45 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light.bin Binary files differindex e6ccaeca961..7548c331102 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light_ta.bin Binary files differnew file mode 100644 index 00000000000..1d177b1f1f1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light_uav.bin Binary files differnew file mode 100644 index 00000000000..7459536cbcd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_deferred_light_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_apply_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_apply_lighting.bin Binary files differnew file mode 100644 index 00000000000..9b13db3bd1e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_apply_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_copy.bin Binary files differnew file mode 100644 index 00000000000..40c1b942814 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..1b2c4923773 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..de874793df5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_spatial_3x3.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_spatial_3x3.bin Binary files differnew file mode 100644 index 00000000000..99927b4750a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_spatial_3x3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_spatial_5x5.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_spatial_5x5.bin Binary files differnew file mode 100644 index 00000000000..7c27045a794 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_spatial_5x5.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_temporal.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_temporal.bin Binary files differnew file mode 100644 index 00000000000..528198e68cf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_temporal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_txaa.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_txaa.bin Binary files differnew file mode 100644 index 00000000000..70da9caf9fb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_denoise_txaa.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_downsample.bin Binary files differindex 0d87efe69ee..7d2b8333948 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_downsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..025286af41c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..3112051930b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..6e6038619aa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_fsr_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_gdr_instanced_indirect_rendering.bin Binary files differindex 7d3b633a94c..4496ade1634 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_gdr_instanced_indirect_rendering.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_blur.bin Binary files differindex d4fee7f7c11..a4be7566d5e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_bright.bin Binary files differindex 1b6867a22af..11394ae56ca 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lum.bin Binary files differindex 19a90fc36da..5f70c006ca5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lumavg.bin Binary files differindex d716cbcc346..d3efc2a695e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_mesh.bin Binary files differindex 191f52f3c00..488489fb15e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_skybox.bin Binary files differindex b4a90881c6a..1b298d35503 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_tonemap.bin Binary files differindex ac44616a915..55d0931c148 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hextile.bin Binary files differnew file mode 100644 index 00000000000..30c4e7f669d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_mesh.bin Binary files differindex 0c0686c30a9..00ea80c62bd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_skybox.bin Binary files differindex 71b1c80dd45..1fadbb9f247 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_instancing.bin Binary files differindex 2b9f62d1e75..ad8da66e3c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_mesh.bin Binary files differindex 07b5a043c92..58c3cd73221 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit.bin Binary files differindex f02b7ff1a4c..28ce4241f45 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb.bin Binary files differindex 4fea6d1ad79..8aae251cbf1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_blit.bin Binary files differindex b4c5a1d36aa..044dd93c373 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate.bin Binary files differindex 1fa73b6c6d9..525c8a6eff6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate_blit.bin Binary files differindex 882e1c6e773..fb2048ca8e4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_oit_wb_separate_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_particle.bin Binary files differindex e5403c6d818..b5349cad0cc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_id.bin Binary files differindex fcac5047940..1131b5f76a0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_id.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_id.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_shaded.bin Binary files differindex bcf4af9a934..43fc4ef9725 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_pom.bin Binary files differindex e7f2edbfcf7..b77e785042c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_raymarching.bin Binary files differindex ecb5c631995..9aee69bdcbc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_combine.bin Binary files differindex 6ff24cf175e..ffe74bd5445 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_gbuffer.bin Binary files differindex 08ab7cd6046..439498419b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_lbuffer.bin Binary files differindex 758d3710d75..24b763040d1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_shadow.bin Binary files differindex dee777f1cc9..d52bd00dea5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_screen_space_shadows.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_screen_space_shadows.bin Binary files differnew file mode 100644 index 00000000000..db283942e57 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_screen_space_shadows.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_black.bin Binary files differindex 3c8438df3ff..98e9679bd9f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm.bin Binary files differindex dbf81e9af09..8dde3aa0bb0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_csm.bin Binary files differindex 8b003f70c2b..2a4d0066024 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear.bin Binary files differindex 2527026a758..5ccc2af143b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_csm.bin Binary files differindex 028de266e95..ff11d76db8f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_omni.bin Binary files differindex c752c64e62b..a1240ef2406 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_omni.bin Binary files differindex bc9918fabba..22bb46697ae 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_esm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard.bin Binary files differindex 87ae7ef43df..0c6eca273ab 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_csm.bin Binary files differindex f92a5a7296a..55d102a1c8b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear.bin Binary files differindex 2e51f9885be..4d4472dfef2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_csm.bin Binary files differindex 3271b349e08..f256e66c711 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_omni.bin Binary files differindex 4df2fa79e38..82cc1920dc6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_omni.bin Binary files differindex 19b926614d3..28262ca8019 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_hard_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf.bin Binary files differindex 2b4c048da9d..b1108309fbf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_csm.bin Binary files differindex 988d4f35adf..c5e379b0720 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear.bin Binary files differindex 5f2f3780192..44fb68691c7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_csm.bin Binary files differindex 2407c8c1e17..cb262b3357b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_omni.bin Binary files differindex 4f8bfc5108f..54b5e104794 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_omni.bin Binary files differindex e164bfad59f..50fde0f934f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_pcf_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm.bin Binary files differindex 8faed8186d1..8c6d5e26746 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_csm.bin Binary files differindex aa5f8f469a0..e935aff73b7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear.bin Binary files differindex 9430045991c..b32b0c3165d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_csm.bin Binary files differindex cb2331a579e..83b6a0e8b9a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_omni.bin Binary files differindex 13d958d9c97..983d56f4556 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_omni.bin Binary files differindex b71718bda3e..150b98ba00e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_lighting_vsm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_texture.bin Binary files differindex 95a3be93c02..96702e2ec68 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur.bin Binary files differindex 5544d1541f2..9b6ed603996 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur_vsm.bin Binary files differindex 0ef90508b8a..2c8d9fba416 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_hblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth.bin Binary files differindex c1c1ab2cd6f..a45d2e525b3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_linear.bin Binary files differindex c2227363ac9..db58239db46 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm.bin Binary files differindex a43066927ad..d0d4ceb7007 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm_linear.bin Binary files differindex b92459daa63..2905185464b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_packdepth_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_texture.bin Binary files differindex 12ee53584a9..9c86c1dbf12 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth.bin Binary files differindex 6c6eded5970..c4c4cc68533 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth_vsm.bin Binary files differindex 7bb83918872..f102ce70397 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_unpackdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur.bin Binary files differindex 5544d1541f2..9b6ed603996 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur_vsm.bin Binary files differindex 0ef90508b8a..2c8d9fba416 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowmaps_vblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_lighting.bin Binary files differindex 38943ad851d..3383a1b26a7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_texture.bin Binary files differindex 95a3be93c02..96702e2ec68 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackblank.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackblank.bin Binary files differindex 77c63305798..87d8e706133 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackcolor.bin Binary files differindex 0c04a1df8f2..b6f5521d0ba 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbackcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex1.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex1.bin Binary files differindex 4eb1929d549..c835b953fe1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex2.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex2.bin Binary files differindex 26c3e9ae821..5c9ba466e1e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svbacktex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontblank.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontblank.bin Binary files differindex f07ee8edcbd..c7c2b3118d4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontcolor.bin Binary files differindex 0c04a1df8f2..b6f5521d0ba 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfrontcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex1.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex1.bin Binary files differindex 4eb1929d549..c835b953fe1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex2.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex2.bin Binary files differindex 26c3e9ae821..5c9ba466e1e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svfronttex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svside.bin Binary files differindex ae0ab14bb50..01e65a1e508 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsideblank.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsideblank.bin Binary files differindex 94180da7744..f35fbd50078 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsideblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsideblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidecolor.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidecolor.bin Binary files differindex 19d143a848d..5ffeee79100 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidecolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidecolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidetex.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidetex.bin Binary files differindex 0e02bf1e66b..58aed2ed3e3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidetex.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_svsidetex.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture.bin Binary files differindex 12ee53584a9..9c86c1dbf12 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture_lighting.bin Binary files differindex c9db7cbb01e..0ba4a124246 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky.bin Binary files differindex efa83e430a5..e0a57fa7c45 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_color_banding_fix.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_color_banding_fix.bin Binary files differindex 4f27bda5fd2..cea5f3c105f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_color_banding_fix.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_color_banding_fix.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_landscape.bin Binary files differindex 86e0973aab0..24ebf30d3eb 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh.bin Binary files differindex 2b08d1b03c3..33bec766f88 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh_pd.bin Binary files differindex a099e576688..d1ee69e0229 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_mesh_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow.bin Binary files differindex 3c8438df3ff..32085af1cce 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow_pd.bin Binary files differindex b0b46163259..aa91b79e9f6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..8ab38ed8ee7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..b6db882c234 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..3bd5a442c8e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_unlit.bin Binary files differnew file mode 100644 index 00000000000..c47f1e731f5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sss_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_black.bin Binary files differindex 3c8438df3ff..98e9679bd9f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_lighting.bin Binary files differindex 77d57c6374d..8f9ca94e819 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_texture.bin Binary files differindex 95a3be93c02..96702e2ec68 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture.bin Binary files differindex 12ee53584a9..9c86c1dbf12 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture_lighting.bin Binary files differindex ab66d955539..ee07d6350b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain.bin Binary files differindex 677e9c936de..d9d6e9f6802 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..98e25f77fe4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain_render_normal.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain_render_normal.bin Binary files differnew file mode 100644 index 00000000000..1d09b149300 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_terrain_render_normal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_tree.bin Binary files differindex 324d8a20922..a566382b823 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update.bin Binary files differindex 712e1fe3763..63f886822c0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_3d.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_3d.bin Binary files differindex 7d5b72cc0db..4ea5a18609b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_3d.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_3d.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_cmp.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_cmp.bin Binary files differindex 02abe8cc6b3..92e6ebcf10b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_cmp.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_update_cmp.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_upsample.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_upsample.bin Binary files differindex f5743187cd4..98bddeb9363 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_upsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_upsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blit.bin Binary files differindex 37a29f4b46d..2b070e8fda4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blur.bin Binary files differindex cae0afbafc0..b10370fc8ab 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_fb.bin Binary files differindex 43bc241d0e8..003ac846700 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vt_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vt_mip.bin Binary files differnew file mode 100644 index 00000000000..455094899b7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vt_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vt_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vt_unlit.bin Binary files differnew file mode 100644 index 00000000000..3e149417a63 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_vt_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_mesh.bin Binary files differindex ff7c01cd0c3..5fba2483c65 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_wireframe.bin Binary files differindex abc5e081a97..61c940db257 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_albedo_output.bin Binary files differindex d878978bcff..0cdc2427c02 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_assao.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_assao.bin Binary files differnew file mode 100644 index 00000000000..15134f92288 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_assao.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..a4d2adc9b14 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..5d7a24a2de1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bokeh_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bokeh_screenquad.bin Binary files differnew file mode 100644 index 00000000000..6c9e1ce72ee --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bokeh_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump.bin Binary files differindex 8f0f9a6b858..91baf17bdaa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump_instanced.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump_instanced.bin Binary files differindex 1bb7658b7e9..2da859741fe 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump_instanced.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bump_instanced.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..0eefce4235e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_callback.bin Binary files differindex 4e788fddbf7..b2eb95d036b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_cubes.bin Binary files differindex ab87c4d38be..5cb0c42fd1c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_combine.bin Binary files differindex 8df2a6c91d2..22a962034a6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug.bin Binary files differindex 8df2a6c91d2..22a962034a6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin Binary files differindex ab87c4d38be..762007cc965 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_geom.bin Binary files differindex 8f0f9a6b858..76e7c73836c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_light.bin Binary files differindex 8df2a6c91d2..22a962034a6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..8ebcbd19aa6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_denoise_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_denoise_screenquad.bin Binary files differnew file mode 100644 index 00000000000..6c9e1ce72ee --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_denoise_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..8433b677c0e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fsr_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fsr_screenquad.bin Binary files differnew file mode 100644 index 00000000000..87db9fceadc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fsr_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fullscreen.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fullscreen.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fullscreen.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_fullscreen.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_instanced_indirect_rendering.bin Binary files differindex 0af85a6b5ac..16630195508 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_instanced_indirect_rendering.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_render_occlusion.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_render_occlusion.bin Binary files differindex 47146150d9c..f03f55930f3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_render_occlusion.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_gdr_render_occlusion.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_blur.bin Binary files differindex fdda8914fc8..c10d32ffdc0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_bright.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lum.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lumavg.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_mesh.bin Binary files differindex b80c79d8ea7..842a2138aa4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_skybox.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_tonemap.bin Binary files differindex 5d28e6ef0bd..31628cd76ff 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hextile.bin Binary files differnew file mode 100644 index 00000000000..7702cea0ec3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_mesh.bin Binary files differindex ed84b0ea4d0..675991fcfb4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_skybox.bin Binary files differindex 25db13100f3..d2df5a8fbe7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_instancing.bin Binary files differindex ffc57559d0b..bcfb64db6dc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_mesh.bin Binary files differindex 37306a62f88..7122b8d542b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit.bin Binary files differindex d40a998f05b..a4af8c35a32 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit_blit.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_oit_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_particle.bin Binary files differindex 66f49c3b9b6..f68346d2fc4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_picking_shaded.bin Binary files differindex 4eacc67d733..ba1415713ee 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_pom.bin Binary files differindex 4ac83864f38..29f16257215 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_raymarching.bin Binary files differindex 95944baac28..3df6a7e9c07 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_combine.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_gbuffer.bin Binary files differindex db036e4f2c5..72f6fc3bb8e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_lbuffer.bin Binary files differindex 15126ac35db..e3904f8698c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_shadow.bin Binary files differindex 2450aa3a17c..a9e616ca033 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color.bin Binary files differindex cdd31d5b96b..7dd8ccdec52 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting.bin Binary files differindex a57cbd66c0b..6007d6e438d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_csm.bin Binary files differindex 773e45e5f46..7df276f7439 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear.bin Binary files differindex d50feeb361a..fca18fdea8e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_csm.bin Binary files differindex 0697368ead0..c2ac25021ab 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_omni.bin Binary files differindex 9eb9e9366ce..7eff8d94159 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_omni.bin Binary files differindex 9e87c8f19ec..c81967941e5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_lighting_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_texture.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_depth.bin Binary files differindex cdd31d5b96b..7dd8ccdec52 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_depth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_hblur.bin Binary files differindex 1385028408c..f1b5faa2a9b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth.bin Binary files differindex 55874eef02d..941e2697977 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth_linear.bin Binary files differindex e7ba59f36de..ec475115307 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture_lighting.bin Binary files differindex 54f6b03ed44..fa30a2c39e1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_unpackdepth.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_vblur.bin Binary files differindex b2e0af64c99..e7154333953 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_lighting.bin Binary files differindex 83a8b0dcef7..5307fde9dab 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_texture.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svback.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svback.bin Binary files differindex 8573c9220e6..28d83c26177 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svfront.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svfront.bin Binary files differindex cdd31d5b96b..7dd8ccdec52 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svfront.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svfront.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svside.bin Binary files differindex 3546fd1ca31..d8059b559a9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture_lighting.bin Binary files differindex 71adeae0756..068fde4f9ef 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky.bin Binary files differindex b51c22b85dd..fbe836b521c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky_landscape.bin Binary files differindex c7b2078a0a5..ba776106dc6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_mesh.bin Binary files differindex b1f9adff11c..8a38cf28df2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow.bin Binary files differindex cdd31d5b96b..7dd8ccdec52 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow_pd.bin Binary files differindex f73c5b88c7b..fcd6e07ffe9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..5a5260beab4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sss_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sss_screenquad.bin Binary files differnew file mode 100644 index 00000000000..6c9e1ce72ee --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_sss_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color.bin Binary files differindex cdd31d5b96b..7dd8ccdec52 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_lighting.bin Binary files differindex ca8fd9c8e71..eed65c5ec6e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_texture.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture.bin Binary files differindex 8df2a6c91d2..13b8211d69b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture_lighting.bin Binary files differindex 5fe63b36058..a51b08affd3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain.bin Binary files differindex b28906d67e0..711accf10c7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain_height_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain_height_texture.bin Binary files differindex 122fd81317d..d2d9715edd0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain_height_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain_height_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..bee37fc89af --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_tree.bin Binary files differindex f2775605005..c78dc45dd2f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_update.bin Binary files differindex 653915535d9..927b9291492 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_vectordisplay_fb.bin Binary files differindex 95944baac28..3df6a7e9c07 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_vt_generic.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_vt_generic.bin Binary files differnew file mode 100644 index 00000000000..6e21fde9b87 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_vt_generic.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_mesh.bin Binary files differindex 72aae341f3f..7ed67c059a5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_wireframe.bin Binary files differindex 864e91a85cf..d3b8379107e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_albedo_output.bin Binary files differindex 093ae8b637b..6f1296ea362 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bloom_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bloom_combine.bin Binary files differindex c7c151e9fd2..329af459c7f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bloom_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bloom_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_copy.bin Binary files differnew file mode 100644 index 00000000000..84f6e01e4ef --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..10757dadc7d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_combine.bin Binary files differnew file mode 100644 index 00000000000..b43090a07c8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_debug.bin Binary files differnew file mode 100644 index 00000000000..881abf8960b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_downsample.bin Binary files differnew file mode 100644 index 00000000000..66a9c5589c2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_second_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_second_pass.bin Binary files differnew file mode 100644 index 00000000000..213a9269287 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_second_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_single_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_single_pass.bin Binary files differnew file mode 100644 index 00000000000..4d6eea4035a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_dof_single_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..d68d902a2eb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..7d37c87af54 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..6ba477aea77 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bokeh_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bump.bin Binary files differindex 8f2bf049446..8593e324937 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..3114620167e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_callback.bin Binary files differindex 64c91246d2e..3114620167e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_cubes.bin Binary files differindex 05fa80a0ff0..700d4073931 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_combine.bin Binary files differindex da3168a051d..d87b5e3d6b1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug.bin Binary files differindex 52d07b144bf..3408ef77eb7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug_line.bin Binary files differindex 05fa80a0ff0..700d4073931 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_geom.bin Binary files differindex 61cc60fb2b4..2827cd7ad13 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_light.bin Binary files differindex 3df1338bc69..61a7797e60d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_apply_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_apply_lighting.bin Binary files differnew file mode 100644 index 00000000000..147f365ad34 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_apply_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_copy.bin Binary files differnew file mode 100644 index 00000000000..84f6e01e4ef --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..f11653a6587 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..69a94009fcc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_spatial_3x3.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_spatial_3x3.bin Binary files differnew file mode 100644 index 00000000000..b2979d364ff --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_spatial_3x3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_spatial_5x5.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_spatial_5x5.bin Binary files differnew file mode 100644 index 00000000000..a001e8adf71 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_spatial_5x5.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_temporal.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_temporal.bin Binary files differnew file mode 100644 index 00000000000..f39a8e424b4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_temporal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_txaa.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_txaa.bin Binary files differnew file mode 100644 index 00000000000..ef144b84a43 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_denoise_txaa.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_downsample.bin Binary files differindex 1191de96edb..8606727837f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_downsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_blur.bin Binary files differindex 96ed616269d..a124b8745cc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_bright.bin Binary files differindex 28e47b54515..33d94212843 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lum.bin Binary files differindex a1708481259..daab41603a9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lumavg.bin Binary files differindex 409382a8033..87de810b517 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_mesh.bin Binary files differindex bdb7ad9f019..ea8e437c181 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_skybox.bin Binary files differindex a31f47bac6d..de5fcfdbcae 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_tonemap.bin Binary files differindex 7705f51f054..4c9bff1f770 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_mesh.bin Binary files differindex be9f7fdd9c8..944f4c57f6a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_skybox.bin Binary files differindex 37e515f22bb..cc1c38598dc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_instancing.bin Binary files differindex 05fa80a0ff0..55df9e53120 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_mesh.bin Binary files differindex 5c5646bf62b..6b1375fc1e3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit.bin Binary files differindex ff6d9283e99..ac01fa755f2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb.bin Binary files differindex 136df585552..765033b3aac 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_blit.bin Binary files differindex 4044af87ac3..568e282c75e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate.bin Binary files differindex 932c9071f01..ee88e29bb52 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate_blit.bin Binary files differindex 8e95955a6de..6ae21a41f85 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_oit_wb_separate_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_particle.bin Binary files differindex b711b05873c..bb6a308829a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_id.bin Binary files differindex 053088baf0b..716a5005ce5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_id.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_id.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_shaded.bin Binary files differindex 3acfb3d06b9..943c5475e79 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_pom.bin Binary files differindex d075d1a040c..70e545bf8ab 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_raymarching.bin Binary files differindex ae965d8ffc3..fa500228645 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_combine.bin Binary files differindex 870d0dc725b..5ba1650aeda 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_gbuffer.bin Binary files differindex 9b9038fab36..ef34b3636e4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_lbuffer.bin Binary files differindex 3204f06cb0f..bbbc8ca3378 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_shadow.bin Binary files differindex d2904989fc6..764c7d73e79 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_screen_space_shadows.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_screen_space_shadows.bin Binary files differnew file mode 100644 index 00000000000..e3b1e33ce59 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_screen_space_shadows.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_black.bin Binary files differindex b5eaba34214..b1b4264e191 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm.bin Binary files differindex 0ff747224fd..1b2c351cdc5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_csm.bin Binary files differindex e6bb942c920..b9f9afe3f89 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear.bin Binary files differindex 0d727d2cf60..ed59592c0b1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_csm.bin Binary files differindex 203e5836d7e..1dfd0f854a0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_omni.bin Binary files differindex 9cda99023e1..77536d1c0e2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_omni.bin Binary files differindex 96d816e89da..d37dc753ba3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_esm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard.bin Binary files differindex 0cbe6e8e66c..74af5f3e9ed 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_csm.bin Binary files differindex b86427c4b34..b5da6ecc751 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear.bin Binary files differindex 640543ba6dc..079cce87ca6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_csm.bin Binary files differindex 6b270c17d4f..268c84921f2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_omni.bin Binary files differindex fbc0e069366..12bac8dd1f8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_omni.bin Binary files differindex c0fa688f46f..08e480e538d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_hard_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf.bin Binary files differindex 69c721325da..c92e5744896 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_csm.bin Binary files differindex 135bd86d7c6..e16e59c950a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear.bin Binary files differindex e42044c5847..db06beeb4a9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_csm.bin Binary files differindex 0d273401499..bd9c4d94efd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_omni.bin Binary files differindex 217bebe6163..ed9396928d9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_omni.bin Binary files differindex ee592e733df..686647e1f66 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_pcf_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm.bin Binary files differindex c9fcb63c37f..9556bf4d8fc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_csm.bin Binary files differindex 6a70545dad6..2794791c808 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear.bin Binary files differindex d9255282626..9f1a20e14ad 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_csm.bin Binary files differindex 9cf31b3c3d5..2e95a18ad08 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_omni.bin Binary files differindex 4cbc40009eb..5d9b9a74b90 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_omni.bin Binary files differindex bc142f33b1a..c7e51a18c3f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_lighting_vsm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_texture.bin Binary files differindex 437fce12c91..ad50ba47f97 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur.bin Binary files differindex 3d348dd3e9e..37abb8238a8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur_vsm.bin Binary files differindex 9b2764cfc59..7f275b11952 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_hblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth.bin Binary files differindex 170e6132534..d1f651fcb31 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_linear.bin Binary files differindex e4c682c8304..63e0f78f083 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm.bin Binary files differindex 7c93e3dbb9f..954f0eadf56 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm_linear.bin Binary files differindex be9b761e204..239405a48cd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_packdepth_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_texture.bin Binary files differindex 52d07b144bf..3408ef77eb7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth.bin Binary files differindex 52d0781bec2..44c3a348785 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth_vsm.bin Binary files differindex 33429031a2e..cb0fe6851f2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_unpackdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur.bin Binary files differindex 3d348dd3e9e..37abb8238a8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur_vsm.bin Binary files differindex 9b2764cfc59..7f275b11952 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowmaps_vblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_lighting.bin Binary files differindex 15fbc983ea4..ef6bf60473e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_texture.bin Binary files differindex 437fce12c91..ad50ba47f97 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackblank.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackblank.bin Binary files differindex 918062eabf2..d7362dfd947 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackcolor.bin Binary files differindex 39940cb6d9a..58a70bbebd6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbackcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex1.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex1.bin Binary files differindex aab8a7abf89..2cb49d20142 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex2.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex2.bin Binary files differindex 348ac02882a..b2223d72e8e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svbacktex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontblank.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontblank.bin Binary files differindex 094a5250461..65dcdd0fba7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontcolor.bin Binary files differindex 39940cb6d9a..58a70bbebd6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfrontcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex1.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex1.bin Binary files differindex aab8a7abf89..2cb49d20142 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex2.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex2.bin Binary files differindex 348ac02882a..b2223d72e8e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svfronttex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svside.bin Binary files differindex b5186b8cdcf..3e69e0785c9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsideblank.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsideblank.bin Binary files differindex 877bfb79d19..dd05e0d91ac 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsideblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsideblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidecolor.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidecolor.bin Binary files differindex e2f2a02d09b..95e0ad9a217 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidecolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidecolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidetex.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidetex.bin Binary files differindex e6059b1061c..4bcfb148e46 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidetex.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_svsidetex.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture.bin Binary files differindex 52d07b144bf..3408ef77eb7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture_lighting.bin Binary files differindex 168320d7243..0724e37ad1e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky.bin Binary files differindex c4dd3e08868..5064b58d931 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_color_banding_fix.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_color_banding_fix.bin Binary files differindex 2d6725b0b8c..5afafb2cd4a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_color_banding_fix.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_color_banding_fix.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_landscape.bin Binary files differindex 14df655f54c..b25b43547ad 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh.bin Binary files differindex 259e3550c20..41a0d91c259 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh_pd.bin Binary files differindex fa13f4450ef..e645628c945 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_mesh_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow.bin Binary files differindex b5eaba34214..b1b4264e191 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow_pd.bin Binary files differindex 2dcde77c974..dd24490ccf2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..9223fb96b0b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..f2b1affdb68 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..d917ae3a2a1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_unlit.bin Binary files differnew file mode 100644 index 00000000000..2b8dd1d182f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_sss_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_black.bin Binary files differindex b5eaba34214..b1b4264e191 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_lighting.bin Binary files differindex 0d48f9e048f..222d68989ef 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_texture.bin Binary files differindex 437fce12c91..ad50ba47f97 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture.bin Binary files differindex 52d07b144bf..3408ef77eb7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture_lighting.bin Binary files differindex f1ae1d4047f..e1e169b68b3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_terrain.bin Binary files differindex 75bcfcf1029..6642221c13a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_tree.bin Binary files differindex 0802f84f751..3a994d45c58 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update.bin Binary files differindex e969ebb9ce7..1f0eedd0db3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_3d.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_3d.bin Binary files differindex 103c6688f69..f3563c9e639 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_3d.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_3d.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_cmp.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_cmp.bin Binary files differindex 3cd8dcf0b50..ec0c1e4a640 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_cmp.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_update_cmp.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_upsample.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_upsample.bin Binary files differindex 933559d4513..08dbea040f2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_upsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_upsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blit.bin Binary files differindex 052deac9419..a5fb6ea02dd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blur.bin Binary files differindex 7ff53a66baa..4560d9a5e91 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_fb.bin Binary files differindex 3fc3e0f2ec6..476ad6e53d6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vt_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vt_mip.bin Binary files differnew file mode 100644 index 00000000000..789adf25709 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vt_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vt_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vt_unlit.bin Binary files differnew file mode 100644 index 00000000000..eb46ab810fa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_vt_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_mesh.bin Binary files differindex 27c11168bf5..6bd8a8b5143 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_wireframe.bin Binary files differindex 526a1aff393..7f206c30ab0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_albedo_output.bin Binary files differindex 9b75228cfe3..2b9543debaf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..6eb0f438d42 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bokeh_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bokeh_screenquad.bin Binary files differnew file mode 100644 index 00000000000..0f8b5da33b8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bokeh_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump.bin Binary files differindex 6fbc2e16ee5..3124c71b34e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump_instanced.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump_instanced.bin Binary files differindex 69858b9d19b..5205244584e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump_instanced.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bump_instanced.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..7b0b30845ae --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_callback.bin Binary files differindex 9442d999deb..07698c2d168 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_cubes.bin Binary files differindex 10b4e17a2bf..95fd67dd3be 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_combine.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug_line.bin Binary files differindex 10b4e17a2bf..95fd67dd3be 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_geom.bin Binary files differindex 6fbc2e16ee5..87bb0ca34e3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_light.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..0895188f2b3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_denoise_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_denoise_screenquad.bin Binary files differnew file mode 100644 index 00000000000..0f8b5da33b8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_denoise_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_fullscreen.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_fullscreen.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_fullscreen.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_fullscreen.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_blur.bin Binary files differindex 108678a83f7..50df71ea1a5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_bright.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lum.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lumavg.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_mesh.bin Binary files differindex dfd2689314a..8fd46441520 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_skybox.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_tonemap.bin Binary files differindex fb696b33dee..0fd8092de83 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_mesh.bin Binary files differindex 8d56b1b9da1..99ef558ad3b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_skybox.bin Binary files differindex e6dcec6b89c..3571f1b5e94 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_instancing.bin Binary files differindex 000999e073f..ab2bfe0a6c2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_mesh.bin Binary files differindex cde801db0a2..4bbac813cb9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit.bin Binary files differindex 871fab033e6..2ab4489a9d7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit_blit.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_oit_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_particle.bin Binary files differindex 49fcb754d0b..fe36bb2f120 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_picking_shaded.bin Binary files differindex 9b139c74e96..a43a35802fa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_pom.bin Binary files differindex d09bd04b371..c72f0c7b59a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_raymarching.bin Binary files differindex 07b9f6342ce..74a58a5affd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_combine.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_gbuffer.bin Binary files differindex f44abc88aa7..32f847f09ba 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_lbuffer.bin Binary files differindex 64243600af4..26adca04aa0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_shadow.bin Binary files differindex 28072c43ede..b7f527de79d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color.bin Binary files differindex 039dc22d8f6..40836a0ffc8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting.bin Binary files differindex c785cf4a390..2b2ad369247 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_csm.bin Binary files differindex 574f202a46c..d7ee0a3272e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear.bin Binary files differindex 2fc4395dc7f..52c34d5925b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_csm.bin Binary files differindex bb82cd81684..53953187115 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_omni.bin Binary files differindex d9ca2c06923..fd3ead2c532 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_omni.bin Binary files differindex 83a7a4837c7..c385b45349b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_lighting_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_texture.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_depth.bin Binary files differindex 039dc22d8f6..40836a0ffc8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_depth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_hblur.bin Binary files differindex af91acec42b..8136301919f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth.bin Binary files differindex d9b2359c9f2..e34df08be0e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth_linear.bin Binary files differindex afe517c86ac..f18c87c640d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture_lighting.bin Binary files differindex 253fce22942..f71bff7e0e1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_unpackdepth.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_vblur.bin Binary files differindex 99d73c667b8..7793d9ee8eb 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_lighting.bin Binary files differindex b8eb2d50107..3023ca0ae73 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_texture.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svback.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svback.bin Binary files differindex 37dafb669fa..26c6ba09904 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svfront.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svfront.bin Binary files differindex 039dc22d8f6..40836a0ffc8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svfront.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svfront.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svside.bin Binary files differindex df7adcd964b..9af4c93d743 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture_lighting.bin Binary files differindex 5f1e1eef752..eb98db90014 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky.bin Binary files differindex e3c224b40fa..bebd3006ecc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky_landscape.bin Binary files differindex e73c96f9210..d8735fdc7d0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_mesh.bin Binary files differindex c73265111a7..0c66d23215b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow.bin Binary files differindex 039dc22d8f6..40836a0ffc8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow_pd.bin Binary files differindex a6344da18c0..c9940da4b0d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..2525e1e383c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sss_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sss_screenquad.bin Binary files differnew file mode 100644 index 00000000000..0f8b5da33b8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_sss_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color.bin Binary files differindex 039dc22d8f6..40836a0ffc8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_lighting.bin Binary files differindex 499a5ecfb07..d3f9665eef9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_texture.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture.bin Binary files differindex 83bdf080955..0f8b5da33b8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture_lighting.bin Binary files differindex c0c0dfa1c4a..c2d56e09b41 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain.bin Binary files differindex 3d0df14bedd..8542fc840cd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain_height_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain_height_texture.bin Binary files differindex b0609f78960..6d8f02f54b2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain_height_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_terrain_height_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_tree.bin Binary files differindex ac3c98b20de..061b530e0a6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_update.bin Binary files differindex 42f667dfa6f..f2abef754c2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_vectordisplay_fb.bin Binary files differindex 07b9f6342ce..74a58a5affd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_vt_generic.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_vt_generic.bin Binary files differnew file mode 100644 index 00000000000..cf2fa64ddf8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_vt_generic.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_mesh.bin Binary files differindex f1dac3304ff..b6dd72c53ae 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_wireframe.bin Binary files differindex 63acee334a0..dcc4697d674 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_drawindirect.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_drawindirect.bin Binary files differnew file mode 100755 index 00000000000..42deaaa491f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_drawindirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_indirect.bin Binary files differindex 886ee1fe7d4..4219dd1c484 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_indirect.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_init_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_init_instances.bin Binary files differindex 3b3ad504881..d04bd62357b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_init_instances.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_init_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update.bin Binary files differindex c2d0ea5f182..1ef8cd0fd15 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update_instances.bin Binary files differindex 4b06073718b..0b26f7eeef6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update_instances.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/cs_update_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_albedo_output.bin Binary files differindex ec28c0d4048..61de517f658 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bloom_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bloom_combine.bin Binary files differindex dd66b5cee21..f84f1b8dd64 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bloom_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bloom_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_copy.bin Binary files differnew file mode 100644 index 00000000000..157f27b05d3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..0c51e6aa595 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_combine.bin Binary files differnew file mode 100644 index 00000000000..3c4cade0403 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_debug.bin Binary files differnew file mode 100644 index 00000000000..ef0b939a699 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_downsample.bin Binary files differnew file mode 100644 index 00000000000..9ed1f78323a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_second_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_second_pass.bin Binary files differnew file mode 100644 index 00000000000..6e09dc795a0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_second_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_single_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_single_pass.bin Binary files differnew file mode 100644 index 00000000000..2996ff6fb56 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_dof_single_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..d3097f9a245 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..f78bb0c5f5a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..5cb14a7583b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bokeh_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bump.bin Binary files differindex fa98e0537fb..16d310bc176 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..862f08628ec --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_callback.bin Binary files differindex f9b1d495bee..862f08628ec 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_cubes.bin Binary files differindex 63df9808a99..432320c4159 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_combine.bin Binary files differindex 10bac969d3d..d5726f45d01 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug.bin Binary files differindex f1dc985b9da..c6c49b8df0b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug_line.bin Binary files differindex 63df9808a99..432320c4159 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_geom.bin Binary files differindex 049d76649f9..a545b926ea0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_light.bin Binary files differindex f83a1ab0a5b..3227fa0f95c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_apply_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_apply_lighting.bin Binary files differnew file mode 100644 index 00000000000..4db018269cd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_apply_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_copy.bin Binary files differnew file mode 100644 index 00000000000..157f27b05d3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..063b7a8a956 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..c6dfe552db6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_spatial_3x3.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_spatial_3x3.bin Binary files differnew file mode 100644 index 00000000000..e7ddc26de62 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_spatial_3x3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_spatial_5x5.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_spatial_5x5.bin Binary files differnew file mode 100644 index 00000000000..a685035ef14 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_spatial_5x5.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_temporal.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_temporal.bin Binary files differnew file mode 100644 index 00000000000..bcd6dab58eb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_temporal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_txaa.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_txaa.bin Binary files differnew file mode 100644 index 00000000000..2ed041ffd2a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_denoise_txaa.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_downsample.bin Binary files differindex c360dccaac9..1cd24f37e68 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_downsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_blur.bin Binary files differindex cc9accec213..7894a22d59b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_bright.bin Binary files differindex bac6ec6f1d3..432f3604176 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lum.bin Binary files differindex f6988f468a2..51067cc511c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lumavg.bin Binary files differindex e9fba02f29b..bbdb2c86c3b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_mesh.bin Binary files differindex 93a070598d0..c16109acdc4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_skybox.bin Binary files differindex f21e872cca5..7534864dcd5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_tonemap.bin Binary files differindex 62933308bfa..f86e18e77d0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hextile.bin Binary files differnew file mode 100644 index 00000000000..4ababa30b25 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_mesh.bin Binary files differindex 02524f211ea..f977723c67d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_skybox.bin Binary files differindex c2e537dbc2b..9a46697c057 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_instancing.bin Binary files differindex 63df9808a99..9f1d90f476e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_mesh.bin Binary files differindex 2671868ee0b..1309ff2e325 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit.bin Binary files differindex 9f2a41f4d6c..2670fc1f403 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb.bin Binary files differindex 8905cdc7f4a..8d3f50efca2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_blit.bin Binary files differindex 20eb5cdad3e..0fa5c7b70ea 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate.bin Binary files differindex 296838e0b1f..f630677fdf2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate_blit.bin Binary files differindex 5f912331c4c..783974e123e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_oit_wb_separate_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_particle.bin Binary files differindex d191ebac17a..7ac823876d7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_id.bin Binary files differindex 14ffc773691..e5c127feef9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_id.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_id.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_shaded.bin Binary files differindex efa7dad0005..9cbb8906f43 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_pom.bin Binary files differindex 21eaf2fd855..d2fdd8fa42b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_raymarching.bin Binary files differindex c0084eed311..a9e5b703da9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_combine.bin Binary files differindex 483e716d36c..1044794ef53 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_gbuffer.bin Binary files differindex 39fb810286d..ba986dece21 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_lbuffer.bin Binary files differindex 14563d74f85..45e21a06422 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_shadow.bin Binary files differindex a7e34982b88..a895654bc1b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_screen_space_shadows.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_screen_space_shadows.bin Binary files differnew file mode 100644 index 00000000000..07bfc835a87 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_screen_space_shadows.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_black.bin Binary files differindex 29069e6cb91..17b99de6e81 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm.bin Binary files differindex 3d331ab9276..5c6b7f07d83 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_csm.bin Binary files differindex 1bd12f6e197..9c58abaff3a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear.bin Binary files differindex c89e206913d..7066c0bd555 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_csm.bin Binary files differindex 314f000057c..e7a7177eb58 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_omni.bin Binary files differindex b470f641215..69700566d98 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_omni.bin Binary files differindex 67af83c65f4..4220d7a8692 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_esm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard.bin Binary files differindex c541f4a7e01..1ddc9d0ae8e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_csm.bin Binary files differindex 75c3cf48018..10ff409f6ef 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear.bin Binary files differindex ddd82912229..295fdda845c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_csm.bin Binary files differindex c28a33e85a1..6b2602c01d7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_omni.bin Binary files differindex f8585acf35d..93cd968618f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_omni.bin Binary files differindex fd4bdd5bb23..87292fe1034 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_hard_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf.bin Binary files differindex bc9cfdf6b75..314ec04ad56 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_csm.bin Binary files differindex 141fcb861fb..a5196803164 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear.bin Binary files differindex ed1a956c7c8..2df70e17f22 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin Binary files differindex 909fb3699d8..5645c02370d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin Binary files differindex c1dceb67030..91b000a867d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_omni.bin Binary files differindex 6b1b03362c7..36c8947a00f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_pcf_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm.bin Binary files differindex 0f6f65d469b..8969072ceac 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_csm.bin Binary files differindex 44e5d861467..3f7b1fff801 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear.bin Binary files differindex 28f01d109b2..23d8abe8988 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin Binary files differindex 2aed8fe71a7..ea6a4715599 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin Binary files differindex 884fc080089..c5b0375f64b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_omni.bin Binary files differindex 594042d1c3b..37db03858a8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_lighting_vsm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_texture.bin Binary files differindex 00de9a89929..913bdaa28c4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur.bin Binary files differindex 7196f7a84f7..51d71ddb00d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur_vsm.bin Binary files differindex 796808b9453..0185b5b82c5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_hblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth.bin Binary files differindex 49f76084e3b..6f91b41d1f3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_linear.bin Binary files differindex 76519bdacc2..1c161a3610f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm.bin Binary files differindex 614e1961b17..cda8e38c735 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm_linear.bin Binary files differindex 716cfe3efe5..f29cd2d63bd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_packdepth_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_texture.bin Binary files differindex f1dc985b9da..c6c49b8df0b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth.bin Binary files differindex 262994bae68..a642fe86b87 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth_vsm.bin Binary files differindex 711ef73f96d..42804edd84c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_unpackdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur.bin Binary files differindex 7196f7a84f7..51d71ddb00d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur_vsm.bin Binary files differindex 796808b9453..0185b5b82c5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowmaps_vblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_lighting.bin Binary files differindex 7b5c73a2634..3cd4ac16f38 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_texture.bin Binary files differindex 00de9a89929..913bdaa28c4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackblank.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackblank.bin Binary files differindex 5d310245b63..5d2b6578d5c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackcolor.bin Binary files differindex 935e2c54598..bd8b336ae0e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbackcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex1.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex1.bin Binary files differindex 50b8fe5b268..89164b062e4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex2.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex2.bin Binary files differindex 82192a42221..6445eeed984 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svbacktex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontblank.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontblank.bin Binary files differindex 83d02971d85..60f6eaa5a68 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontcolor.bin Binary files differindex 935e2c54598..bd8b336ae0e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfrontcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex1.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex1.bin Binary files differindex e7691a357c2..bd56e381c06 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex2.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex2.bin Binary files differindex 6721feb5a47..648a9a1eae5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svfronttex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svside.bin Binary files differindex 2055cd77a13..4c6fd9508a6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsideblank.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsideblank.bin Binary files differindex 9fe181388cb..dec121b409b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsideblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsideblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidecolor.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidecolor.bin Binary files differindex a84c6e4b29b..b39e71584e7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidecolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidecolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidetex.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidetex.bin Binary files differindex 2add2f2af00..b896f7ff2f7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidetex.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_svsidetex.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture.bin Binary files differindex f1dc985b9da..c6c49b8df0b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture_lighting.bin Binary files differindex 4a2b2d1af7e..5f095f1a43c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky.bin Binary files differindex 2f5255b47c5..077aed35ef1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_color_banding_fix.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_color_banding_fix.bin Binary files differindex b29146fb15b..5b8498f690b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_color_banding_fix.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_color_banding_fix.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_landscape.bin Binary files differindex d0135478c7e..93f7dd938a1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh.bin Binary files differindex 3ba8bc9a204..eee318d421a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh_pd.bin Binary files differindex 9ee7078c02a..2781b8e2883 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_mesh_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow.bin Binary files differindex e006dc8b470..b5ba808a10f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow_pd.bin Binary files differindex 7e22df1d2e3..a694c49a81e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..64ea9beb254 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..cc2c98b3ac5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..5063f11ac9b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_unlit.bin Binary files differnew file mode 100644 index 00000000000..160a0979aa1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_sss_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_black.bin Binary files differindex 29069e6cb91..17b99de6e81 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_lighting.bin Binary files differindex 1b2bce57890..b2a013506a8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_texture.bin Binary files differindex 00de9a89929..913bdaa28c4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture.bin Binary files differindex f1dc985b9da..c6c49b8df0b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture_lighting.bin Binary files differindex ed7eac4e3c8..3d4026e0c51 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_terrain.bin Binary files differindex e91285b6501..b8a209b292b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_tree.bin Binary files differindex 2254212a7e0..349d7d87bdf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update.bin Binary files differindex 062c1eee11b..d870ea596ff 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_3d.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_3d.bin Binary files differindex 0f95a3f0241..df3e9f60f83 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_3d.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_3d.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_cmp.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_cmp.bin Binary files differindex 4185316699a..323b88578f3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_cmp.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_update_cmp.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_upsample.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_upsample.bin Binary files differindex 01c22c33a0c..3985ff7322e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_upsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_upsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blit.bin Binary files differindex 2ea058ed347..912690dc5e1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blur.bin Binary files differindex 08429206b4a..7164ae1aaf0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_fb.bin Binary files differindex 910381e42db..4b52940096b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vt_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vt_mip.bin Binary files differnew file mode 100644 index 00000000000..ea56b1503af --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vt_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vt_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vt_unlit.bin Binary files differnew file mode 100644 index 00000000000..4e90ec50d27 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_vt_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_mesh.bin Binary files differindex 07a455919fb..15fe97bdd0f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_wireframe.bin Binary files differindex e4219a676c5..9f1e4152cc2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/fs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_albedo_output.bin Binary files differindex 5212bac65ae..5e6265b76bf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..27777257ccb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bokeh_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bokeh_screenquad.bin Binary files differnew file mode 100644 index 00000000000..e3ca4390b15 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bokeh_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump.bin Binary files differindex 73c4316837c..4f2f5124244 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump_instanced.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump_instanced.bin Binary files differindex bfbc0fe8b97..fb68cbec5f7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump_instanced.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bump_instanced.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..83bbc6f1b05 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_callback.bin Binary files differindex ac81e0f8325..98d23e6d6a6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_cubes.bin Binary files differindex c4c13589fb2..0571950bb01 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_combine.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug_line.bin Binary files differindex c4c13589fb2..0571950bb01 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_geom.bin Binary files differindex 73c4316837c..0b7faa9c0bc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_light.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..53db8c97274 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_denoise_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_denoise_screenquad.bin Binary files differnew file mode 100644 index 00000000000..e3ca4390b15 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_denoise_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_fullscreen.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_fullscreen.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_fullscreen.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_fullscreen.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_blur.bin Binary files differindex f76497fe659..48a67c6b55e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_bright.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lum.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lumavg.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_mesh.bin Binary files differindex 1322d7d2157..f9dee14f521 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_skybox.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_tonemap.bin Binary files differindex c7cc9d044fc..06443155765 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hextile.bin Binary files differnew file mode 100644 index 00000000000..1dbade22d53 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_mesh.bin Binary files differindex 7c55ec631fa..a1c554a4704 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_skybox.bin Binary files differindex 4a3f3cdf2ef..932f038971d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_instancing.bin Binary files differindex bb137d355e0..f106df61d01 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_mesh.bin Binary files differindex f321e526e53..5afd2ac415e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit.bin Binary files differindex 35803e08fc4..1750892779b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit_blit.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_oit_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_particle.bin Binary files differindex 2f237b5f671..33b90374272 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_picking_shaded.bin Binary files differindex 7ee9e0a5d94..5068487379e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_pom.bin Binary files differindex 8823becb858..62b1165acb0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_raymarching.bin Binary files differindex ac1c19b7ee5..f6f07220f3d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_combine.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_gbuffer.bin Binary files differindex 870d0bc54d9..cc793033f01 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_lbuffer.bin Binary files differindex 69d4d4c4f23..84ead51560f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_shadow.bin Binary files differindex 706ae7a9135..d7538daa11b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color.bin Binary files differindex b92b121610f..f1e8043c819 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting.bin Binary files differindex aadcbeed675..711a935b17e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_csm.bin Binary files differindex 4a24059fffa..cdbfbc88aca 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear.bin Binary files differindex f26d4e0e954..6bf1468505d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_csm.bin Binary files differindex 9b330e6121f..60a402a4848 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_omni.bin Binary files differindex e603b51097f..a55fb01931f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_omni.bin Binary files differindex 052719364e7..71955c134c1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_lighting_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_texture.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_depth.bin Binary files differindex b92b121610f..f1e8043c819 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_depth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_hblur.bin Binary files differindex df76dea07fe..f52608ee52f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth.bin Binary files differindex 5dac8eab0d2..c031fbf11e8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth_linear.bin Binary files differindex e5b768b3a35..0b1882e1315 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture_lighting.bin Binary files differindex 175dee16fee..76c239ff477 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_unpackdepth.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_vblur.bin Binary files differindex 9fa45531ab7..5fb97ae2db1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_lighting.bin Binary files differindex 24282ddadab..4f1d96bc01a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_texture.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svback.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svback.bin Binary files differindex 462df45cc07..09bfcce5d28 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svfront.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svfront.bin Binary files differindex b92b121610f..f1e8043c819 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svfront.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svfront.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svside.bin Binary files differindex 857bfd85d34..cb8c4f0f654 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture_lighting.bin Binary files differindex 175dee16fee..76c239ff477 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky.bin Binary files differindex 81358a9d346..962e6f7c137 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky_landscape.bin Binary files differindex b90c5455237..a4b9c0d594c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_mesh.bin Binary files differindex 49f9ecc82b4..2974f4f2393 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow.bin Binary files differindex b92b121610f..f1e8043c819 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow_pd.bin Binary files differindex 5dac8eab0d2..c031fbf11e8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..06f108fc307 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sss_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sss_screenquad.bin Binary files differnew file mode 100644 index 00000000000..e3ca4390b15 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_sss_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color.bin Binary files differindex b92b121610f..f1e8043c819 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_lighting.bin Binary files differindex 24282ddadab..4f1d96bc01a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_texture.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture.bin Binary files differindex 433ae1c6ea9..7de535ae9b5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture_lighting.bin Binary files differindex 175dee16fee..76c239ff477 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain.bin Binary files differindex 98dc951a069..6db57510cd7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain_height_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain_height_texture.bin Binary files differindex da93f664508..7d8a447fd2e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain_height_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_terrain_height_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_tree.bin Binary files differindex 5c6db350dd2..27d00d95684 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_update.bin Binary files differindex b5d42a43d6b..42eb7bff185 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_vectordisplay_fb.bin Binary files differindex ac1c19b7ee5..f6f07220f3d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_vt_generic.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_vt_generic.bin Binary files differnew file mode 100644 index 00000000000..bbc81844f29 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_vt_generic.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_mesh.bin Binary files differindex a8e75a76c59..429ce01c7f9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_wireframe.bin Binary files differindex 91702d4a76d..06fe75b6467 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/essl/vs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_apply.bin Binary files differnew file mode 100644 index 00000000000..b930b502af3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_importance_map.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_importance_map.bin Binary files differnew file mode 100644 index 00000000000..3ad06df5e2f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_importance_map.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q0.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q0.bin Binary files differnew file mode 100644 index 00000000000..6e613706aa3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q0.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q1.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q1.bin Binary files differnew file mode 100644 index 00000000000..e9317f72bac --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q2.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q2.bin Binary files differnew file mode 100644 index 00000000000..fd1b27a7069 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q3.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q3.bin Binary files differnew file mode 100644 index 00000000000..cad20c9d4a8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin Binary files differnew file mode 100644 index 00000000000..4d7d5c08c0c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_load_counter_clear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_load_counter_clear.bin Binary files differnew file mode 100644 index 00000000000..75daf18d164 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_load_counter_clear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_apply.bin Binary files differnew file mode 100644 index 00000000000..1f6ca466559 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..f57f8297a5c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_half_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_half_apply.bin Binary files differnew file mode 100644 index 00000000000..f00027dfa91 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_non_smart_half_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_a.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_a.bin Binary files differnew file mode 100644 index 00000000000..d4590ae3757 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_a.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_b.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_b.bin Binary files differnew file mode 100644 index 00000000000..5bcff91f4d9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_postprocess_importance_map_b.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depth_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depth_mip.bin Binary files differnew file mode 100644 index 00000000000..e804014f457 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depth_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths.bin Binary files differnew file mode 100644 index 00000000000..e4fc742bb2f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_and_normals.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_and_normals.bin Binary files differnew file mode 100644 index 00000000000..fc63962695e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_and_normals.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_and_normals_half.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_and_normals_half.bin Binary files differnew file mode 100644 index 00000000000..cb90497df8c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_and_normals_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_half.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_half.bin Binary files differnew file mode 100644 index 00000000000..1c5e5fac39a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_prepare_depths_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..e00c98b58e6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_smart_blur_wide.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_smart_blur_wide.bin Binary files differnew file mode 100644 index 00000000000..37f218e42a8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_smart_blur_wide.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_drawindirect.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_drawindirect.bin Binary files differnew file mode 100755 index 00000000000..1e6d9975376 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_drawindirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_drawindirect_count.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_drawindirect_count.bin Binary files differnew file mode 100644 index 00000000000..fcf2a6f477c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_drawindirect_count.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_bilinear_16.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_bilinear_16.bin Binary files differnew file mode 100644 index 00000000000..0af6dd4ab1c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_bilinear_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_bilinear_32.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_bilinear_32.bin Binary files differnew file mode 100644 index 00000000000..f13f2ded345 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_bilinear_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_easu_16.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_easu_16.bin Binary files differnew file mode 100644 index 00000000000..93aafc0cb91 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_easu_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_easu_32.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_easu_32.bin Binary files differnew file mode 100644 index 00000000000..c4d86bea97c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_easu_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_rcas_16.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_rcas_16.bin Binary files differnew file mode 100644 index 00000000000..20b774bfd81 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_rcas_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_rcas_32.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_rcas_32.bin Binary files differnew file mode 100644 index 00000000000..39c6a60056c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_fsr_rcas_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_copy_z.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_copy_z.bin Binary files differnew file mode 100644 index 00000000000..8fd2bbe3c61 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_copy_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_downscale_hi_z.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_downscale_hi_z.bin Binary files differindex f9e14ffa9c2..5ac4393e5a7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_downscale_hi_z.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_downscale_hi_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_occlude_props.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_occlude_props.bin Binary files differindex e775dd91ea5..70f96403eae 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_occlude_props.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_occlude_props.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_stream_compaction.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_stream_compaction.bin Binary files differindex cac91d1a355..883808b1834 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_stream_compaction.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_gdr_stream_compaction.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_indirect.bin Binary files differindex b35fb695ab6..2ebe8945d0d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_indirect.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_init_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_init_instances.bin Binary files differindex b7bd2ba9524..e4978e4686d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_init_instances.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_init_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_init.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_init.bin Binary files differnew file mode 100644 index 00000000000..ba428bbc48d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_init.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_lod.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_lod.bin Binary files differnew file mode 100644 index 00000000000..cdf57fb06cb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_lod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_update_draw.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_update_draw.bin Binary files differnew file mode 100644 index 00000000000..4656f601d28 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_update_draw.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_update_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_update_indirect.bin Binary files differnew file mode 100644 index 00000000000..02b9da15a8c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_terrain_update_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update.bin Binary files differindex 89f089a2778..3b853cffcef 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update_instances.bin Binary files differindex 6096432c8af..895afd973aa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update_instances.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_update_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_albedo_output.bin Binary files differindex ebe232706f7..4a56bf3b7be 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_assao_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_assao_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..892f6eca06f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_assao_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..b1bf45a41b7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bloom_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bloom_combine.bin Binary files differindex 23d53074dc1..e7b800ecd4f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bloom_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bloom_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_copy.bin Binary files differnew file mode 100644 index 00000000000..664d50ec08e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..6334ba44a62 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_combine.bin Binary files differnew file mode 100644 index 00000000000..82ac84e806b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_debug.bin Binary files differnew file mode 100644 index 00000000000..cdd6b1fcf56 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_downsample.bin Binary files differnew file mode 100644 index 00000000000..594f0631e24 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_second_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_second_pass.bin Binary files differnew file mode 100644 index 00000000000..c5312aa51da --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_second_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_single_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_single_pass.bin Binary files differnew file mode 100644 index 00000000000..81e32d97ff5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_dof_single_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..52b7ec4278a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..1fb5f105950 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..0a3a571dcb3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bokeh_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bump.bin Binary files differindex c914bb0e700..b332edfc34f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..0bfc9a74992 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_callback.bin Binary files differindex a23a4a13066..0bfc9a74992 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_cubes.bin Binary files differindex 9d60f87204d..ee3d27b2276 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_clear_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_clear_uav.bin Binary files differnew file mode 100644 index 00000000000..68d9da319a2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_clear_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_combine.bin Binary files differindex 1307504d09e..048bb822346 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_combine_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_combine_ta.bin Binary files differnew file mode 100644 index 00000000000..7b191811d5d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_combine_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug.bin Binary files differindex 2d87b63a218..d66b26aed85 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin Binary files differindex 9d60f87204d..db3e5077874 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug_ta.bin Binary files differnew file mode 100644 index 00000000000..6263077c3ac --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_debug_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_geom.bin Binary files differindex 2036d69c95a..076c1813e31 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light.bin Binary files differindex abacd365731..83a88bdc972 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light_ta.bin Binary files differnew file mode 100644 index 00000000000..c476ee7111c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light_uav.bin Binary files differnew file mode 100644 index 00000000000..6167149f30d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_deferred_light_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_apply_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_apply_lighting.bin Binary files differnew file mode 100644 index 00000000000..54ba76c5488 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_apply_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_copy.bin Binary files differnew file mode 100644 index 00000000000..664d50ec08e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..2970c69f2aa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..f3ae09da907 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_spatial_3x3.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_spatial_3x3.bin Binary files differnew file mode 100644 index 00000000000..4a39f363f86 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_spatial_3x3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_spatial_5x5.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_spatial_5x5.bin Binary files differnew file mode 100644 index 00000000000..47677441fa1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_spatial_5x5.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_temporal.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_temporal.bin Binary files differnew file mode 100644 index 00000000000..0ea5bf97013 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_temporal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_txaa.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_txaa.bin Binary files differnew file mode 100644 index 00000000000..249b80e3b38 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_denoise_txaa.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_downsample.bin Binary files differindex 055b774bdb7..5a685e498f7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_downsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..a924c762d03 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..1e506c3ad8c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..e306061d437 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_fsr_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_gdr_instanced_indirect_rendering.bin Binary files differindex a60877da56b..499e7578379 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_gdr_instanced_indirect_rendering.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_blur.bin Binary files differindex ecb9b984db9..e019e54cc4d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_bright.bin Binary files differindex c6f9fd2af86..ad12ab76cf2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lum.bin Binary files differindex cb5c8e05721..5df2fa1d36e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lumavg.bin Binary files differindex 040f862ef87..839d483fac6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_mesh.bin Binary files differindex 5e3fe0e2d0b..fd3de500da3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_skybox.bin Binary files differindex ed7caeaa154..e6c1f17a698 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_tonemap.bin Binary files differindex 5796c2b5791..9b4d610fd15 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hextile.bin Binary files differnew file mode 100644 index 00000000000..ee1b998d415 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_mesh.bin Binary files differindex 6044b1350de..40683ff70bf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_skybox.bin Binary files differindex 81614474b58..d183d5aa76a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_instancing.bin Binary files differindex 9d60f87204d..db3e5077874 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_mesh.bin Binary files differindex 491773847b0..4ca1d88e52c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit.bin Binary files differindex 2ad08be5814..ed613e56b5f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb.bin Binary files differindex a8cff306477..66adf47e152 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_blit.bin Binary files differindex 82a3bdc5046..65e80d77ec2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate.bin Binary files differindex caef3aa1aa9..f66918f8df6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate_blit.bin Binary files differindex 58199e2ba8a..7a0f9d0f2c4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_oit_wb_separate_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_particle.bin Binary files differindex 86e58edb301..2239ddea77f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_id.bin Binary files differindex bca1dced386..0e642dcc2d6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_id.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_id.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_shaded.bin Binary files differindex d246e39f312..2ae52178154 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_pom.bin Binary files differindex 4c00375397c..d40b854d341 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_raymarching.bin Binary files differindex 37d7cecf065..f1c869afc37 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_combine.bin Binary files differindex b20e165f68b..0fef87fce1a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_gbuffer.bin Binary files differindex d343ec1fc51..fbee38837e9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_lbuffer.bin Binary files differindex 854b305fc71..b7ec4ecd146 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_shadow.bin Binary files differindex c83a220218b..364a1f8e542 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_screen_space_shadows.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_screen_space_shadows.bin Binary files differnew file mode 100644 index 00000000000..4795decd476 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_screen_space_shadows.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_black.bin Binary files differindex 29069e6cb91..17b99de6e81 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm.bin Binary files differindex ebb5c663bb9..316eb849269 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_csm.bin Binary files differindex ea03266f379..15a51a8e982 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear.bin Binary files differindex 75dd33bf678..80272b82063 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_csm.bin Binary files differindex e91345d0dd3..75b9db9ae88 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_omni.bin Binary files differindex 1d6952e44d9..7f30fffabd4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_omni.bin Binary files differindex c2bc7d6d346..49c7c0d14be 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_esm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard.bin Binary files differindex bbc9e329089..3a4f9bf7cd0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_csm.bin Binary files differindex 076c88e4f20..45b3a81482c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear.bin Binary files differindex b780e2b947a..741a96bb66d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_csm.bin Binary files differindex ca29f002e39..e30343b8725 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_omni.bin Binary files differindex 5ae5112cbd4..0fdc996ae4a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_omni.bin Binary files differindex 7933101aa20..a52a48c63f7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_hard_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf.bin Binary files differindex 34aec4128bb..88cd961f374 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_csm.bin Binary files differindex ed95ff87aeb..e74249b4015 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear.bin Binary files differindex 111125d58f3..720b48ac161 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin Binary files differindex daf497797a6..d90ed225660 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin Binary files differindex 74d3a079813..078ad7bdbdd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_omni.bin Binary files differindex 0adab72ebc8..a635df3e961 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_pcf_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm.bin Binary files differindex 35476a7d555..e14f975f924 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_csm.bin Binary files differindex dc3f1e2e12e..5e489e4237c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear.bin Binary files differindex 93ca65a80df..3f76b32459c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin Binary files differindex 39e382cd307..2d98c579a1a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin Binary files differindex 4da9fb83d14..cdc8edce31a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_omni.bin Binary files differindex c08f9f92f8c..e5d7431deba 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_lighting_vsm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_texture.bin Binary files differindex 51787654ef6..70366044857 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur.bin Binary files differindex 325dcf47958..44fe06a0605 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur_vsm.bin Binary files differindex e00a2587f3e..176244f5544 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_hblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth.bin Binary files differindex 47084aa5226..93a0566032b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_linear.bin Binary files differindex d39e0431d73..16039281c7d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm.bin Binary files differindex a07aff40bdc..2231f4457e2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm_linear.bin Binary files differindex 3e7de52da22..3503e7db47a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_packdepth_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_texture.bin Binary files differindex 2d87b63a218..4e7d4bfbb7f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth.bin Binary files differindex 0623b5a1799..26bcb49a574 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth_vsm.bin Binary files differindex b98ee828441..9f49dce0ce2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_unpackdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur.bin Binary files differindex 325dcf47958..44fe06a0605 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur_vsm.bin Binary files differindex e00a2587f3e..176244f5544 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowmaps_vblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_lighting.bin Binary files differindex bc4a60a7d83..0d61a95732d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_texture.bin Binary files differindex 51787654ef6..70366044857 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackblank.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackblank.bin Binary files differindex 1184af2c071..e3c05ffc291 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackcolor.bin Binary files differindex bdf84e0c416..379e9a4ab1d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbackcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex1.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex1.bin Binary files differindex 2fcfd4ff33d..db1369c8603 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex2.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex2.bin Binary files differindex a6fe0fe7559..665ef6ccfaf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontblank.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontblank.bin Binary files differindex 45ca975fde1..cfb9c56401b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontcolor.bin Binary files differindex bdf84e0c416..379e9a4ab1d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfrontcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex1.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex1.bin Binary files differindex 11fe6a568ce..c57e6968026 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex2.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex2.bin Binary files differindex f2fa741d202..f63f4a8e1c9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svside.bin Binary files differindex 5c71e457f84..edf4ad10279 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsideblank.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsideblank.bin Binary files differindex 9fe181388cb..dec121b409b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsideblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsideblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidecolor.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidecolor.bin Binary files differindex b993b530c65..d2f04245012 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidecolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidecolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidetex.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidetex.bin Binary files differindex d64d6efc5a0..4922eca9857 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidetex.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_svsidetex.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture.bin Binary files differindex 2d87b63a218..4e7d4bfbb7f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture_lighting.bin Binary files differindex 17b10b95cec..1d3362a14dd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky.bin Binary files differindex c78ac5816fe..5e49c9591fa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_color_banding_fix.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_color_banding_fix.bin Binary files differindex abcc25523b3..5ad6017a069 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_color_banding_fix.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_color_banding_fix.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_landscape.bin Binary files differindex 50aa653ff83..d56868083c0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh.bin Binary files differindex bd088ef6e45..49c4cf91755 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh_pd.bin Binary files differindex f70f3b90ac0..4a5eab432a8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_mesh_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow.bin Binary files differindex a934ec994bc..b5ba808a10f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow_pd.bin Binary files differindex 8dd1025eba1..0599e261842 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..d6359ce6ea9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..0ec9bcbb808 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..9d689fd8365 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_unlit.bin Binary files differnew file mode 100644 index 00000000000..036d58f384e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_sss_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_black.bin Binary files differindex 29069e6cb91..17b99de6e81 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_lighting.bin Binary files differindex fc9d23f0938..20713b4f492 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_texture.bin Binary files differindex 51787654ef6..70366044857 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture.bin Binary files differindex 2d87b63a218..4e7d4bfbb7f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture_lighting.bin Binary files differindex feb48120118..69015d1349c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain.bin Binary files differindex a89cd44b4a8..b527f9f1196 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..d3c066a7105 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain_render_normal.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain_render_normal.bin Binary files differnew file mode 100644 index 00000000000..c267a0f7d12 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain_render_normal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_tree.bin Binary files differindex 8b4b2cf8f0d..00f8134b9f8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update.bin Binary files differindex 6032f09182a..5d939c59abe 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_3d.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_3d.bin Binary files differindex 45be6d15c22..b285a7ae7bc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_3d.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_3d.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_cmp.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_cmp.bin Binary files differindex 6320d3d15b7..3c850e87246 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_cmp.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_update_cmp.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_upsample.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_upsample.bin Binary files differindex dfb1acc2fad..111e9ca45a8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_upsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_upsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blit.bin Binary files differindex a2a612959fd..41839002fd5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blur.bin Binary files differindex 66daf296c29..a3835c1298c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_fb.bin Binary files differindex 2c71104eeb4..1f76e76c1b1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vt_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vt_mip.bin Binary files differnew file mode 100644 index 00000000000..3517eb75c6f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vt_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vt_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vt_unlit.bin Binary files differnew file mode 100644 index 00000000000..81fd6d12ae3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_vt_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_mesh.bin Binary files differindex 6b793eec524..755eac88bc8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_wireframe.bin Binary files differindex 6a48bed2b7c..3333ce4136a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_albedo_output.bin Binary files differindex 490de47ca1d..722ceb82f77 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_assao.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_assao.bin Binary files differnew file mode 100644 index 00000000000..368f86e3965 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_assao.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..617cad956e1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..417e2ecf706 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bokeh_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bokeh_screenquad.bin Binary files differnew file mode 100644 index 00000000000..8d77bb6796a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bokeh_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump.bin Binary files differindex c0b72c63d3e..35b87364bb3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump_instanced.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump_instanced.bin Binary files differindex 29f3ada84c7..18de405cd14 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump_instanced.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bump_instanced.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..82545abb13b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_callback.bin Binary files differindex 8184803667e..eaeb0b31ad7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_cubes.bin Binary files differindex 150f27f5264..c18cdcac70f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_combine.bin Binary files differindex 16256a7f9e6..75be5b30d32 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug.bin Binary files differindex 16256a7f9e6..75be5b30d32 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin Binary files differindex 150f27f5264..35e349f2a00 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_geom.bin Binary files differindex c0b72c63d3e..7f4c6bfb76d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_light.bin Binary files differindex 16256a7f9e6..75be5b30d32 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..4b88fa296f2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_denoise_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_denoise_screenquad.bin Binary files differnew file mode 100644 index 00000000000..8d77bb6796a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_denoise_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..03cd3f4a8cb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fsr_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fsr_screenquad.bin Binary files differnew file mode 100644 index 00000000000..046aa26aea0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fsr_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fullscreen.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fullscreen.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fullscreen.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_fullscreen.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_instanced_indirect_rendering.bin Binary files differindex 49d175484b4..a0e34057c30 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_instanced_indirect_rendering.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_render_occlusion.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_render_occlusion.bin Binary files differindex f3fe0e8c55e..88fdb8c9ddf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_render_occlusion.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_gdr_render_occlusion.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_blur.bin Binary files differindex 3f2e6933eae..2bc0c9c28e2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_bright.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lum.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lumavg.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_mesh.bin Binary files differindex 0fe83067d1c..e341d730896 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_skybox.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_tonemap.bin Binary files differindex a007e298043..bca741b3f91 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hextile.bin Binary files differnew file mode 100644 index 00000000000..2144166fe4f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_mesh.bin Binary files differindex 0c5aefb66b2..d713871ec3e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_skybox.bin Binary files differindex b37bfca960c..3697a4f8084 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_instancing.bin Binary files differindex 829b75fecf5..40e1417dfd5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_mesh.bin Binary files differindex 6ad523fb0d6..4f0b290d0f8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit.bin Binary files differindex c923a458f8f..272b6c23705 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit_blit.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_oit_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_particle.bin Binary files differindex 8cb4e392809..d8709379961 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_picking_shaded.bin Binary files differindex 886e377980a..fe95b3a3703 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_pom.bin Binary files differindex e40566ff21f..29782beddee 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_raymarching.bin Binary files differindex e4995e045c4..6f6d6c43f20 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_combine.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_gbuffer.bin Binary files differindex c0444c7d3e6..06c9b49018c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_lbuffer.bin Binary files differindex bae04e47c4c..5b6c9bc5d95 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_shadow.bin Binary files differindex 1f6652e4937..64476a0a4a8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color.bin Binary files differindex 398530eeb59..dae7cbc7aa4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting.bin Binary files differindex c300f8c43da..8519a4c08e4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_csm.bin Binary files differindex 79e0c628a72..dfb48f13143 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear.bin Binary files differindex 8eefb898667..df2da4d4b47 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_csm.bin Binary files differindex ac9639886c1..e84018f1b32 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_omni.bin Binary files differindex 1011786aada..05524ebddb8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_omni.bin Binary files differindex a706d0a3ca3..b0c51d0ae48 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_lighting_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_texture.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_depth.bin Binary files differindex 398530eeb59..dae7cbc7aa4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_depth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_hblur.bin Binary files differindex c7d472b1150..8015d696205 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth.bin Binary files differindex 74fd30729a7..c3c8b6999aa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth_linear.bin Binary files differindex d9d5a4a8458..4497ab68452 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture_lighting.bin Binary files differindex 5e5a2908bcc..9b37f812811 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_unpackdepth.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_vblur.bin Binary files differindex 759a54be855..dbf32e105a2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_lighting.bin Binary files differindex 5cf4500b4fb..35f5c497491 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_texture.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svback.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svback.bin Binary files differindex c751e13632b..c047ac53f3a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svfront.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svfront.bin Binary files differindex 398530eeb59..dae7cbc7aa4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svfront.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svfront.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svside.bin Binary files differindex ea98c73dd5a..347153c57b9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture_lighting.bin Binary files differindex 5e5a2908bcc..9b37f812811 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky.bin Binary files differindex 2f4fd1a8bfb..9651c445ab4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky_landscape.bin Binary files differindex d56b6b8df51..4ef0e73ebc7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_mesh.bin Binary files differindex 52587e3324b..250b0ad8dbb 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow.bin Binary files differindex 398530eeb59..dae7cbc7aa4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow_pd.bin Binary files differindex 74fd30729a7..c3c8b6999aa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..9fe17aea59b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sss_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sss_screenquad.bin Binary files differnew file mode 100644 index 00000000000..8d77bb6796a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_sss_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color.bin Binary files differindex 398530eeb59..dae7cbc7aa4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_lighting.bin Binary files differindex 5cf4500b4fb..35f5c497491 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_texture.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture.bin Binary files differindex 16256a7f9e6..c5ec00134c8 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture_lighting.bin Binary files differindex 5e5a2908bcc..9b37f812811 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain.bin Binary files differindex ec58bc7ec2c..ed886917a82 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain_height_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain_height_texture.bin Binary files differindex a21d30a1766..7ed3abec2d5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain_height_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain_height_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..099ea940b0a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_tree.bin Binary files differindex 8cecadc99bb..064baa40335 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_update.bin Binary files differindex 9abf83c62be..6735a7fa8dd 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_vectordisplay_fb.bin Binary files differindex e4995e045c4..6f6d6c43f20 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_vt_generic.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_vt_generic.bin Binary files differnew file mode 100644 index 00000000000..689defe7897 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_vt_generic.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_mesh.bin Binary files differindex 4bbf1385360..3ff8fb8d321 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_wireframe.bin Binary files differindex 54bf815983f..2fa0f940dbe 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_apply.bin Binary files differnew file mode 100644 index 00000000000..735af55a60e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin Binary files differnew file mode 100644 index 00000000000..98022b6911e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q0.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q0.bin Binary files differnew file mode 100644 index 00000000000..39cf8566aef --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q0.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q1.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q1.bin Binary files differnew file mode 100644 index 00000000000..7dc0dcacdae --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q2.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q2.bin Binary files differnew file mode 100644 index 00000000000..fd0ddd17dbb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q3.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q3.bin Binary files differnew file mode 100644 index 00000000000..fb07e7232fc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin Binary files differnew file mode 100644 index 00000000000..acf666066c8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin Binary files differnew file mode 100644 index 00000000000..37b0746914e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_apply.bin Binary files differnew file mode 100644 index 00000000000..8880f638878 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..1c03354de48 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin Binary files differnew file mode 100644 index 00000000000..e14f549ac2e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_a.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_a.bin Binary files differnew file mode 100644 index 00000000000..1fdb6f8f048 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_a.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_b.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_b.bin Binary files differnew file mode 100644 index 00000000000..3bf101f37fe --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_postprocess_importance_map_b.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin Binary files differnew file mode 100644 index 00000000000..e068dd0bf70 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths.bin Binary files differnew file mode 100644 index 00000000000..2a66b83706e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals.bin Binary files differnew file mode 100644 index 00000000000..124c4b36b8e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin Binary files differnew file mode 100644 index 00000000000..9ad7f532e23 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_half.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_half.bin Binary files differnew file mode 100644 index 00000000000..ac6f0078e02 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_prepare_depths_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..fc99d0b3b78 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_smart_blur_wide.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_smart_blur_wide.bin Binary files differnew file mode 100644 index 00000000000..b1476fd8058 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_assao_smart_blur_wide.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_drawindirect.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_drawindirect.bin Binary files differnew file mode 100755 index 00000000000..c871d30b2d7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_drawindirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_drawindirect_count.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_drawindirect_count.bin Binary files differnew file mode 100644 index 00000000000..32ca0a98820 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_drawindirect_count.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_bilinear_16.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_bilinear_16.bin Binary files differnew file mode 100644 index 00000000000..472fa9e2ca3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_bilinear_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_bilinear_32.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_bilinear_32.bin Binary files differnew file mode 100644 index 00000000000..cd4acba5ca4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_bilinear_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_easu_16.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_easu_16.bin Binary files differnew file mode 100644 index 00000000000..1c4c1da28e5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_easu_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_easu_32.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_easu_32.bin Binary files differnew file mode 100644 index 00000000000..acc3bf85cba --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_easu_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_rcas_16.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_rcas_16.bin Binary files differnew file mode 100644 index 00000000000..d3635feaf95 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_rcas_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_rcas_32.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_rcas_32.bin Binary files differnew file mode 100644 index 00000000000..976d0caaae5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_fsr_rcas_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_copy_z.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_copy_z.bin Binary files differnew file mode 100644 index 00000000000..bc3ac311792 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_copy_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_downscale_hi_z.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_downscale_hi_z.bin Binary files differnew file mode 100644 index 00000000000..2d4a64ff6cd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_downscale_hi_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_occlude_props.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_occlude_props.bin Binary files differnew file mode 100644 index 00000000000..ebe79b5b09d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_occlude_props.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_stream_compaction.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_stream_compaction.bin Binary files differnew file mode 100644 index 00000000000..e255e899dcd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_gdr_stream_compaction.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_indirect.bin Binary files differnew file mode 100644 index 00000000000..39b31206568 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_init_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_init_instances.bin Binary files differnew file mode 100644 index 00000000000..3b054765f63 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_init_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_init.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_init.bin Binary files differnew file mode 100644 index 00000000000..2b79451f917 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_init.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_lod.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_lod.bin Binary files differnew file mode 100644 index 00000000000..a9d23c26041 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_lod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_update_draw.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_update_draw.bin Binary files differnew file mode 100644 index 00000000000..efea6da29e1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_update_draw.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_update_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_update_indirect.bin Binary files differnew file mode 100644 index 00000000000..60ee0f97dfd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_terrain_update_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_update.bin Binary files differnew file mode 100644 index 00000000000..59a57eafed7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/cs_update_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_update_instances.bin Binary files differnew file mode 100644 index 00000000000..441f279922b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/cs_update_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_albedo_output.bin Binary files differindex 22af56128ba..e902d7b9774 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_assao_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_assao_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..37392cb2221 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_assao_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..5bf1296fa64 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bloom_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bloom_combine.bin Binary files differindex 0684c1069ee..f12faa8fc33 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bloom_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bloom_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_copy.bin Binary files differnew file mode 100644 index 00000000000..9b8d90c0a46 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..e4d20f97043 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_combine.bin Binary files differnew file mode 100644 index 00000000000..a408380f2f5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_debug.bin Binary files differnew file mode 100644 index 00000000000..ffbc8191c6e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_downsample.bin Binary files differnew file mode 100644 index 00000000000..7db48915a03 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_second_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_second_pass.bin Binary files differnew file mode 100644 index 00000000000..e2a5b4ecb03 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_second_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_single_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_single_pass.bin Binary files differnew file mode 100644 index 00000000000..7e845b40efb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_dof_single_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..e989ae449c8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..e42ca1c791b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..a1a1fa01226 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bokeh_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bump.bin Binary files differindex 2e42593fa72..5a16cdd8a39 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..d3c173ef0d4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_callback.bin Binary files differindex 3cf849aa247..d3c173ef0d4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_cubes.bin Binary files differindex 3ff34192801..3c5b198456e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_clear_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_clear_uav.bin Binary files differnew file mode 100644 index 00000000000..ea4fa38563b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_clear_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_combine.bin Binary files differindex a5ca6ef82d6..db8adfc4f8c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_combine_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_combine_ta.bin Binary files differnew file mode 100644 index 00000000000..625f7a773a7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_combine_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug.bin Binary files differindex aa3ce2b958d..039a60d7a7a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug_line.bin Binary files differindex 3ff34192801..3c5b198456e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug_ta.bin Binary files differnew file mode 100644 index 00000000000..f5d786e14cc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_debug_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_geom.bin Binary files differindex 2006efe204e..a922dac5adc 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light.bin Binary files differindex 14bb098f10c..8c85a648a90 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light_ta.bin Binary files differnew file mode 100644 index 00000000000..0b84b89d6ff --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light_uav.bin Binary files differnew file mode 100644 index 00000000000..05f6ab1e6e7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_deferred_light_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_apply_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_apply_lighting.bin Binary files differnew file mode 100644 index 00000000000..c96d3a1e700 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_apply_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_copy.bin Binary files differnew file mode 100644 index 00000000000..9b8d90c0a46 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..c9821e26fde --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..8cb48c1bb8a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_spatial_3x3.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_spatial_3x3.bin Binary files differnew file mode 100644 index 00000000000..9bebb9ad845 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_spatial_3x3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_spatial_5x5.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_spatial_5x5.bin Binary files differnew file mode 100644 index 00000000000..8b902685183 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_spatial_5x5.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_temporal.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_temporal.bin Binary files differnew file mode 100644 index 00000000000..49d2736edad --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_temporal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_txaa.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_txaa.bin Binary files differnew file mode 100644 index 00000000000..124374d2630 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_denoise_txaa.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_downsample.bin Binary files differindex 8a60126078b..5bdcbc857a7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_downsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..cea87573397 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..e989ae449c8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..e42ca1c791b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_fsr_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_gdr_instanced_indirect_rendering.bin Binary files differnew file mode 100644 index 00000000000..de6b3ea0e74 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_blur.bin Binary files differindex bf46675212b..69d3fbf6a14 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_bright.bin Binary files differindex 880deaa1858..1cd4958cae7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lum.bin Binary files differindex ae47a344f3f..bf6ffbeab3d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lumavg.bin Binary files differindex 08269ef0f87..ab499f188c7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_mesh.bin Binary files differindex ff6164f00e3..cb59715419f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_skybox.bin Binary files differindex ea3da4bdd86..e4b5ab96c4c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_tonemap.bin Binary files differindex 47cdd426aee..9b6539626ad 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hextile.bin Binary files differnew file mode 100644 index 00000000000..8aca708a9ec --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_mesh.bin Binary files differindex 55bdde44b34..1c3f2442ae1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_skybox.bin Binary files differindex 8c26433b29e..9d6ee1ad2e5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_instancing.bin Binary files differindex 3ff34192801..3c5b198456e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_mesh.bin Binary files differindex f7b6f828bc5..ddc1c74fd30 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit.bin Binary files differindex 59843e09a91..a2770216d7a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb.bin Binary files differindex 733759d17c4..2df948cf565 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_blit.bin Binary files differindex a447eaf52c2..be4d580e5d7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate.bin Binary files differindex 92fc0493538..fe19ccc11c7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate_blit.bin Binary files differindex db9c5777c39..16cfa000952 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_oit_wb_separate_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_particle.bin Binary files differindex c0479fff088..de282dc3a58 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_id.bin Binary files differindex 713c3374d0d..baf8d528f74 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_id.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_id.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_shaded.bin Binary files differindex 2234b998952..a63a5900039 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_pom.bin Binary files differindex 89d540e6853..e88822e9fd1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_raymarching.bin Binary files differindex 50352ac8ef3..24493299f17 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_combine.bin Binary files differindex b756180c47a..3c2f162d2a9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_gbuffer.bin Binary files differindex 6549b3f98cb..a496c772b0a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_lbuffer.bin Binary files differindex b6a7af399b0..d81099b0eae 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_shadow.bin Binary files differindex 54ae85bae7f..5cd495188ff 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_screen_space_shadows.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_screen_space_shadows.bin Binary files differnew file mode 100644 index 00000000000..22b08628a16 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_screen_space_shadows.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_black.bin Binary files differindex 0b9dc1ffa90..6f4a04c5654 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm.bin Binary files differindex 2ff67615d5c..39768c3de98 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_csm.bin Binary files differindex eb179b9ffcf..12718c07c56 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear.bin Binary files differindex 7157b0b6d12..7c0fdb6622e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_csm.bin Binary files differindex 8198b2df2de..a8998f6257d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_omni.bin Binary files differindex 403470ec625..2ba674e7baf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_omni.bin Binary files differindex 593cd036204..60a9997c432 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard.bin Binary files differindex 7be4bae158f..bd51c83232e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_csm.bin Binary files differindex 3f9ebfa96ca..19c82e96baa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear.bin Binary files differindex 46325b9db70..a9915e6bc0c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_csm.bin Binary files differindex d30a38a588a..a5dee4ee1ae 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_omni.bin Binary files differindex 2d9586aa730..94f84bcd36c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_omni.bin Binary files differindex 1b879ce485e..38d4f13f681 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf.bin Binary files differindex 6f1683b2410..adecc61d6b7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_csm.bin Binary files differindex 3dda9c959a3..6e74001a56c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear.bin Binary files differindex 487b206ac3e..d6f85b93274 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_csm.bin Binary files differindex 6262c494a5a..ed6ce55f27c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_omni.bin Binary files differindex 8c9a8b52ac9..67d3d6c6b4a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_omni.bin Binary files differindex 0150fb5f31d..ed45658541a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm.bin Binary files differindex 56ed7b3d214..395727c541f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_csm.bin Binary files differindex 983d0ac0e7e..c687f1fde43 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear.bin Binary files differindex db266dea6bd..ac4ae8a771c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_csm.bin Binary files differindex 0a098eeba9a..e1feaa515bf 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_omni.bin Binary files differindex ccae510cca8..541214e8847 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_omni.bin Binary files differindex acb4ca6af46..58ffb2e7e97 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_texture.bin Binary files differindex 0f49175dec6..8535afb5464 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur.bin Binary files differindex 9666abdfe9b..2df871e798e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur_vsm.bin Binary files differindex 5d79cc7be9b..db044bd1950 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_hblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth.bin Binary files differindex ec868c565f1..a43166ee614 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_linear.bin Binary files differindex 10126128fb3..ad36ee45926 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm.bin Binary files differindex 83cf33547b9..faaafd78cf0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm_linear.bin Binary files differindex 8689cf2d8d0..e4ab6de7056 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_packdepth_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_texture.bin Binary files differindex aa3ce2b958d..039a60d7a7a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth.bin Binary files differindex 6897465fb64..acf8e51a832 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth_vsm.bin Binary files differindex b66be6cbc46..a14b811d02d 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur.bin Binary files differindex 9666abdfe9b..2df871e798e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur_vsm.bin Binary files differindex 5d79cc7be9b..db044bd1950 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur_vsm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowmaps_vblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_lighting.bin Binary files differindex 12744a9eb0f..d03d0e164a7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_texture.bin Binary files differindex 0f49175dec6..8535afb5464 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackblank.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackblank.bin Binary files differindex 0c544141a79..31325ebffe1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackcolor.bin Binary files differindex 15a8e36e021..f9cef1dcfd7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbackcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex1.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex1.bin Binary files differindex 037a6f38f98..a223eea71f0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex2.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex2.bin Binary files differindex 0412c30690d..f943776bf52 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svbacktex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontblank.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontblank.bin Binary files differindex b1fa9c7bc3d..99a4148c9a3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontcolor.bin Binary files differindex 15a8e36e021..f9cef1dcfd7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontcolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfrontcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex1.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex1.bin Binary files differindex 5bbc27209ad..4700728a1ea 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex1.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex2.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex2.bin Binary files differindex 06d7d37fadb..c702d2dc1e3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex2.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svfronttex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svside.bin Binary files differindex 79e25c011ef..466c6c75843 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsideblank.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsideblank.bin Binary files differindex 4700c389428..2dae8c4729f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsideblank.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsideblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidecolor.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidecolor.bin Binary files differindex 49e205087b0..739e0adc477 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidecolor.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidecolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidetex.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidetex.bin Binary files differindex b3080f5a87d..74e302e7833 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidetex.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_svsidetex.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture.bin Binary files differindex aa3ce2b958d..039a60d7a7a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture_lighting.bin Binary files differindex a5f8a29547a..eb7469e0c11 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky.bin Binary files differindex ec4e5e83bba..b6c9327a2fb 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_color_banding_fix.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_color_banding_fix.bin Binary files differindex 133d6b9fceb..e1486e62145 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_color_banding_fix.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_color_banding_fix.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_landscape.bin Binary files differindex dac3a52b303..05cdc843c8f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh.bin Binary files differindex 1805ebf3bac..38f098af962 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh_pd.bin Binary files differindex 0c038195456..59813b887e7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_mesh_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow.bin Binary files differindex 4c3ca0d8656..6f4a04c5654 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow_pd.bin Binary files differindex 4e7434fbb90..f3ff6246c75 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..822281f62d5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..bcf7fb1ba55 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..757abadfebf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_unlit.bin Binary files differnew file mode 100644 index 00000000000..34e421c8b00 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sss_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_black.bin Binary files differindex 0b9dc1ffa90..6f4a04c5654 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_black.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_lighting.bin Binary files differindex 3ed40ba63d0..6b83db7d26f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_texture.bin Binary files differindex 0f49175dec6..8535afb5464 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture.bin Binary files differindex aa3ce2b958d..039a60d7a7a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture_lighting.bin Binary files differindex 1b0f07511e0..b180c3c079f 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain.bin Binary files differindex c4f090cb1c4..7092e84b1f6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..0e112258300 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain_render_normal.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain_render_normal.bin Binary files differnew file mode 100644 index 00000000000..583499a946c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_terrain_render_normal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_tree.bin Binary files differindex b55308694ff..1472bb8331c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update.bin Binary files differindex fdf013b07f2..5b028ca4ee4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_3d.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_3d.bin Binary files differindex 0a6165da7ce..9698ebb9c20 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_3d.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_3d.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_cmp.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_cmp.bin Binary files differindex d8ad1f1e54c..84e16847bd9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_cmp.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_update_cmp.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_upsample.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_upsample.bin Binary files differindex 69cf6e3467b..ae7df384e86 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_upsample.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_upsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blit.bin Binary files differindex beab7df8116..d4fe38d2096 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blur.bin Binary files differindex c56cea09a34..e89758b77d7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_fb.bin Binary files differindex 84adfc2f5e4..3da7455a4b6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vt_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vt_mip.bin Binary files differnew file mode 100644 index 00000000000..d42339c5c09 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vt_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vt_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vt_unlit.bin Binary files differnew file mode 100644 index 00000000000..3d00906f7bf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_vt_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_mesh.bin Binary files differindex e6f8deee158..27641e60de3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_wireframe.bin Binary files differindex 5eaa7b107c2..20a83a0e9c3 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_albedo_output.bin Binary files differindex 021b33ca896..83f7eaf7d96 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_albedo_output.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_assao.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_assao.bin Binary files differnew file mode 100644 index 00000000000..d6e80e65ed0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_assao.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..f91f8c72446 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..e99b6d1c82b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bokeh_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bokeh_screenquad.bin Binary files differnew file mode 100644 index 00000000000..8cb8483ea2b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bokeh_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump.bin Binary files differindex dc9015d6296..f66bb152eea 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump_instanced.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump_instanced.bin Binary files differindex d6eaa41e790..8b7efc2481b 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump_instanced.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bump_instanced.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..08623032129 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_callback.bin Binary files differindex 31436982b1d..26d952d76b1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_callback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_cubes.bin Binary files differindex c6826ec90b4..25ca9acd3bb 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_cubes.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_combine.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug_line.bin Binary files differindex c6826ec90b4..25ca9acd3bb 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug_line.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_geom.bin Binary files differindex dc9015d6296..68bf21ec0fa 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_geom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_light.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_light.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..83000ea2e98 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_denoise_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_denoise_screenquad.bin Binary files differnew file mode 100644 index 00000000000..8cb8483ea2b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_denoise_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..9d5930e78bd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fsr_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fsr_screenquad.bin Binary files differnew file mode 100644 index 00000000000..8cb8483ea2b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fsr_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fullscreen.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fullscreen.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fullscreen.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_fullscreen.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_gdr_instanced_indirect_rendering.bin Binary files differnew file mode 100644 index 00000000000..1c838c907ab --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_gdr_render_occlusion.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_gdr_render_occlusion.bin Binary files differnew file mode 100644 index 00000000000..fa720ecc909 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_gdr_render_occlusion.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_blur.bin Binary files differindex 62023765f7e..baf06fa5577 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_blur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_bright.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_bright.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lum.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lum.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lumavg.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lumavg.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_mesh.bin Binary files differindex 35cb1fbd589..f42ce4b416a 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_skybox.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_tonemap.bin Binary files differindex 88f4a3d2459..b94d6dfa492 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_tonemap.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hextile.bin Binary files differnew file mode 100644 index 00000000000..a1348181aeb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_mesh.bin Binary files differindex 5ea1732c970..f7a54c3f094 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_skybox.bin Binary files differindex e8581859832..8bafd7acd49 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_skybox.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_instancing.bin Binary files differindex 2da0b2e7c3d..a419af98007 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_instancing.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_mesh.bin Binary files differindex 83299cce6fd..59a2df057e6 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit.bin Binary files differindex aaba13f3c50..3c21a1c4dd4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit_blit.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit_blit.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_oit_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_particle.bin Binary files differindex f5d16233ab4..e6e9d33dd44 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_particle.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_picking_shaded.bin Binary files differindex 5f2a7ddc0ee..af7e68ca5d7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_picking_shaded.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_pom.bin Binary files differindex 6d70812e971..aca34b930be 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_pom.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_raymarching.bin Binary files differindex d2c5d3574d6..60037f46832 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_raymarching.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_combine.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_combine.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin Binary files differindex cdeadb1e612..724fefdfc11 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin Binary files differindex 81cf0473356..396b069fbc7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_shadow.bin Binary files differindex e01a613a734..2141af3660e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color.bin Binary files differindex a7eab4ec79e..2f8e28d7171 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting.bin Binary files differindex bd572fddd01..d6c04f1715c 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_csm.bin Binary files differindex 77b298dbe31..d2afd4846a5 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear.bin Binary files differindex 610535969fa..8b8973cc963 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_csm.bin Binary files differindex 50e1c7b2b5b..63714772395 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_csm.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_omni.bin Binary files differindex 17b07549e51..9741c8e499e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_omni.bin Binary files differindex 3bf3cf46c4d..0aa5e844ac7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_omni.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_lighting_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_texture.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_depth.bin Binary files differindex a7eab4ec79e..2f8e28d7171 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_depth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_hblur.bin Binary files differindex 1aa88bb8368..51548a15c93 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_hblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth.bin Binary files differindex 722827816c1..012fce2f008 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth_linear.bin Binary files differindex 3b5933b213f..01d0f5c98f1 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth_linear.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture_lighting.bin Binary files differindex 05d1f6c0a06..0faa79e4f75 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_unpackdepth.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_unpackdepth.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_vblur.bin Binary files differindex f307801ad06..8124dc15999 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_vblur.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_lighting.bin Binary files differindex 960f0aaeded..8c67f4be4f7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_texture.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svback.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svback.bin Binary files differindex 780a29fdbe4..0a722b9570e 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svback.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svfront.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svfront.bin Binary files differindex a7eab4ec79e..2f8e28d7171 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svfront.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svfront.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svside.bin Binary files differindex 3e0b8936b7a..4de8c6dcab0 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svside.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture_lighting.bin Binary files differindex 05d1f6c0a06..0faa79e4f75 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky.bin Binary files differindex bec2f65e0d2..8c0d0be1be4 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky_landscape.bin Binary files differindex c01ad2cb6c0..28a54011dc9 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky_landscape.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_mesh.bin Binary files differindex e65f2dfd712..ba23b791da2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow.bin Binary files differindex a7eab4ec79e..2f8e28d7171 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow_pd.bin Binary files differindex 722827816c1..012fce2f008 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow_pd.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..2a683784c16 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sss_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sss_screenquad.bin Binary files differnew file mode 100644 index 00000000000..8cb8483ea2b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_sss_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color.bin Binary files differindex a7eab4ec79e..2f8e28d7171 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_lighting.bin Binary files differindex 960f0aaeded..27bd999fca7 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_texture.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture.bin Binary files differindex 6706c0b40c7..b1a3b159855 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture_lighting.bin Binary files differindex 05d1f6c0a06..0faa79e4f75 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture_lighting.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain.bin Binary files differindex 8ab1985418c..33415306ca2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain_height_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain_height_texture.bin Binary files differindex 17cdcc658f5..a04bee74102 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain_height_texture.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain_height_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..ab94c09f435 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_tree.bin Binary files differindex 80f396921f1..ab40b01d945 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_tree.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_update.bin Binary files differindex fdfcd937207..1d46f924186 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_update.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_vectordisplay_fb.bin Binary files differindex d2c5d3574d6..60037f46832 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_vectordisplay_fb.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_vt_generic.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_vt_generic.bin Binary files differnew file mode 100644 index 00000000000..be9fa8b7ade --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_vt_generic.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_mesh.bin Binary files differindex d7c95e4d91b..e1284f20983 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_mesh.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_wireframe.bin Binary files differindex 35b9e5fdc82..199b8aa86b2 100644 --- a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_wireframe.bin +++ b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_apply.bin Binary files differnew file mode 100644 index 00000000000..b6fe1e42212 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_importance_map.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_importance_map.bin Binary files differnew file mode 100644 index 00000000000..363172c7c06 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_importance_map.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q0.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q0.bin Binary files differnew file mode 100644 index 00000000000..0a43948c93c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q0.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q1.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q1.bin Binary files differnew file mode 100644 index 00000000000..c9533188c92 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q2.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q2.bin Binary files differnew file mode 100644 index 00000000000..ad633ed753d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q3.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q3.bin Binary files differnew file mode 100644 index 00000000000..280bbc2220b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q3base.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q3base.bin Binary files differnew file mode 100644 index 00000000000..0271690db8f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_generate_q3base.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_load_counter_clear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_load_counter_clear.bin Binary files differnew file mode 100644 index 00000000000..0e4f4c278dc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_load_counter_clear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_apply.bin Binary files differnew file mode 100644 index 00000000000..bcf4bcc4e8b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..278c846d280 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_half_apply.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_half_apply.bin Binary files differnew file mode 100644 index 00000000000..05d75691d9a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_non_smart_half_apply.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_postprocess_importance_map_a.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_postprocess_importance_map_a.bin Binary files differnew file mode 100644 index 00000000000..27ab1d9e0d7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_postprocess_importance_map_a.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_postprocess_importance_map_b.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_postprocess_importance_map_b.bin Binary files differnew file mode 100644 index 00000000000..3b662984867 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_postprocess_importance_map_b.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depth_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depth_mip.bin Binary files differnew file mode 100644 index 00000000000..cee85033184 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depth_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths.bin Binary files differnew file mode 100644 index 00000000000..9e068684a88 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_and_normals.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_and_normals.bin Binary files differnew file mode 100644 index 00000000000..b24c491d9c2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_and_normals.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_and_normals_half.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_and_normals_half.bin Binary files differnew file mode 100644 index 00000000000..91df55a4a4c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_and_normals_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_half.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_half.bin Binary files differnew file mode 100644 index 00000000000..86ea34cb422 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_prepare_depths_half.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_smart_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_smart_blur.bin Binary files differnew file mode 100644 index 00000000000..a2d785ae90c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_smart_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_smart_blur_wide.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_smart_blur_wide.bin Binary files differnew file mode 100644 index 00000000000..f0b1e8f6eeb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_assao_smart_blur_wide.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_drawindirect.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_drawindirect.bin Binary files differnew file mode 100755 index 00000000000..cfec922acfe --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_drawindirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_drawindirect_count.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_drawindirect_count.bin Binary files differnew file mode 100644 index 00000000000..9b672b584c2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_drawindirect_count.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_bilinear_16.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_bilinear_16.bin Binary files differnew file mode 100644 index 00000000000..8769d916fd3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_bilinear_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_bilinear_32.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_bilinear_32.bin Binary files differnew file mode 100644 index 00000000000..f342749d506 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_bilinear_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_easu_16.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_easu_16.bin Binary files differnew file mode 100644 index 00000000000..9857ef319b2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_easu_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_easu_32.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_easu_32.bin Binary files differnew file mode 100644 index 00000000000..d7478886c8c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_easu_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_rcas_16.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_rcas_16.bin Binary files differnew file mode 100644 index 00000000000..7802bec591e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_rcas_16.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_rcas_32.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_rcas_32.bin Binary files differnew file mode 100644 index 00000000000..814e45b6b27 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_fsr_rcas_32.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_copy_z.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_copy_z.bin Binary files differnew file mode 100644 index 00000000000..ba08db54612 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_copy_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_downscale_hi_z.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_downscale_hi_z.bin Binary files differnew file mode 100644 index 00000000000..46700209058 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_downscale_hi_z.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_occlude_props.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_occlude_props.bin Binary files differnew file mode 100644 index 00000000000..cb2f4c86cc6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_occlude_props.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_stream_compaction.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_stream_compaction.bin Binary files differnew file mode 100644 index 00000000000..e83539f2482 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_gdr_stream_compaction.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_indirect.bin Binary files differnew file mode 100644 index 00000000000..5d7c5143be2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_init_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_init_instances.bin Binary files differnew file mode 100644 index 00000000000..d44b5ba9f44 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_init_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_init.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_init.bin Binary files differnew file mode 100644 index 00000000000..c89104922f3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_init.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_lod.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_lod.bin Binary files differnew file mode 100644 index 00000000000..e5a1773ace1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_lod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_update_draw.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_update_draw.bin Binary files differnew file mode 100644 index 00000000000..3106f019f37 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_update_draw.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_update_indirect.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_update_indirect.bin Binary files differnew file mode 100644 index 00000000000..fb4131aa2f8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_terrain_update_indirect.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_update.bin Binary files differnew file mode 100644 index 00000000000..a6619986050 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_update_instances.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_update_instances.bin Binary files differnew file mode 100644 index 00000000000..ff8ac0287f5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/cs_update_instances.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_albedo_output.bin Binary files differnew file mode 100644 index 00000000000..3b94290a91d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_assao_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_assao_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..99523a1947c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_assao_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..565eeec3b14 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bloom_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bloom_combine.bin Binary files differnew file mode 100644 index 00000000000..25d3dbb041c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bloom_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_copy.bin Binary files differnew file mode 100644 index 00000000000..925ddad3ad8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..c1f2bf2f4fd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_combine.bin Binary files differnew file mode 100644 index 00000000000..dfe30963a5e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_debug.bin Binary files differnew file mode 100644 index 00000000000..58f5768f6b8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_downsample.bin Binary files differnew file mode 100644 index 00000000000..05b1a60d084 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_second_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_second_pass.bin Binary files differnew file mode 100644 index 00000000000..c2b6e971b67 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_second_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_single_pass.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_single_pass.bin Binary files differnew file mode 100644 index 00000000000..3247acbf31d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_dof_single_pass.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..f89df664ef4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..218ac86a2bf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..dcfb81f9bb3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bokeh_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bump.bin Binary files differnew file mode 100644 index 00000000000..3e19a62ef77 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..f41369ec80d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_callback.bin Binary files differnew file mode 100644 index 00000000000..f41369ec80d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_cubes.bin Binary files differnew file mode 100644 index 00000000000..d863400ac58 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_clear_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_clear_uav.bin Binary files differnew file mode 100644 index 00000000000..a38366487d1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_clear_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..dfee6471572 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_combine_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_combine_ta.bin Binary files differnew file mode 100644 index 00000000000..b288cbe5dc2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_combine_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug.bin Binary files differnew file mode 100644 index 00000000000..49479d627be --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug_line.bin Binary files differnew file mode 100644 index 00000000000..d863400ac58 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug_ta.bin Binary files differnew file mode 100644 index 00000000000..8018c88f83a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_debug_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_geom.bin Binary files differnew file mode 100644 index 00000000000..34a906112f2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light.bin Binary files differnew file mode 100644 index 00000000000..2cff13e05e4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light_ta.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light_ta.bin Binary files differnew file mode 100644 index 00000000000..c6b2a6943f1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light_ta.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light_uav.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light_uav.bin Binary files differnew file mode 100644 index 00000000000..ee1b8a330f0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_deferred_light_uav.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_apply_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_apply_lighting.bin Binary files differnew file mode 100644 index 00000000000..eeabafb0728 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_apply_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_copy.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_copy.bin Binary files differnew file mode 100644 index 00000000000..925ddad3ad8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_copy.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..7c5e8eb95ef --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..4dc6443302d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_spatial_3x3.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_spatial_3x3.bin Binary files differnew file mode 100644 index 00000000000..33d36a3bbd5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_spatial_3x3.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_spatial_5x5.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_spatial_5x5.bin Binary files differnew file mode 100644 index 00000000000..0ae48231b81 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_spatial_5x5.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_temporal.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_temporal.bin Binary files differnew file mode 100644 index 00000000000..86837123f45 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_temporal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_txaa.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_txaa.bin Binary files differnew file mode 100644 index 00000000000..cda8b5cbdfd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_denoise_txaa.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_downsample.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_downsample.bin Binary files differnew file mode 100644 index 00000000000..a5789075402 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_downsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_copy_linear_to_gamma.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_copy_linear_to_gamma.bin Binary files differnew file mode 100644 index 00000000000..f8a0bfa75ff --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_copy_linear_to_gamma.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..f89df664ef4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_forward_grid.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_forward_grid.bin Binary files differnew file mode 100644 index 00000000000..218ac86a2bf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_fsr_forward_grid.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_gdr_instanced_indirect_rendering.bin Binary files differnew file mode 100644 index 00000000000..37a3ad1bb67 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_blur.bin Binary files differnew file mode 100644 index 00000000000..8726fc35470 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_bright.bin Binary files differnew file mode 100644 index 00000000000..590c90c7bcd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_lum.bin Binary files differnew file mode 100644 index 00000000000..f95afb3f57f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_lumavg.bin Binary files differnew file mode 100644 index 00000000000..62706f8258e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_mesh.bin Binary files differnew file mode 100644 index 00000000000..9ce802355e5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_skybox.bin Binary files differnew file mode 100644 index 00000000000..a651277dbdf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_tonemap.bin Binary files differnew file mode 100644 index 00000000000..5fe4b247fc9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hextile.bin Binary files differnew file mode 100644 index 00000000000..45e39e53438 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_ibl_mesh.bin Binary files differnew file mode 100644 index 00000000000..6bee5583ca6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_ibl_skybox.bin Binary files differnew file mode 100644 index 00000000000..12d383c6b1c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_instancing.bin Binary files differnew file mode 100644 index 00000000000..d863400ac58 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_mesh.bin Binary files differnew file mode 100644 index 00000000000..f58222af5ac --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit.bin Binary files differnew file mode 100644 index 00000000000..d65bcb6d747 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb.bin Binary files differnew file mode 100644 index 00000000000..fadb68cb65e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_blit.bin Binary files differnew file mode 100644 index 00000000000..0a6158ccba2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_separate.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_separate.bin Binary files differnew file mode 100644 index 00000000000..4ec8c9399f8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_separate.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_separate_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_separate_blit.bin Binary files differnew file mode 100644 index 00000000000..f02a5c449a6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_oit_wb_separate_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_particle.bin Binary files differnew file mode 100644 index 00000000000..fbb067b8ee2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_picking_id.bin Binary files differnew file mode 100644 index 00000000000..638bcfebce9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_picking_id.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_picking_shaded.bin Binary files differnew file mode 100644 index 00000000000..fae9b5a0cb9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_pom.bin Binary files differnew file mode 100644 index 00000000000..b900f054e16 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_raymarching.bin Binary files differnew file mode 100644 index 00000000000..14b41e2634b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_combine.bin Binary files differnew file mode 100644 index 00000000000..0decfa13df7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..24c4540f5bb --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_lbuffer.bin Binary files differnew file mode 100644 index 00000000000..1fe52db514d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_shadow.bin Binary files differnew file mode 100644 index 00000000000..448318292f3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_screen_space_shadows.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_screen_space_shadows.bin Binary files differnew file mode 100644 index 00000000000..93d9a7dc6c8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_screen_space_shadows.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_black.bin Binary files differnew file mode 100644 index 00000000000..070497da1f1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm.bin Binary files differnew file mode 100644 index 00000000000..1a51a7c48b0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_csm.bin Binary files differnew file mode 100644 index 00000000000..9e11d13ddb5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear.bin Binary files differnew file mode 100644 index 00000000000..9fefc49a590 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear_csm.bin Binary files differnew file mode 100644 index 00000000000..535ebf3210f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear_omni.bin Binary files differnew file mode 100644 index 00000000000..0ab0bd89bbe --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_omni.bin Binary files differnew file mode 100644 index 00000000000..16315782687 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_esm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard.bin Binary files differnew file mode 100644 index 00000000000..ee548ee4f34 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_csm.bin Binary files differnew file mode 100644 index 00000000000..5e955f9811d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear.bin Binary files differnew file mode 100644 index 00000000000..f9018728bca --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear_csm.bin Binary files differnew file mode 100644 index 00000000000..c37c9916226 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear_omni.bin Binary files differnew file mode 100644 index 00000000000..0e134c373ec --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_omni.bin Binary files differnew file mode 100644 index 00000000000..b63adea48c8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_hard_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf.bin Binary files differnew file mode 100644 index 00000000000..0b0a75b0ab2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_csm.bin Binary files differnew file mode 100644 index 00000000000..7edd111316d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear.bin Binary files differnew file mode 100644 index 00000000000..bb03cf38b3c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear_csm.bin Binary files differnew file mode 100644 index 00000000000..dd657c868d6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear_omni.bin Binary files differnew file mode 100644 index 00000000000..2fa4e4bc5b1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_omni.bin Binary files differnew file mode 100644 index 00000000000..a5256e84074 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_pcf_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm.bin Binary files differnew file mode 100644 index 00000000000..32e360b7902 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_csm.bin Binary files differnew file mode 100644 index 00000000000..42f08b75a6f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear.bin Binary files differnew file mode 100644 index 00000000000..50b1348949c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear_csm.bin Binary files differnew file mode 100644 index 00000000000..565ef78ffdc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear_omni.bin Binary files differnew file mode 100644 index 00000000000..4c73341a7be --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_omni.bin Binary files differnew file mode 100644 index 00000000000..0f04daef0d2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_lighting_vsm_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_texture.bin Binary files differnew file mode 100644 index 00000000000..8d6ce8fd053 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_hblur.bin Binary files differnew file mode 100644 index 00000000000..353cec8ed63 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_hblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_hblur_vsm.bin Binary files differnew file mode 100644 index 00000000000..d08787b2595 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_hblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth.bin Binary files differnew file mode 100644 index 00000000000..8e00753d7a7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_linear.bin Binary files differnew file mode 100644 index 00000000000..ebf99a0c995 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_vsm.bin Binary files differnew file mode 100644 index 00000000000..191ad6952dd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_vsm_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_vsm_linear.bin Binary files differnew file mode 100644 index 00000000000..5ad5465e3ed --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_packdepth_vsm_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_texture.bin Binary files differnew file mode 100644 index 00000000000..49479d627be --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_unpackdepth.bin Binary files differnew file mode 100644 index 00000000000..e505288046f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_unpackdepth_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_unpackdepth_vsm.bin Binary files differnew file mode 100644 index 00000000000..339f4ae45a2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_unpackdepth_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_vblur.bin Binary files differnew file mode 100644 index 00000000000..353cec8ed63 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_vblur_vsm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_vblur_vsm.bin Binary files differnew file mode 100644 index 00000000000..d08787b2595 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowmaps_vblur_vsm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_color_lighting.bin Binary files differnew file mode 100644 index 00000000000..64fe767c5cd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_color_texture.bin Binary files differnew file mode 100644 index 00000000000..8d6ce8fd053 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbackblank.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbackblank.bin Binary files differnew file mode 100644 index 00000000000..8b566a8dd8e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbackblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbackcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbackcolor.bin Binary files differnew file mode 100644 index 00000000000..5fb1843c3ee --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbackcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbacktex1.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbacktex1.bin Binary files differnew file mode 100644 index 00000000000..86cb8874e11 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbacktex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbacktex2.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbacktex2.bin Binary files differnew file mode 100644 index 00000000000..45cd4f787d5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svbacktex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfrontblank.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfrontblank.bin Binary files differnew file mode 100644 index 00000000000..6d3830d3f43 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfrontblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfrontcolor.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfrontcolor.bin Binary files differnew file mode 100644 index 00000000000..5fb1843c3ee --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfrontcolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfronttex1.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfronttex1.bin Binary files differnew file mode 100644 index 00000000000..b07adfca9e5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfronttex1.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfronttex2.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfronttex2.bin Binary files differnew file mode 100644 index 00000000000..798468ad91e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svfronttex2.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svside.bin Binary files differnew file mode 100644 index 00000000000..b0b4d3f7bee --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsideblank.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsideblank.bin Binary files differnew file mode 100644 index 00000000000..7800541319c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsideblank.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsidecolor.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsidecolor.bin Binary files differnew file mode 100644 index 00000000000..557d6602d50 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsidecolor.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsidetex.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsidetex.bin Binary files differnew file mode 100644 index 00000000000..b24b7226867 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_svsidetex.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_texture.bin Binary files differnew file mode 100644 index 00000000000..49479d627be --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_texture_lighting.bin Binary files differnew file mode 100644 index 00000000000..a90f552fe40 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky.bin Binary files differnew file mode 100644 index 00000000000..99ef5c23325 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky_color_banding_fix.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky_color_banding_fix.bin Binary files differnew file mode 100644 index 00000000000..48440d1ae95 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky_color_banding_fix.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky_landscape.bin Binary files differnew file mode 100644 index 00000000000..d9bef5abb59 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_mesh.bin Binary files differnew file mode 100644 index 00000000000..662128b208c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_mesh_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_mesh_pd.bin Binary files differnew file mode 100644 index 00000000000..4677bff6531 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_mesh_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_shadow.bin Binary files differnew file mode 100644 index 00000000000..2b0dc189ce3 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_shadow_pd.bin Binary files differnew file mode 100644 index 00000000000..74321b99e6d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..295aa8b3991 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..1114f3eeff8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_linear_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_linear_depth.bin Binary files differnew file mode 100644 index 00000000000..a336eccd5ea --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_linear_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_unlit.bin Binary files differnew file mode 100644 index 00000000000..a80bd52f597 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_sss_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_black.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_black.bin Binary files differnew file mode 100644 index 00000000000..070497da1f1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_black.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_lighting.bin Binary files differnew file mode 100644 index 00000000000..d56f5a8236c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_texture.bin Binary files differnew file mode 100644 index 00000000000..8d6ce8fd053 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_texture.bin Binary files differnew file mode 100644 index 00000000000..49479d627be --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_texture_lighting.bin Binary files differnew file mode 100644 index 00000000000..e09fe0ff574 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain.bin Binary files differnew file mode 100644 index 00000000000..dfd3eb670a2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..6d7c4bf19db --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain_render_normal.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain_render_normal.bin Binary files differnew file mode 100644 index 00000000000..ec73b1a2653 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_terrain_render_normal.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_tree.bin Binary files differnew file mode 100644 index 00000000000..0b45e637907 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update.bin Binary files differnew file mode 100644 index 00000000000..1d512777303 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update_3d.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update_3d.bin Binary files differnew file mode 100644 index 00000000000..8ef332abb94 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update_3d.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update_cmp.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update_cmp.bin Binary files differnew file mode 100644 index 00000000000..52418f79296 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_update_cmp.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_upsample.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_upsample.bin Binary files differnew file mode 100644 index 00000000000..b0e6ffa5ab6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_upsample.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_blit.bin Binary files differnew file mode 100644 index 00000000000..32c9e1db0e5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_blur.bin Binary files differnew file mode 100644 index 00000000000..b7bbe828c12 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_fb.bin Binary files differnew file mode 100644 index 00000000000..9666230b8da --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vt_mip.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vt_mip.bin Binary files differnew file mode 100644 index 00000000000..9f1bb9437e8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vt_mip.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vt_unlit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vt_unlit.bin Binary files differnew file mode 100644 index 00000000000..bfedf4948b5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_vt_unlit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_wf_mesh.bin Binary files differnew file mode 100644 index 00000000000..6ac6f40c177 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_wf_wireframe.bin Binary files differnew file mode 100644 index 00000000000..3ac95e9bd2d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/fs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_albedo_output.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_albedo_output.bin Binary files differnew file mode 100644 index 00000000000..14c8e76d0d0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_albedo_output.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_assao.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_assao.bin Binary files differnew file mode 100644 index 00000000000..d4e0ffc74b1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_assao.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_assao_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_assao_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..9599818569b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_assao_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bokeh_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bokeh_forward.bin Binary files differnew file mode 100644 index 00000000000..7863f8a9453 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bokeh_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bokeh_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bokeh_screenquad.bin Binary files differnew file mode 100644 index 00000000000..435bc278ab9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bokeh_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bump.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bump.bin Binary files differnew file mode 100644 index 00000000000..5ddd164c7b1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bump.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bump_instanced.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bump_instanced.bin Binary files differnew file mode 100644 index 00000000000..55cdbdfe47a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bump_instanced.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bunnylod.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bunnylod.bin Binary files differnew file mode 100644 index 00000000000..af67ce37b26 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_bunnylod.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_callback.bin Binary files differnew file mode 100644 index 00000000000..d66216aed1c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_callback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_cubes.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_cubes.bin Binary files differnew file mode 100644 index 00000000000..867b9f218cc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_cubes.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_combine.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_debug.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_debug.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_debug.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_debug_line.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_debug_line.bin Binary files differnew file mode 100644 index 00000000000..867b9f218cc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_debug_line.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_geom.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_geom.bin Binary files differnew file mode 100644 index 00000000000..783869003be --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_geom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_light.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_light.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_deferred_light.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_denoise_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_denoise_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..e7456b5acf6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_denoise_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_denoise_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_denoise_screenquad.bin Binary files differnew file mode 100644 index 00000000000..435bc278ab9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_denoise_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fsr_forward.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fsr_forward.bin Binary files differnew file mode 100644 index 00000000000..4b7946f012b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fsr_forward.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fsr_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fsr_screenquad.bin Binary files differnew file mode 100644 index 00000000000..435bc278ab9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fsr_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fullscreen.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fullscreen.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_fullscreen.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_gdr_instanced_indirect_rendering.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_gdr_instanced_indirect_rendering.bin Binary files differnew file mode 100644 index 00000000000..38e8fc2e670 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_gdr_instanced_indirect_rendering.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_gdr_render_occlusion.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_gdr_render_occlusion.bin Binary files differnew file mode 100644 index 00000000000..18f8bbd5fd7 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_gdr_render_occlusion.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_blur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_blur.bin Binary files differnew file mode 100644 index 00000000000..b99dc7cf1c2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_blur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_bright.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_bright.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_bright.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_lum.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_lum.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_lum.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_lumavg.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_lumavg.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_lumavg.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_mesh.bin Binary files differnew file mode 100644 index 00000000000..7bcf673b7a5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_skybox.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_tonemap.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_tonemap.bin Binary files differnew file mode 100644 index 00000000000..2d893db1c8a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hdr_tonemap.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hextile.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hextile.bin Binary files differnew file mode 100644 index 00000000000..4d092b12040 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_hextile.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_ibl_mesh.bin Binary files differnew file mode 100644 index 00000000000..bfb2aa6b5ef --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_ibl_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_ibl_skybox.bin Binary files differnew file mode 100644 index 00000000000..71c331d69b8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_ibl_skybox.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_instancing.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_instancing.bin Binary files differnew file mode 100644 index 00000000000..7f77bebbeec --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_instancing.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_mesh.bin Binary files differnew file mode 100644 index 00000000000..30c017be16d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_oit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_oit.bin Binary files differnew file mode 100644 index 00000000000..acdd38849f8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_oit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_oit_blit.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_oit_blit.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_oit_blit.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_particle.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_particle.bin Binary files differnew file mode 100644 index 00000000000..2094ece50e5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_particle.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_picking_shaded.bin Binary files differnew file mode 100644 index 00000000000..9e01d140d4d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_picking_shaded.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_pom.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_pom.bin Binary files differnew file mode 100644 index 00000000000..b22897c2ffd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_pom.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_raymarching.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_raymarching.bin Binary files differnew file mode 100644 index 00000000000..f8976720b7d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_raymarching.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_combine.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_combine.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..bb6eb79e188 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_lbuffer.bin Binary files differnew file mode 100644 index 00000000000..6350504fcc9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_lbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_shadow.bin Binary files differnew file mode 100644 index 00000000000..3dd392de853 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_rsm_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color.bin Binary files differnew file mode 100644 index 00000000000..804eef5b55b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting.bin Binary files differnew file mode 100644 index 00000000000..b3a65ed05c2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_csm.bin Binary files differnew file mode 100644 index 00000000000..e91d86bff59 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear.bin Binary files differnew file mode 100644 index 00000000000..15e26f1fff1 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear_csm.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear_csm.bin Binary files differnew file mode 100644 index 00000000000..2ff7bab00d2 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear_csm.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear_omni.bin Binary files differnew file mode 100644 index 00000000000..80641ff271c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_linear_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_omni.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_omni.bin Binary files differnew file mode 100644 index 00000000000..f4cdf6d8251 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_lighting_omni.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_texture.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_depth.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_depth.bin Binary files differnew file mode 100644 index 00000000000..804eef5b55b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_depth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_hblur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_hblur.bin Binary files differnew file mode 100644 index 00000000000..a1ef46a01ba --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_hblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_packdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_packdepth.bin Binary files differnew file mode 100644 index 00000000000..e737c89c5f4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_packdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_packdepth_linear.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_packdepth_linear.bin Binary files differnew file mode 100644 index 00000000000..dc0be9daa92 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_packdepth_linear.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_texture.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_texture_lighting.bin Binary files differnew file mode 100644 index 00000000000..4c83efacbd6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_unpackdepth.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_unpackdepth.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_unpackdepth.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_vblur.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_vblur.bin Binary files differnew file mode 100644 index 00000000000..3befeee4c4f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowmaps_vblur.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_color_lighting.bin Binary files differnew file mode 100644 index 00000000000..e5da7554a91 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_color_texture.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svback.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svback.bin Binary files differnew file mode 100644 index 00000000000..61d8891229a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svback.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svfront.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svfront.bin Binary files differnew file mode 100644 index 00000000000..804eef5b55b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svfront.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svside.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svside.bin Binary files differnew file mode 100644 index 00000000000..38782c90a78 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_svside.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_texture.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_texture_lighting.bin Binary files differnew file mode 100644 index 00000000000..4c83efacbd6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_shadowvolume_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sky.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sky.bin Binary files differnew file mode 100644 index 00000000000..ac7f7350fd6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sky.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sky_landscape.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sky_landscape.bin Binary files differnew file mode 100644 index 00000000000..9c453bd2319 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sky_landscape.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_mesh.bin Binary files differnew file mode 100644 index 00000000000..82fefe7e9db --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_shadow.bin Binary files differnew file mode 100644 index 00000000000..804eef5b55b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_shadow.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_shadow_pd.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_shadow_pd.bin Binary files differnew file mode 100644 index 00000000000..e737c89c5f4 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sms_shadow_pd.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sss_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sss_gbuffer.bin Binary files differnew file mode 100644 index 00000000000..54bf6b4a30f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sss_gbuffer.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sss_screenquad.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sss_screenquad.bin Binary files differnew file mode 100644 index 00000000000..435bc278ab9 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_sss_screenquad.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color.bin Binary files differnew file mode 100644 index 00000000000..804eef5b55b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color_lighting.bin Binary files differnew file mode 100644 index 00000000000..3d53a4e91bf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color_texture.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_color_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_texture.bin Binary files differnew file mode 100644 index 00000000000..66e24d49803 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_texture_lighting.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_texture_lighting.bin Binary files differnew file mode 100644 index 00000000000..4c83efacbd6 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_stencil_texture_lighting.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain.bin Binary files differnew file mode 100644 index 00000000000..2748e5749f8 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain_height_texture.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain_height_texture.bin Binary files differnew file mode 100644 index 00000000000..240883a1509 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain_height_texture.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain_render.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain_render.bin Binary files differnew file mode 100644 index 00000000000..2ebc27b6ad0 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_terrain_render.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_tree.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_tree.bin Binary files differnew file mode 100644 index 00000000000..65d983a1473 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_tree.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_update.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_update.bin Binary files differnew file mode 100644 index 00000000000..17fbd59aebd --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_update.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_vectordisplay_fb.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_vectordisplay_fb.bin Binary files differnew file mode 100644 index 00000000000..f8976720b7d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_vectordisplay_fb.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_vt_generic.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_vt_generic.bin Binary files differnew file mode 100644 index 00000000000..28cafdcd1a5 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_vt_generic.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_wf_mesh.bin Binary files differnew file mode 100644 index 00000000000..7e2b2a9e9aa --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_wf_mesh.bin diff --git a/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_wf_wireframe.bin Binary files differnew file mode 100644 index 00000000000..20f73ad3d1b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/shaders/spirv/vs_wf_wireframe.bin diff --git a/3rdparty/bgfx/examples/runtime/textures/8k_mars.jpg b/3rdparty/bgfx/examples/runtime/textures/8k_mars.jpg Binary files differnew file mode 100644 index 00000000000..fa0feb69305 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/8k_mars.jpg diff --git a/3rdparty/bgfx/examples/runtime/textures/aerial_rocks_04_diff_2k.ktx b/3rdparty/bgfx/examples/runtime/textures/aerial_rocks_04_diff_2k.ktx Binary files differnew file mode 100644 index 00000000000..9d2a7dbf30e --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/aerial_rocks_04_diff_2k.ktx diff --git a/3rdparty/bgfx/examples/runtime/textures/dmap.png b/3rdparty/bgfx/examples/runtime/textures/dmap.png Binary files differnew file mode 100644 index 00000000000..6178d44abcc --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/dmap.png diff --git a/3rdparty/bgfx/examples/runtime/textures/pf_alpha_test.dds b/3rdparty/bgfx/examples/runtime/textures/pf_alpha_test.dds Binary files differnew file mode 100644 index 00000000000..32042d4c38d --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/pf_alpha_test.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/pf_uv_filtering_test.dds b/3rdparty/bgfx/examples/runtime/textures/pf_uv_filtering_test.dds Binary files differnew file mode 100644 index 00000000000..1326f4fccbf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/pf_uv_filtering_test.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x10.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x10.dds Binary files differnew file mode 100644 index 00000000000..8ac934e5e93 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x10.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x5.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x5.dds Binary files differindex 5d839395484..b392a0b3156 100644 --- a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x5.dds +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x5.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x6.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x6.dds Binary files differnew file mode 100644 index 00000000000..92edd56d6cf --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x6.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x8.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x8.dds Binary files differnew file mode 100644 index 00000000000..9eb093ae35f --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_10x8.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_12x10.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_12x10.dds Binary files differnew file mode 100644 index 00000000000..23a6470853c --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_12x10.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_12x12.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_12x12.dds Binary files differnew file mode 100644 index 00000000000..9c75905e563 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_12x12.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_4x4.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_4x4.dds Binary files differindex ada6b45d92f..60d17bde3d9 100644 --- a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_4x4.dds +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_4x4.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_5x4.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_5x4.dds Binary files differnew file mode 100644 index 00000000000..e47f966cf40 --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_5x4.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_5x5.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_5x5.dds Binary files differindex bfce304225c..1a7619030be 100644 --- a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_5x5.dds +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_5x5.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_6x5.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_6x5.dds Binary files differnew file mode 100644 index 00000000000..0b716ab819b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_6x5.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_6x6.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_6x6.dds Binary files differindex a1215b7f95d..d4d829e44ec 100644 --- a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_6x6.dds +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_6x6.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x5.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x5.dds Binary files differindex 55d1754fb93..e1a0dc6fd90 100644 --- a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x5.dds +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x5.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x6.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x6.dds Binary files differindex e205b999ce5..24a66a6fef6 100644 --- a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x6.dds +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x6.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x8.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x8.dds Binary files differnew file mode 100644 index 00000000000..d5bad8c423b --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_astc_8x8.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/texture_compression_rgba8.dds b/3rdparty/bgfx/examples/runtime/textures/texture_compression_rgba8.dds Binary files differnew file mode 100644 index 00000000000..0e2b3b2cd3a --- /dev/null +++ b/3rdparty/bgfx/examples/runtime/textures/texture_compression_rgba8.dds diff --git a/3rdparty/bgfx/examples/runtime/textures/uffizi.ktx b/3rdparty/bgfx/examples/runtime/textures/uffizi.ktx Binary files differindex dee260dec26..c078be1759f 100644 --- a/3rdparty/bgfx/examples/runtime/textures/uffizi.ktx +++ b/3rdparty/bgfx/examples/runtime/textures/uffizi.ktx |