diff --git a/packages/ludic.render3d/overlay.ludic b/packages/ludic.render3d/overlay.ludic index 55623ebc..a2898f28 100644 --- a/packages/ludic.render3d/overlay.ludic +++ b/packages/ludic.render3d/overlay.ludic @@ -52,6 +52,7 @@ var ov_clip_w: int = 0 var ov_clip_h: int = 0 function overlay_init(font_dir: string) -> bool { + r3d_program_log("overlay.vert", "overlay.frag", "") ov_prog = gl_program("#version 410 core\n" + r3d_shader_file("overlay.vert"), "#version 410 core\n" + r3d_shader_file("overlay.frag")) if ov_prog == 0 { print("overlay: program failed"); return false } ov_vao = gl_vao() diff --git a/packages/ludic.render3d/programs.ludic b/packages/ludic.render3d/programs.ludic index e285a457..4c6bf584 100644 --- a/packages/ludic.render3d/programs.ludic +++ b/packages/ludic.render3d/programs.ludic @@ -65,7 +65,22 @@ function r3d_program_tess(vs: string, tcs: string, tes: string, fs: string, defi } # Build a program from a vertex + fragment file pair (defines apply to both). +# R3D_PROGRAMS_LOG=: append every program built (vertex, fragment, defines) - the list a +# backend that cannot compile shaders at run time (Vulkan: SPIR-V is built ahead) must cover +var r3d_prog_log: int = -1 +function r3d_program_log(vs: string, fs: string, defines: string) -> void { + if r3d_prog_log < 0 { r3d_prog_log = 0; if Os.has_env("R3D_PROGRAMS_LOG") { r3d_prog_log = 1 } } + if r3d_prog_log == 0 { return } + let f = file_open(Os.env("R3D_PROGRAMS_LOG"), "ab") + if f == null { return } + # one line per program: the defines' newlines become ';' so a variant is one line + let defs = Text.replace(`{r3d_global_defs}{defines}`, "\n", ";") + let line = `{vs}|{fs}|{defs}\n` + file_write(f, line, len(line)) + file_close(f) +} function r3d_program(vs: string, fs: string, defines: string) -> int { + r3d_program_log(vs, fs, defines) let p = gl_program(r3d_shader_src(vs, defines, false), r3d_shader_src(fs, defines, true)) if p == 0 { print(`r3d: program failed: {vs} + {fs}`) } return p diff --git a/packages/ludic.render3d/shaders/spv/01089da8.frag.spv b/packages/ludic.render3d/shaders/spv/01089da8.frag.spv new file mode 100644 index 00000000..9451ae2b Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/01089da8.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/01089da8.vert.spv b/packages/ludic.render3d/shaders/spv/01089da8.vert.spv new file mode 100644 index 00000000..f68be1d7 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/01089da8.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1b654972.frag.spv b/packages/ludic.render3d/shaders/spv/1b654972.frag.spv new file mode 100644 index 00000000..2008c338 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1b654972.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1b654972.vert.spv b/packages/ludic.render3d/shaders/spv/1b654972.vert.spv new file mode 100644 index 00000000..85cdfd79 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1b654972.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv b/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv new file mode 100644 index 00000000..f6fdbfb9 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1ce5c5d1.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1ce5c5d1.vert.spv b/packages/ludic.render3d/shaders/spv/1ce5c5d1.vert.spv new file mode 100644 index 00000000..45214a4e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1ce5c5d1.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv b/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv new file mode 100644 index 00000000..145a3ace Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1f95f31b.vert.spv b/packages/ludic.render3d/shaders/spv/1f95f31b.vert.spv new file mode 100644 index 00000000..665a4db7 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1f95f31b.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv b/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv new file mode 100644 index 00000000..9451ae2b Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1fde9cd2.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/1fde9cd2.vert.spv b/packages/ludic.render3d/shaders/spv/1fde9cd2.vert.spv new file mode 100644 index 00000000..bb0f0e82 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/1fde9cd2.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/254e7887.frag.spv b/packages/ludic.render3d/shaders/spv/254e7887.frag.spv new file mode 100644 index 00000000..8630e50a Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/254e7887.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/254e7887.vert.spv b/packages/ludic.render3d/shaders/spv/254e7887.vert.spv new file mode 100644 index 00000000..a5724615 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/254e7887.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv b/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv new file mode 100644 index 00000000..9a334e93 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/2e2908c8.vert.spv b/packages/ludic.render3d/shaders/spv/2e2908c8.vert.spv new file mode 100644 index 00000000..665a4db7 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/2e2908c8.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/2ee6d2e3.frag.spv b/packages/ludic.render3d/shaders/spv/2ee6d2e3.frag.spv new file mode 100644 index 00000000..2987b981 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/2ee6d2e3.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/2ee6d2e3.vert.spv b/packages/ludic.render3d/shaders/spv/2ee6d2e3.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/2ee6d2e3.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3733fc38.frag.spv b/packages/ludic.render3d/shaders/spv/3733fc38.frag.spv new file mode 100644 index 00000000..880bcafc Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/3733fc38.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3733fc38.vert.spv b/packages/ludic.render3d/shaders/spv/3733fc38.vert.spv new file mode 100644 index 00000000..d83bb6c3 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/3733fc38.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3b183d8f.frag.spv b/packages/ludic.render3d/shaders/spv/3b183d8f.frag.spv new file mode 100644 index 00000000..4c0138cc Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/3b183d8f.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3b183d8f.vert.spv b/packages/ludic.render3d/shaders/spv/3b183d8f.vert.spv new file mode 100644 index 00000000..45214a4e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/3b183d8f.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3e4b62f9.frag.spv b/packages/ludic.render3d/shaders/spv/3e4b62f9.frag.spv new file mode 100644 index 00000000..de95a3fb Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/3e4b62f9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/3e4b62f9.vert.spv b/packages/ludic.render3d/shaders/spv/3e4b62f9.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/3e4b62f9.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/428caa3a.frag.spv b/packages/ludic.render3d/shaders/spv/428caa3a.frag.spv new file mode 100644 index 00000000..d922115f Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/428caa3a.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/428caa3a.vert.spv b/packages/ludic.render3d/shaders/spv/428caa3a.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/428caa3a.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/439a2253.frag.spv b/packages/ludic.render3d/shaders/spv/439a2253.frag.spv new file mode 100644 index 00000000..37eddbed Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/439a2253.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/439a2253.vert.spv b/packages/ludic.render3d/shaders/spv/439a2253.vert.spv new file mode 100644 index 00000000..8266b0c7 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/439a2253.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/46e2325c.frag.spv b/packages/ludic.render3d/shaders/spv/46e2325c.frag.spv new file mode 100644 index 00000000..db73cadd Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/46e2325c.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/46e2325c.vert.spv b/packages/ludic.render3d/shaders/spv/46e2325c.vert.spv new file mode 100644 index 00000000..6ec79e5d Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/46e2325c.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4a8e9f28.frag.spv b/packages/ludic.render3d/shaders/spv/4a8e9f28.frag.spv new file mode 100644 index 00000000..1367e14e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4a8e9f28.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4a8e9f28.vert.spv b/packages/ludic.render3d/shaders/spv/4a8e9f28.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4a8e9f28.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4be7acd9.frag.spv b/packages/ludic.render3d/shaders/spv/4be7acd9.frag.spv new file mode 100644 index 00000000..c660c394 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4be7acd9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4be7acd9.vert.spv b/packages/ludic.render3d/shaders/spv/4be7acd9.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4be7acd9.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4cf96468.frag.spv b/packages/ludic.render3d/shaders/spv/4cf96468.frag.spv new file mode 100644 index 00000000..a442fbf9 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4cf96468.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4cf96468.vert.spv b/packages/ludic.render3d/shaders/spv/4cf96468.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4cf96468.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4d4fa91b.frag.spv b/packages/ludic.render3d/shaders/spv/4d4fa91b.frag.spv new file mode 100644 index 00000000..ea2c2a0e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4d4fa91b.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4d4fa91b.vert.spv b/packages/ludic.render3d/shaders/spv/4d4fa91b.vert.spv new file mode 100644 index 00000000..6ddc4cb2 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4d4fa91b.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv b/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv new file mode 100644 index 00000000..0a18eccb Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4dda406a.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/4dda406a.vert.spv b/packages/ludic.render3d/shaders/spv/4dda406a.vert.spv new file mode 100644 index 00000000..45214a4e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/4dda406a.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/512004a1.frag.spv b/packages/ludic.render3d/shaders/spv/512004a1.frag.spv new file mode 100644 index 00000000..70e60d99 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/512004a1.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/512004a1.vert.spv b/packages/ludic.render3d/shaders/spv/512004a1.vert.spv new file mode 100644 index 00000000..e7f2128e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/512004a1.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/638623c2.frag.spv b/packages/ludic.render3d/shaders/spv/638623c2.frag.spv new file mode 100644 index 00000000..215edc06 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/638623c2.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/638623c2.vert.spv b/packages/ludic.render3d/shaders/spv/638623c2.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/638623c2.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/676965ab.frag.spv b/packages/ludic.render3d/shaders/spv/676965ab.frag.spv new file mode 100644 index 00000000..c626be68 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/676965ab.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/676965ab.vert.spv b/packages/ludic.render3d/shaders/spv/676965ab.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/676965ab.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/725523d9.frag.spv b/packages/ludic.render3d/shaders/spv/725523d9.frag.spv new file mode 100644 index 00000000..83879b1d Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/725523d9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/725523d9.vert.spv b/packages/ludic.render3d/shaders/spv/725523d9.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/725523d9.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/79b77ed9.frag.spv b/packages/ludic.render3d/shaders/spv/79b77ed9.frag.spv new file mode 100644 index 00000000..34ac5ebe Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/79b77ed9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/79b77ed9.vert.spv b/packages/ludic.render3d/shaders/spv/79b77ed9.vert.spv new file mode 100644 index 00000000..98853275 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/79b77ed9.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/7ed7de52.frag.spv b/packages/ludic.render3d/shaders/spv/7ed7de52.frag.spv new file mode 100644 index 00000000..ab4e5104 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/7ed7de52.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/7ed7de52.vert.spv b/packages/ludic.render3d/shaders/spv/7ed7de52.vert.spv new file mode 100644 index 00000000..41f6faea Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/7ed7de52.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/858f5089.frag.spv b/packages/ludic.render3d/shaders/spv/858f5089.frag.spv new file mode 100644 index 00000000..88a649ad Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/858f5089.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/858f5089.vert.spv b/packages/ludic.render3d/shaders/spv/858f5089.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/858f5089.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/86f427b0.frag.spv b/packages/ludic.render3d/shaders/spv/86f427b0.frag.spv new file mode 100644 index 00000000..13d6d5b5 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/86f427b0.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/86f427b0.vert.spv b/packages/ludic.render3d/shaders/spv/86f427b0.vert.spv new file mode 100644 index 00000000..ee8224ab Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/86f427b0.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9068df1c.frag.spv b/packages/ludic.render3d/shaders/spv/9068df1c.frag.spv new file mode 100644 index 00000000..c2aaab49 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/9068df1c.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9068df1c.vert.spv b/packages/ludic.render3d/shaders/spv/9068df1c.vert.spv new file mode 100644 index 00000000..52c448fc Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/9068df1c.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9d3e2ddd.frag.spv b/packages/ludic.render3d/shaders/spv/9d3e2ddd.frag.spv new file mode 100644 index 00000000..1fdc4424 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/9d3e2ddd.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9d3e2ddd.vert.spv b/packages/ludic.render3d/shaders/spv/9d3e2ddd.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/9d3e2ddd.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9dce3246.frag.spv b/packages/ludic.render3d/shaders/spv/9dce3246.frag.spv new file mode 100644 index 00000000..37eddbed Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/9dce3246.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/9dce3246.vert.spv b/packages/ludic.render3d/shaders/spv/9dce3246.vert.spv new file mode 100644 index 00000000..ee8224ab Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/9dce3246.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a45356c7.frag.spv b/packages/ludic.render3d/shaders/spv/a45356c7.frag.spv new file mode 100644 index 00000000..375574c6 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/a45356c7.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a45356c7.vert.spv b/packages/ludic.render3d/shaders/spv/a45356c7.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/a45356c7.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv b/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv new file mode 100644 index 00000000..a609ec5c Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/a5ad521e.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a5ad521e.vert.spv b/packages/ludic.render3d/shaders/spv/a5ad521e.vert.spv new file mode 100644 index 00000000..bb0f0e82 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/a5ad521e.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a64015f2.frag.spv b/packages/ludic.render3d/shaders/spv/a64015f2.frag.spv new file mode 100644 index 00000000..b68f8d24 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/a64015f2.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/a64015f2.vert.spv b/packages/ludic.render3d/shaders/spv/a64015f2.vert.spv new file mode 100644 index 00000000..ae8c8703 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/a64015f2.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv b/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv new file mode 100644 index 00000000..ade925a9 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b4587cd4.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b4587cd4.vert.spv b/packages/ludic.render3d/shaders/spv/b4587cd4.vert.spv new file mode 100644 index 00000000..29f400e8 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b4587cd4.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b79a1f4e.frag.spv b/packages/ludic.render3d/shaders/spv/b79a1f4e.frag.spv new file mode 100644 index 00000000..70e60d99 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b79a1f4e.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b79a1f4e.vert.spv b/packages/ludic.render3d/shaders/spv/b79a1f4e.vert.spv new file mode 100644 index 00000000..ae8c8703 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b79a1f4e.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b964507f.frag.spv b/packages/ludic.render3d/shaders/spv/b964507f.frag.spv new file mode 100644 index 00000000..b68f8d24 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b964507f.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b964507f.vert.spv b/packages/ludic.render3d/shaders/spv/b964507f.vert.spv new file mode 100644 index 00000000..e7f2128e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b964507f.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b9fc2041.frag.spv b/packages/ludic.render3d/shaders/spv/b9fc2041.frag.spv new file mode 100644 index 00000000..9451ae2b Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b9fc2041.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/b9fc2041.vert.spv b/packages/ludic.render3d/shaders/spv/b9fc2041.vert.spv new file mode 100644 index 00000000..45214a4e Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/b9fc2041.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/bf3151c8.frag.spv b/packages/ludic.render3d/shaders/spv/bf3151c8.frag.spv new file mode 100644 index 00000000..4ed612f5 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/bf3151c8.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/bf3151c8.vert.spv b/packages/ludic.render3d/shaders/spv/bf3151c8.vert.spv new file mode 100644 index 00000000..cd33707a Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/bf3151c8.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/bfa15301.frag.spv b/packages/ludic.render3d/shaders/spv/bfa15301.frag.spv new file mode 100644 index 00000000..e6a2bd7d Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/bfa15301.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/bfa15301.vert.spv b/packages/ludic.render3d/shaders/spv/bfa15301.vert.spv new file mode 100644 index 00000000..2e2d42ba Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/bfa15301.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/c57b4f14.frag.spv b/packages/ludic.render3d/shaders/spv/c57b4f14.frag.spv new file mode 100644 index 00000000..7e92d8d8 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/c57b4f14.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/c57b4f14.vert.spv b/packages/ludic.render3d/shaders/spv/c57b4f14.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/c57b4f14.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/e18e40c9.frag.spv b/packages/ludic.render3d/shaders/spv/e18e40c9.frag.spv new file mode 100644 index 00000000..8bd75edc Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/e18e40c9.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/e18e40c9.vert.spv b/packages/ludic.render3d/shaders/spv/e18e40c9.vert.spv new file mode 100644 index 00000000..25f1e107 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/e18e40c9.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/e9b6300c.frag.spv b/packages/ludic.render3d/shaders/spv/e9b6300c.frag.spv new file mode 100644 index 00000000..68786f25 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/e9b6300c.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/e9b6300c.vert.spv b/packages/ludic.render3d/shaders/spv/e9b6300c.vert.spv new file mode 100644 index 00000000..52c448fc Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/e9b6300c.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f34dce08.frag.spv b/packages/ludic.render3d/shaders/spv/f34dce08.frag.spv new file mode 100644 index 00000000..70e60d99 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/f34dce08.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f34dce08.vert.spv b/packages/ludic.render3d/shaders/spv/f34dce08.vert.spv new file mode 100644 index 00000000..b982da08 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/f34dce08.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f4382918.frag.spv b/packages/ludic.render3d/shaders/spv/f4382918.frag.spv new file mode 100644 index 00000000..085d6b8d Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/f4382918.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f4382918.vert.spv b/packages/ludic.render3d/shaders/spv/f4382918.vert.spv new file mode 100644 index 00000000..665a4db7 Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/f4382918.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f4a2b586.frag.spv b/packages/ludic.render3d/shaders/spv/f4a2b586.frag.spv new file mode 100644 index 00000000..8724ddee Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/f4a2b586.frag.spv differ diff --git a/packages/ludic.render3d/shaders/spv/f4a2b586.vert.spv b/packages/ludic.render3d/shaders/spv/f4a2b586.vert.spv new file mode 100644 index 00000000..a2b5cd5f Binary files /dev/null and b/packages/ludic.render3d/shaders/spv/f4a2b586.vert.spv differ diff --git a/packages/ludic.render3d/shaders/spv/manifest.txt b/packages/ludic.render3d/shaders/spv/manifest.txt new file mode 100644 index 00000000..4deb3b32 --- /dev/null +++ b/packages/ludic.render3d/shaders/spv/manifest.txt @@ -0,0 +1,2358 @@ +# manifest.txt - GENERATED by `ludic-dev shaders` from variants.list. Do not edit. +P 2ee6d2e3 fullscreen.vert adapt.frag +B 2ee6d2e3 frag 1 784 +U 2ee6d2e3 frag u_cascade_vp 0 mat4 5 64 +U 2ee6d2e3 frag u_cascade_split 320 float 5 16 +U 2ee6d2e3 frag u_cascade_range 400 float 5 16 +U 2ee6d2e3 frag u_cascade_texel 480 float 5 16 +U 2ee6d2e3 frag u_sun_dir 560 vec3 1 0 +U 2ee6d2e3 frag u_sun_color 576 vec3 1 0 +U 2ee6d2e3 frag u_cam_pos 592 vec3 1 0 +U 2ee6d2e3 frag u_prefilter_levels 604 float 1 0 +U 2ee6d2e3 frag u_fog_density 608 float 1 0 +U 2ee6d2e3 frag u_fog_height_falloff 612 float 1 0 +U 2ee6d2e3 frag u_fog_base 616 float 1 0 +U 2ee6d2e3 frag u_clip_y 620 float 1 0 +U 2ee6d2e3 frag u_spec_scale 624 float 1 0 +U 2ee6d2e3 frag u_sky_rot 632 vec2 1 0 +U 2ee6d2e3 frag u_ibl_scale 640 vec3 1 0 +U 2ee6d2e3 frag u_daylight 652 float 1 0 +U 2ee6d2e3 frag u_fire_pos 656 vec3 1 0 +U 2ee6d2e3 frag u_fire_color 672 vec3 1 0 +U 2ee6d2e3 frag u_hand_pos 688 vec3 1 0 +U 2ee6d2e3 frag u_hand_color 704 vec3 1 0 +U 2ee6d2e3 frag u_hand_dir 720 vec3 1 0 +U 2ee6d2e3 frag u_hand_cone 732 float 1 0 +U 2ee6d2e3 frag u_ts_origin 736 vec2 1 0 +U 2ee6d2e3 frag u_ts_half 744 float 1 0 +U 2ee6d2e3 frag u_ts_on 748 float 1 0 +U 2ee6d2e3 frag u_force_cascade 752 int 1 0 +U 2ee6d2e3 frag u_cloud_shadow 756 float 1 0 +U 2ee6d2e3 frag u_time 760 float 1 0 +U 2ee6d2e3 frag u_lod 764 float 1 0 +U 2ee6d2e3 frag u_key 768 float 1 0 +U 2ee6d2e3 frag u_max 772 float 1 0 +U 2ee6d2e3 frag u_rate 776 float 1 0 +U 2ee6d2e3 frag u_reset 780 float 1 0 +T 2ee6d2e3 u_brdf 2 +T 2ee6d2e3 u_irradiance 3 +T 2ee6d2e3 u_prefilter 4 +T 2ee6d2e3 u_prev 5 +T 2ee6d2e3 u_scene 6 +T 2ee6d2e3 u_shadow 7 +T 2ee6d2e3 u_tershadow 8 +T 2ee6d2e3 u_ts_height 9 +P 9d3e2ddd fullscreen.vert bloom_down.frag +B 9d3e2ddd frag 1 780 +U 9d3e2ddd frag u_cascade_vp 0 mat4 5 64 +U 9d3e2ddd frag u_cascade_split 320 float 5 16 +U 9d3e2ddd frag u_cascade_range 400 float 5 16 +U 9d3e2ddd frag u_cascade_texel 480 float 5 16 +U 9d3e2ddd frag u_sun_dir 560 vec3 1 0 +U 9d3e2ddd frag u_sun_color 576 vec3 1 0 +U 9d3e2ddd frag u_cam_pos 592 vec3 1 0 +U 9d3e2ddd frag u_prefilter_levels 604 float 1 0 +U 9d3e2ddd frag u_fog_density 608 float 1 0 +U 9d3e2ddd frag u_fog_height_falloff 612 float 1 0 +U 9d3e2ddd frag u_fog_base 616 float 1 0 +U 9d3e2ddd frag u_clip_y 620 float 1 0 +U 9d3e2ddd frag u_spec_scale 624 float 1 0 +U 9d3e2ddd frag u_sky_rot 632 vec2 1 0 +U 9d3e2ddd frag u_ibl_scale 640 vec3 1 0 +U 9d3e2ddd frag u_daylight 652 float 1 0 +U 9d3e2ddd frag u_fire_pos 656 vec3 1 0 +U 9d3e2ddd frag u_fire_color 672 vec3 1 0 +U 9d3e2ddd frag u_hand_pos 688 vec3 1 0 +U 9d3e2ddd frag u_hand_color 704 vec3 1 0 +U 9d3e2ddd frag u_hand_dir 720 vec3 1 0 +U 9d3e2ddd frag u_hand_cone 732 float 1 0 +U 9d3e2ddd frag u_ts_origin 736 vec2 1 0 +U 9d3e2ddd frag u_ts_half 744 float 1 0 +U 9d3e2ddd frag u_ts_on 748 float 1 0 +U 9d3e2ddd frag u_force_cascade 752 int 1 0 +U 9d3e2ddd frag u_cloud_shadow 756 float 1 0 +U 9d3e2ddd frag u_time 760 float 1 0 +U 9d3e2ddd frag u_texel 768 vec2 1 0 +U 9d3e2ddd frag u_threshold 776 float 1 0 +T 9d3e2ddd u_brdf 2 +T 9d3e2ddd u_irradiance 3 +T 9d3e2ddd u_prefilter 4 +T 9d3e2ddd u_shadow 5 +T 9d3e2ddd u_src 6 +T 9d3e2ddd u_tershadow 7 +T 9d3e2ddd u_ts_height 8 +P c57b4f14 fullscreen.vert bloom_up.frag +B c57b4f14 frag 1 780 +U c57b4f14 frag u_cascade_vp 0 mat4 5 64 +U c57b4f14 frag u_cascade_split 320 float 5 16 +U c57b4f14 frag u_cascade_range 400 float 5 16 +U c57b4f14 frag u_cascade_texel 480 float 5 16 +U c57b4f14 frag u_sun_dir 560 vec3 1 0 +U c57b4f14 frag u_sun_color 576 vec3 1 0 +U c57b4f14 frag u_cam_pos 592 vec3 1 0 +U c57b4f14 frag u_prefilter_levels 604 float 1 0 +U c57b4f14 frag u_fog_density 608 float 1 0 +U c57b4f14 frag u_fog_height_falloff 612 float 1 0 +U c57b4f14 frag u_fog_base 616 float 1 0 +U c57b4f14 frag u_clip_y 620 float 1 0 +U c57b4f14 frag u_spec_scale 624 float 1 0 +U c57b4f14 frag u_sky_rot 632 vec2 1 0 +U c57b4f14 frag u_ibl_scale 640 vec3 1 0 +U c57b4f14 frag u_daylight 652 float 1 0 +U c57b4f14 frag u_fire_pos 656 vec3 1 0 +U c57b4f14 frag u_fire_color 672 vec3 1 0 +U c57b4f14 frag u_hand_pos 688 vec3 1 0 +U c57b4f14 frag u_hand_color 704 vec3 1 0 +U c57b4f14 frag u_hand_dir 720 vec3 1 0 +U c57b4f14 frag u_hand_cone 732 float 1 0 +U c57b4f14 frag u_ts_origin 736 vec2 1 0 +U c57b4f14 frag u_ts_half 744 float 1 0 +U c57b4f14 frag u_ts_on 748 float 1 0 +U c57b4f14 frag u_force_cascade 752 int 1 0 +U c57b4f14 frag u_cloud_shadow 756 float 1 0 +U c57b4f14 frag u_time 760 float 1 0 +U c57b4f14 frag u_texel 768 vec2 1 0 +U c57b4f14 frag u_radius 776 float 1 0 +T c57b4f14 u_brdf 2 +T c57b4f14 u_irradiance 3 +T c57b4f14 u_prefilter 4 +T c57b4f14 u_shadow 5 +T c57b4f14 u_src 6 +T c57b4f14 u_tershadow 7 +T c57b4f14 u_ts_height 8 +P 4be7acd9 fullscreen.vert heightgen.frag #define DEM; +B 4be7acd9 frag 1 856 +U 4be7acd9 frag u_cascade_vp 0 mat4 5 64 +U 4be7acd9 frag u_cascade_split 320 float 5 16 +U 4be7acd9 frag u_cascade_range 400 float 5 16 +U 4be7acd9 frag u_cascade_texel 480 float 5 16 +U 4be7acd9 frag u_sun_dir 560 vec3 1 0 +U 4be7acd9 frag u_sun_color 576 vec3 1 0 +U 4be7acd9 frag u_cam_pos 592 vec3 1 0 +U 4be7acd9 frag u_prefilter_levels 604 float 1 0 +U 4be7acd9 frag u_fog_density 608 float 1 0 +U 4be7acd9 frag u_fog_height_falloff 612 float 1 0 +U 4be7acd9 frag u_fog_base 616 float 1 0 +U 4be7acd9 frag u_clip_y 620 float 1 0 +U 4be7acd9 frag u_spec_scale 624 float 1 0 +U 4be7acd9 frag u_sky_rot 632 vec2 1 0 +U 4be7acd9 frag u_ibl_scale 640 vec3 1 0 +U 4be7acd9 frag u_daylight 652 float 1 0 +U 4be7acd9 frag u_fire_pos 656 vec3 1 0 +U 4be7acd9 frag u_fire_color 672 vec3 1 0 +U 4be7acd9 frag u_hand_pos 688 vec3 1 0 +U 4be7acd9 frag u_hand_color 704 vec3 1 0 +U 4be7acd9 frag u_hand_dir 720 vec3 1 0 +U 4be7acd9 frag u_hand_cone 732 float 1 0 +U 4be7acd9 frag u_ts_origin 736 vec2 1 0 +U 4be7acd9 frag u_ts_half 744 float 1 0 +U 4be7acd9 frag u_ts_on 748 float 1 0 +U 4be7acd9 frag u_force_cascade 752 int 1 0 +U 4be7acd9 frag u_cloud_shadow 756 float 1 0 +U 4be7acd9 frag u_time 760 float 1 0 +U 4be7acd9 frag u_half 764 float 1 0 +U 4be7acd9 frag u_dem_min 768 float 1 0 +U 4be7acd9 frag u_dem_max 772 float 1 0 +U 4be7acd9 frag u_dem_base 776 float 1 0 +U 4be7acd9 frag u_origin 784 vec2 1 0 +U 4be7acd9 frag u_lake 800 vec4 1 0 +U 4be7acd9 frag u_lake_level 816 float 1 0 +U 4be7acd9 frag u_sea_level 820 float 1 0 +U 4be7acd9 frag u_isle 832 vec4 1 0 +U 4be7acd9 frag u_isle_mode 848 float 1 0 +U 4be7acd9 frag u_dem_blur 852 float 1 0 +T 4be7acd9 u_brdf 2 +T 4be7acd9 u_dem 3 +T 4be7acd9 u_irradiance 4 +T 4be7acd9 u_prefilter 5 +T 4be7acd9 u_shadow 6 +T 4be7acd9 u_tershadow 7 +T 4be7acd9 u_ts_height 8 +P 858f5089 fullscreen.vert ibl_brdf.frag +B 858f5089 frag 0 764 +U 858f5089 frag u_cascade_vp 0 mat4 5 64 +U 858f5089 frag u_cascade_split 320 float 5 16 +U 858f5089 frag u_cascade_range 400 float 5 16 +U 858f5089 frag u_cascade_texel 480 float 5 16 +U 858f5089 frag u_sun_dir 560 vec3 1 0 +U 858f5089 frag u_sun_color 576 vec3 1 0 +U 858f5089 frag u_cam_pos 592 vec3 1 0 +U 858f5089 frag u_prefilter_levels 604 float 1 0 +U 858f5089 frag u_fog_density 608 float 1 0 +U 858f5089 frag u_fog_height_falloff 612 float 1 0 +U 858f5089 frag u_fog_base 616 float 1 0 +U 858f5089 frag u_clip_y 620 float 1 0 +U 858f5089 frag u_spec_scale 624 float 1 0 +U 858f5089 frag u_sky_rot 632 vec2 1 0 +U 858f5089 frag u_ibl_scale 640 vec3 1 0 +U 858f5089 frag u_daylight 652 float 1 0 +U 858f5089 frag u_fire_pos 656 vec3 1 0 +U 858f5089 frag u_fire_color 672 vec3 1 0 +U 858f5089 frag u_hand_pos 688 vec3 1 0 +U 858f5089 frag u_hand_color 704 vec3 1 0 +U 858f5089 frag u_hand_dir 720 vec3 1 0 +U 858f5089 frag u_hand_cone 732 float 1 0 +U 858f5089 frag u_ts_origin 736 vec2 1 0 +U 858f5089 frag u_ts_half 744 float 1 0 +U 858f5089 frag u_ts_on 748 float 1 0 +U 858f5089 frag u_force_cascade 752 int 1 0 +U 858f5089 frag u_cloud_shadow 756 float 1 0 +U 858f5089 frag u_time 760 float 1 0 +T 858f5089 u_brdf 2 +T 858f5089 u_irradiance 3 +T 858f5089 u_prefilter 4 +T 858f5089 u_shadow 5 +T 858f5089 u_tershadow 6 +T 858f5089 u_ts_height 7 +P e18e40c9 fullscreen.vert ibl_irradiance.frag +B e18e40c9 frag 1 768 +U e18e40c9 frag u_cascade_vp 0 mat4 5 64 +U e18e40c9 frag u_cascade_split 320 float 5 16 +U e18e40c9 frag u_cascade_range 400 float 5 16 +U e18e40c9 frag u_cascade_texel 480 float 5 16 +U e18e40c9 frag u_sun_dir 560 vec3 1 0 +U e18e40c9 frag u_sun_color 576 vec3 1 0 +U e18e40c9 frag u_cam_pos 592 vec3 1 0 +U e18e40c9 frag u_prefilter_levels 604 float 1 0 +U e18e40c9 frag u_fog_density 608 float 1 0 +U e18e40c9 frag u_fog_height_falloff 612 float 1 0 +U e18e40c9 frag u_fog_base 616 float 1 0 +U e18e40c9 frag u_clip_y 620 float 1 0 +U e18e40c9 frag u_spec_scale 624 float 1 0 +U e18e40c9 frag u_sky_rot 632 vec2 1 0 +U e18e40c9 frag u_ibl_scale 640 vec3 1 0 +U e18e40c9 frag u_daylight 652 float 1 0 +U e18e40c9 frag u_fire_pos 656 vec3 1 0 +U e18e40c9 frag u_fire_color 672 vec3 1 0 +U e18e40c9 frag u_hand_pos 688 vec3 1 0 +U e18e40c9 frag u_hand_color 704 vec3 1 0 +U e18e40c9 frag u_hand_dir 720 vec3 1 0 +U e18e40c9 frag u_hand_cone 732 float 1 0 +U e18e40c9 frag u_ts_origin 736 vec2 1 0 +U e18e40c9 frag u_ts_half 744 float 1 0 +U e18e40c9 frag u_ts_on 748 float 1 0 +U e18e40c9 frag u_force_cascade 752 int 1 0 +U e18e40c9 frag u_cloud_shadow 756 float 1 0 +U e18e40c9 frag u_time 760 float 1 0 +U e18e40c9 frag u_sun_clip 764 float 1 0 +T e18e40c9 u_brdf 2 +T e18e40c9 u_irradiance 3 +T e18e40c9 u_prefilter 4 +T e18e40c9 u_shadow 5 +T e18e40c9 u_sky 6 +T e18e40c9 u_tershadow 7 +T e18e40c9 u_ts_height 8 +P 638623c2 fullscreen.vert ibl_prefilter.frag +B 638623c2 frag 1 776 +U 638623c2 frag u_cascade_vp 0 mat4 5 64 +U 638623c2 frag u_cascade_split 320 float 5 16 +U 638623c2 frag u_cascade_range 400 float 5 16 +U 638623c2 frag u_cascade_texel 480 float 5 16 +U 638623c2 frag u_sun_dir 560 vec3 1 0 +U 638623c2 frag u_sun_color 576 vec3 1 0 +U 638623c2 frag u_cam_pos 592 vec3 1 0 +U 638623c2 frag u_prefilter_levels 604 float 1 0 +U 638623c2 frag u_fog_density 608 float 1 0 +U 638623c2 frag u_fog_height_falloff 612 float 1 0 +U 638623c2 frag u_fog_base 616 float 1 0 +U 638623c2 frag u_clip_y 620 float 1 0 +U 638623c2 frag u_spec_scale 624 float 1 0 +U 638623c2 frag u_sky_rot 632 vec2 1 0 +U 638623c2 frag u_ibl_scale 640 vec3 1 0 +U 638623c2 frag u_daylight 652 float 1 0 +U 638623c2 frag u_fire_pos 656 vec3 1 0 +U 638623c2 frag u_fire_color 672 vec3 1 0 +U 638623c2 frag u_hand_pos 688 vec3 1 0 +U 638623c2 frag u_hand_color 704 vec3 1 0 +U 638623c2 frag u_hand_dir 720 vec3 1 0 +U 638623c2 frag u_hand_cone 732 float 1 0 +U 638623c2 frag u_ts_origin 736 vec2 1 0 +U 638623c2 frag u_ts_half 744 float 1 0 +U 638623c2 frag u_ts_on 748 float 1 0 +U 638623c2 frag u_force_cascade 752 int 1 0 +U 638623c2 frag u_cloud_shadow 756 float 1 0 +U 638623c2 frag u_time 760 float 1 0 +U 638623c2 frag u_rough 764 float 1 0 +U 638623c2 frag u_sun_clip 768 float 1 0 +U 638623c2 frag u_sky_w 772 float 1 0 +T 638623c2 u_brdf 2 +T 638623c2 u_irradiance 3 +T 638623c2 u_prefilter 4 +T 638623c2 u_shadow 5 +T 638623c2 u_sky 6 +T 638623c2 u_tershadow 7 +T 638623c2 u_ts_height 8 +P 4cf96468 fullscreen.vert sharpen.frag +B 4cf96468 frag 1 784 +U 4cf96468 frag u_cascade_vp 0 mat4 5 64 +U 4cf96468 frag u_cascade_split 320 float 5 16 +U 4cf96468 frag u_cascade_range 400 float 5 16 +U 4cf96468 frag u_cascade_texel 480 float 5 16 +U 4cf96468 frag u_sun_dir 560 vec3 1 0 +U 4cf96468 frag u_sun_color 576 vec3 1 0 +U 4cf96468 frag u_cam_pos 592 vec3 1 0 +U 4cf96468 frag u_prefilter_levels 604 float 1 0 +U 4cf96468 frag u_fog_density 608 float 1 0 +U 4cf96468 frag u_fog_height_falloff 612 float 1 0 +U 4cf96468 frag u_fog_base 616 float 1 0 +U 4cf96468 frag u_clip_y 620 float 1 0 +U 4cf96468 frag u_spec_scale 624 float 1 0 +U 4cf96468 frag u_sky_rot 632 vec2 1 0 +U 4cf96468 frag u_ibl_scale 640 vec3 1 0 +U 4cf96468 frag u_daylight 652 float 1 0 +U 4cf96468 frag u_fire_pos 656 vec3 1 0 +U 4cf96468 frag u_fire_color 672 vec3 1 0 +U 4cf96468 frag u_hand_pos 688 vec3 1 0 +U 4cf96468 frag u_hand_color 704 vec3 1 0 +U 4cf96468 frag u_hand_dir 720 vec3 1 0 +U 4cf96468 frag u_hand_cone 732 float 1 0 +U 4cf96468 frag u_ts_origin 736 vec2 1 0 +U 4cf96468 frag u_ts_half 744 float 1 0 +U 4cf96468 frag u_ts_on 748 float 1 0 +U 4cf96468 frag u_force_cascade 752 int 1 0 +U 4cf96468 frag u_cloud_shadow 756 float 1 0 +U 4cf96468 frag u_time 760 float 1 0 +U 4cf96468 frag u_texel 768 vec2 1 0 +U 4cf96468 frag u_amount 776 float 1 0 +U 4cf96468 frag u_grain 780 float 1 0 +T 4cf96468 u_brdf 2 +T 4cf96468 u_irradiance 3 +T 4cf96468 u_prefilter 4 +T 4cf96468 u_shadow 5 +T 4cf96468 u_src 6 +T 4cf96468 u_tershadow 7 +T 4cf96468 u_ts_height 8 +P 428caa3a fullscreen.vert sky.frag +B 428caa3a frag 1 872 +U 428caa3a frag u_cascade_vp 0 mat4 5 64 +U 428caa3a frag u_cascade_split 320 float 5 16 +U 428caa3a frag u_cascade_range 400 float 5 16 +U 428caa3a frag u_cascade_texel 480 float 5 16 +U 428caa3a frag u_sun_dir 560 vec3 1 0 +U 428caa3a frag u_sun_color 576 vec3 1 0 +U 428caa3a frag u_cam_pos 592 vec3 1 0 +U 428caa3a frag u_prefilter_levels 604 float 1 0 +U 428caa3a frag u_fog_density 608 float 1 0 +U 428caa3a frag u_fog_height_falloff 612 float 1 0 +U 428caa3a frag u_fog_base 616 float 1 0 +U 428caa3a frag u_clip_y 620 float 1 0 +U 428caa3a frag u_spec_scale 624 float 1 0 +U 428caa3a frag u_sky_rot 632 vec2 1 0 +U 428caa3a frag u_ibl_scale 640 vec3 1 0 +U 428caa3a frag u_daylight 652 float 1 0 +U 428caa3a frag u_fire_pos 656 vec3 1 0 +U 428caa3a frag u_fire_color 672 vec3 1 0 +U 428caa3a frag u_hand_pos 688 vec3 1 0 +U 428caa3a frag u_hand_color 704 vec3 1 0 +U 428caa3a frag u_hand_dir 720 vec3 1 0 +U 428caa3a frag u_hand_cone 732 float 1 0 +U 428caa3a frag u_ts_origin 736 vec2 1 0 +U 428caa3a frag u_ts_half 744 float 1 0 +U 428caa3a frag u_ts_on 748 float 1 0 +U 428caa3a frag u_force_cascade 752 int 1 0 +U 428caa3a frag u_cloud_shadow 756 float 1 0 +U 428caa3a frag u_time 760 float 1 0 +U 428caa3a frag u_inv_vp 768 mat4 1 0 +U 428caa3a frag u_sky_gain 832 float 1 0 +U 428caa3a frag u_sky_sat 836 float 1 0 +U 428caa3a frag u_moon_dir 848 vec3 1 0 +U 428caa3a frag u_moon_haze 860 float 1 0 +U 428caa3a frag u_moon_phase 864 float 1 0 +U 428caa3a frag u_moon_illum 868 float 1 0 +T 428caa3a u_brdf 2 +T 428caa3a u_irradiance 3 +T 428caa3a u_prefilter 4 +T 428caa3a u_shadow 5 +T 428caa3a u_sky 6 +T 428caa3a u_tershadow 7 +T 428caa3a u_ts_height 8 +P 3e4b62f9 fullscreen.vert ssao_blur.frag +B 3e4b62f9 frag 1 776 +U 3e4b62f9 frag u_cascade_vp 0 mat4 5 64 +U 3e4b62f9 frag u_cascade_split 320 float 5 16 +U 3e4b62f9 frag u_cascade_range 400 float 5 16 +U 3e4b62f9 frag u_cascade_texel 480 float 5 16 +U 3e4b62f9 frag u_sun_dir 560 vec3 1 0 +U 3e4b62f9 frag u_sun_color 576 vec3 1 0 +U 3e4b62f9 frag u_cam_pos 592 vec3 1 0 +U 3e4b62f9 frag u_prefilter_levels 604 float 1 0 +U 3e4b62f9 frag u_fog_density 608 float 1 0 +U 3e4b62f9 frag u_fog_height_falloff 612 float 1 0 +U 3e4b62f9 frag u_fog_base 616 float 1 0 +U 3e4b62f9 frag u_clip_y 620 float 1 0 +U 3e4b62f9 frag u_spec_scale 624 float 1 0 +U 3e4b62f9 frag u_sky_rot 632 vec2 1 0 +U 3e4b62f9 frag u_ibl_scale 640 vec3 1 0 +U 3e4b62f9 frag u_daylight 652 float 1 0 +U 3e4b62f9 frag u_fire_pos 656 vec3 1 0 +U 3e4b62f9 frag u_fire_color 672 vec3 1 0 +U 3e4b62f9 frag u_hand_pos 688 vec3 1 0 +U 3e4b62f9 frag u_hand_color 704 vec3 1 0 +U 3e4b62f9 frag u_hand_dir 720 vec3 1 0 +U 3e4b62f9 frag u_hand_cone 732 float 1 0 +U 3e4b62f9 frag u_ts_origin 736 vec2 1 0 +U 3e4b62f9 frag u_ts_half 744 float 1 0 +U 3e4b62f9 frag u_ts_on 748 float 1 0 +U 3e4b62f9 frag u_force_cascade 752 int 1 0 +U 3e4b62f9 frag u_cloud_shadow 756 float 1 0 +U 3e4b62f9 frag u_time 760 float 1 0 +U 3e4b62f9 frag u_texel 768 vec2 1 0 +T 3e4b62f9 u_ao 2 +T 3e4b62f9 u_brdf 3 +T 3e4b62f9 u_depth 4 +T 3e4b62f9 u_irradiance 5 +T 3e4b62f9 u_prefilter 6 +T 3e4b62f9 u_shadow 7 +T 3e4b62f9 u_tershadow 8 +T 3e4b62f9 u_ts_height 9 +P 676965ab fullscreen.vert ssgi.frag +B 676965ab frag 1 916 +U 676965ab frag u_cascade_vp 0 mat4 5 64 +U 676965ab frag u_cascade_split 320 float 5 16 +U 676965ab frag u_cascade_range 400 float 5 16 +U 676965ab frag u_cascade_texel 480 float 5 16 +U 676965ab frag u_sun_dir 560 vec3 1 0 +U 676965ab frag u_sun_color 576 vec3 1 0 +U 676965ab frag u_cam_pos 592 vec3 1 0 +U 676965ab frag u_prefilter_levels 604 float 1 0 +U 676965ab frag u_fog_density 608 float 1 0 +U 676965ab frag u_fog_height_falloff 612 float 1 0 +U 676965ab frag u_fog_base 616 float 1 0 +U 676965ab frag u_clip_y 620 float 1 0 +U 676965ab frag u_spec_scale 624 float 1 0 +U 676965ab frag u_sky_rot 632 vec2 1 0 +U 676965ab frag u_ibl_scale 640 vec3 1 0 +U 676965ab frag u_daylight 652 float 1 0 +U 676965ab frag u_fire_pos 656 vec3 1 0 +U 676965ab frag u_fire_color 672 vec3 1 0 +U 676965ab frag u_hand_pos 688 vec3 1 0 +U 676965ab frag u_hand_color 704 vec3 1 0 +U 676965ab frag u_hand_dir 720 vec3 1 0 +U 676965ab frag u_hand_cone 732 float 1 0 +U 676965ab frag u_ts_origin 736 vec2 1 0 +U 676965ab frag u_ts_half 744 float 1 0 +U 676965ab frag u_ts_on 748 float 1 0 +U 676965ab frag u_force_cascade 752 int 1 0 +U 676965ab frag u_cloud_shadow 756 float 1 0 +U 676965ab frag u_time 760 float 1 0 +U 676965ab frag u_inv_proj 768 mat4 1 0 +U 676965ab frag u_proj 832 mat4 1 0 +U 676965ab frag u_texel 896 vec2 1 0 +U 676965ab frag u_radius 904 float 1 0 +U 676965ab frag u_intensity 908 float 1 0 +U 676965ab frag u_frame 912 float 1 0 +T 676965ab u_brdf 2 +T 676965ab u_depth 3 +T 676965ab u_irradiance 4 +T 676965ab u_prefilter 5 +T 676965ab u_prev_color 6 +T 676965ab u_shadow 7 +T 676965ab u_tershadow 8 +T 676965ab u_ts_height 9 +P a45356c7 fullscreen.vert ternormal.frag +B a45356c7 frag 1 768 +U a45356c7 frag u_cascade_vp 0 mat4 5 64 +U a45356c7 frag u_cascade_split 320 float 5 16 +U a45356c7 frag u_cascade_range 400 float 5 16 +U a45356c7 frag u_cascade_texel 480 float 5 16 +U a45356c7 frag u_sun_dir 560 vec3 1 0 +U a45356c7 frag u_sun_color 576 vec3 1 0 +U a45356c7 frag u_cam_pos 592 vec3 1 0 +U a45356c7 frag u_prefilter_levels 604 float 1 0 +U a45356c7 frag u_fog_density 608 float 1 0 +U a45356c7 frag u_fog_height_falloff 612 float 1 0 +U a45356c7 frag u_fog_base 616 float 1 0 +U a45356c7 frag u_clip_y 620 float 1 0 +U a45356c7 frag u_spec_scale 624 float 1 0 +U a45356c7 frag u_sky_rot 632 vec2 1 0 +U a45356c7 frag u_ibl_scale 640 vec3 1 0 +U a45356c7 frag u_daylight 652 float 1 0 +U a45356c7 frag u_fire_pos 656 vec3 1 0 +U a45356c7 frag u_fire_color 672 vec3 1 0 +U a45356c7 frag u_hand_pos 688 vec3 1 0 +U a45356c7 frag u_hand_color 704 vec3 1 0 +U a45356c7 frag u_hand_dir 720 vec3 1 0 +U a45356c7 frag u_hand_cone 732 float 1 0 +U a45356c7 frag u_ts_origin 736 vec2 1 0 +U a45356c7 frag u_ts_half 744 float 1 0 +U a45356c7 frag u_ts_on 748 float 1 0 +U a45356c7 frag u_force_cascade 752 int 1 0 +U a45356c7 frag u_cloud_shadow 756 float 1 0 +U a45356c7 frag u_time 760 float 1 0 +U a45356c7 frag u_half 764 float 1 0 +T a45356c7 u_brdf 2 +T a45356c7 u_irradiance 3 +T a45356c7 u_prefilter 4 +T a45356c7 u_shadow 5 +T a45356c7 u_src 6 +T a45356c7 u_tershadow 7 +T a45356c7 u_ts_height 8 +P 4a8e9f28 fullscreen.vert tershadow.frag #define NOISE_ONLY; +B 4a8e9f28 frag 1 780 +U 4a8e9f28 frag u_cascade_vp 0 mat4 5 64 +U 4a8e9f28 frag u_cascade_split 320 float 5 16 +U 4a8e9f28 frag u_cascade_range 400 float 5 16 +U 4a8e9f28 frag u_cascade_texel 480 float 5 16 +U 4a8e9f28 frag u_sun_dir 560 vec3 1 0 +U 4a8e9f28 frag u_sun_color 576 vec3 1 0 +U 4a8e9f28 frag u_cam_pos 592 vec3 1 0 +U 4a8e9f28 frag u_prefilter_levels 604 float 1 0 +U 4a8e9f28 frag u_fog_density 608 float 1 0 +U 4a8e9f28 frag u_fog_height_falloff 612 float 1 0 +U 4a8e9f28 frag u_fog_base 616 float 1 0 +U 4a8e9f28 frag u_clip_y 620 float 1 0 +U 4a8e9f28 frag u_spec_scale 624 float 1 0 +U 4a8e9f28 frag u_sky_rot 632 vec2 1 0 +U 4a8e9f28 frag u_ibl_scale 640 vec3 1 0 +U 4a8e9f28 frag u_daylight 652 float 1 0 +U 4a8e9f28 frag u_fire_pos 656 vec3 1 0 +U 4a8e9f28 frag u_fire_color 672 vec3 1 0 +U 4a8e9f28 frag u_hand_pos 688 vec3 1 0 +U 4a8e9f28 frag u_hand_color 704 vec3 1 0 +U 4a8e9f28 frag u_hand_dir 720 vec3 1 0 +U 4a8e9f28 frag u_hand_cone 732 float 1 0 +U 4a8e9f28 frag u_ts_origin 736 vec2 1 0 +U 4a8e9f28 frag u_ts_half 744 float 1 0 +U 4a8e9f28 frag u_ts_on 748 float 1 0 +U 4a8e9f28 frag u_force_cascade 752 int 1 0 +U 4a8e9f28 frag u_cloud_shadow 756 float 1 0 +U 4a8e9f28 frag u_time 760 float 1 0 +U 4a8e9f28 frag u_half 764 float 1 0 +U 4a8e9f28 frag u_sun 768 vec3 1 0 +T 4a8e9f28 u_brdf 2 +T 4a8e9f28 u_height 3 +T 4a8e9f28 u_irradiance 4 +T 4a8e9f28 u_prefilter 5 +T 4a8e9f28 u_shadow 6 +T 4a8e9f28 u_tershadow 7 +T 4a8e9f28 u_ts_height 8 +P 725523d9 fullscreen.vert tonemap.frag +B 725523d9 frag 1 852 +U 725523d9 frag u_cascade_vp 0 mat4 5 64 +U 725523d9 frag u_cascade_split 320 float 5 16 +U 725523d9 frag u_cascade_range 400 float 5 16 +U 725523d9 frag u_cascade_texel 480 float 5 16 +U 725523d9 frag u_sun_dir 560 vec3 1 0 +U 725523d9 frag u_sun_color 576 vec3 1 0 +U 725523d9 frag u_cam_pos 592 vec3 1 0 +U 725523d9 frag u_prefilter_levels 604 float 1 0 +U 725523d9 frag u_fog_density 608 float 1 0 +U 725523d9 frag u_fog_height_falloff 612 float 1 0 +U 725523d9 frag u_fog_base 616 float 1 0 +U 725523d9 frag u_clip_y 620 float 1 0 +U 725523d9 frag u_spec_scale 624 float 1 0 +U 725523d9 frag u_sky_rot 632 vec2 1 0 +U 725523d9 frag u_ibl_scale 640 vec3 1 0 +U 725523d9 frag u_daylight 652 float 1 0 +U 725523d9 frag u_fire_pos 656 vec3 1 0 +U 725523d9 frag u_fire_color 672 vec3 1 0 +U 725523d9 frag u_hand_pos 688 vec3 1 0 +U 725523d9 frag u_hand_color 704 vec3 1 0 +U 725523d9 frag u_hand_dir 720 vec3 1 0 +U 725523d9 frag u_hand_cone 732 float 1 0 +U 725523d9 frag u_ts_origin 736 vec2 1 0 +U 725523d9 frag u_ts_half 744 float 1 0 +U 725523d9 frag u_ts_on 748 float 1 0 +U 725523d9 frag u_force_cascade 752 int 1 0 +U 725523d9 frag u_cloud_shadow 756 float 1 0 +U 725523d9 frag u_time 760 float 1 0 +U 725523d9 frag u_ao_strength 764 float 1 0 +U 725523d9 frag u_gi_strength 768 float 1 0 +U 725523d9 frag u_wb 784 vec3 1 0 +U 725523d9 frag u_lift 800 vec3 1 0 +U 725523d9 frag u_gain 816 vec3 1 0 +U 725523d9 frag u_exposure 828 float 1 0 +U 725523d9 frag u_auto 832 float 1 0 +U 725523d9 frag u_bloom_strength 836 float 1 0 +U 725523d9 frag u_vignette 840 float 1 0 +U 725523d9 frag u_saturation 844 float 1 0 +U 725523d9 frag u_contrast 848 float 1 0 +T 725523d9 u_adapt 2 +T 725523d9 u_ao 3 +T 725523d9 u_bloom 4 +T 725523d9 u_brdf 5 +T 725523d9 u_hdr 6 +T 725523d9 u_irradiance 7 +T 725523d9 u_prefilter 8 +T 725523d9 u_shadow 9 +T 725523d9 u_tershadow 10 +T 725523d9 u_ts_height 11 +P 7ed7de52 grass.vert model.frag #define FOLIAGE;#define BLADE; +B 7ed7de52 vert 0 296 +U 7ed7de52 vert u_view 0 mat4 1 0 +U 7ed7de52 vert u_proj 64 mat4 1 0 +U 7ed7de52 vert u_vp 128 mat4 1 0 +U 7ed7de52 vert u_cam_pos 192 vec3 1 0 +U 7ed7de52 vert u_time 204 float 1 0 +U 7ed7de52 vert u_ts_origin 208 vec2 1 0 +U 7ed7de52 vert u_ts_half 216 float 1 0 +U 7ed7de52 vert u_ortho_on 220 float 1 0 +U 7ed7de52 vert u_lake_level 224 float 1 0 +U 7ed7de52 vert u_sea_level 228 float 1 0 +U 7ed7de52 vert u_lake 240 vec4 1 0 +U 7ed7de52 vert u_snow_line 256 float 1 0 +U 7ed7de52 vert u_wind 260 float 1 0 +U 7ed7de52 vert u_tile 264 vec2 1 0 +U 7ed7de52 vert u_tile_cells 272 int 1 0 +U 7ed7de52 vert u_per_cell 276 int 1 0 +U 7ed7de52 vert u_s0 280 float 1 0 +U 7ed7de52 vert u_d0 284 float 1 0 +U 7ed7de52 vert u_radius 288 float 1 0 +U 7ed7de52 vert u_dbg 292 int 1 0 +I 7ed7de52 a_pos 0 vec3 +I 7ed7de52 a_uv 2 vec2 +B 7ed7de52 frag 1 892 +U 7ed7de52 frag u_cascade_vp 0 mat4 5 64 +U 7ed7de52 frag u_cascade_split 320 float 5 16 +U 7ed7de52 frag u_cascade_range 400 float 5 16 +U 7ed7de52 frag u_cascade_texel 480 float 5 16 +U 7ed7de52 frag u_sun_dir 560 vec3 1 0 +U 7ed7de52 frag u_sun_color 576 vec3 1 0 +U 7ed7de52 frag u_cam_pos 592 vec3 1 0 +U 7ed7de52 frag u_prefilter_levels 604 float 1 0 +U 7ed7de52 frag u_fog_density 608 float 1 0 +U 7ed7de52 frag u_fog_height_falloff 612 float 1 0 +U 7ed7de52 frag u_fog_base 616 float 1 0 +U 7ed7de52 frag u_clip_y 620 float 1 0 +U 7ed7de52 frag u_spec_scale 624 float 1 0 +U 7ed7de52 frag u_sky_rot 632 vec2 1 0 +U 7ed7de52 frag u_ibl_scale 640 vec3 1 0 +U 7ed7de52 frag u_daylight 652 float 1 0 +U 7ed7de52 frag u_fire_pos 656 vec3 1 0 +U 7ed7de52 frag u_fire_color 672 vec3 1 0 +U 7ed7de52 frag u_hand_pos 688 vec3 1 0 +U 7ed7de52 frag u_hand_color 704 vec3 1 0 +U 7ed7de52 frag u_hand_dir 720 vec3 1 0 +U 7ed7de52 frag u_hand_cone 732 float 1 0 +U 7ed7de52 frag u_ts_origin 736 vec2 1 0 +U 7ed7de52 frag u_ts_half 744 float 1 0 +U 7ed7de52 frag u_ts_on 748 float 1 0 +U 7ed7de52 frag u_force_cascade 752 int 1 0 +U 7ed7de52 frag u_cloud_shadow 756 float 1 0 +U 7ed7de52 frag u_time 760 float 1 0 +U 7ed7de52 frag u_model_h 764 float 1 0 +U 7ed7de52 frag u_view 768 mat4 1 0 +U 7ed7de52 frag u_tint 832 vec3 1 0 +U 7ed7de52 frag u_rough_scale 844 float 1 0 +U 7ed7de52 frag u_emissive 848 float 1 0 +U 7ed7de52 frag u_blade_base 864 vec3 1 0 +U 7ed7de52 frag u_blade_tip 880 vec3 1 0 +T 7ed7de52 u_arm 2 +T 7ed7de52 u_brdf 3 +T 7ed7de52 u_diff 4 +T 7ed7de52 u_irradiance 5 +T 7ed7de52 u_nrm 6 +T 7ed7de52 u_ortho 7 +T 7ed7de52 u_prefilter 8 +T 7ed7de52 u_shadow 9 +T 7ed7de52 u_tershadow 10 +T 7ed7de52 u_ts_height 11 +P 3733fc38 impostor.vert impostor.frag +B 3733fc38 vert 0 232 +U 3733fc38 vert u_view 0 mat4 1 0 +U 3733fc38 vert u_proj 64 mat4 1 0 +U 3733fc38 vert u_light_vp 128 mat4 1 0 +U 3733fc38 vert u_cam_pos 192 vec3 1 0 +U 3733fc38 vert u_face_dir 208 vec3 1 0 +U 3733fc38 vert u_radius 220 float 1 0 +U 3733fc38 vert u_height 224 float 1 0 +U 3733fc38 vert u_tiles 228 float 1 0 +I 3733fc38 i_pos 3 vec4 +I 3733fc38 i_rot 4 vec4 +I 3733fc38 a_xy 0 vec2 +I 3733fc38 a_uv 1 vec2 +B 3733fc38 frag 1 864 +U 3733fc38 frag u_cascade_vp 0 mat4 5 64 +U 3733fc38 frag u_cascade_split 320 float 5 16 +U 3733fc38 frag u_cascade_range 400 float 5 16 +U 3733fc38 frag u_cascade_texel 480 float 5 16 +U 3733fc38 frag u_sun_dir 560 vec3 1 0 +U 3733fc38 frag u_sun_color 576 vec3 1 0 +U 3733fc38 frag u_cam_pos 592 vec3 1 0 +U 3733fc38 frag u_prefilter_levels 604 float 1 0 +U 3733fc38 frag u_fog_density 608 float 1 0 +U 3733fc38 frag u_fog_height_falloff 612 float 1 0 +U 3733fc38 frag u_fog_base 616 float 1 0 +U 3733fc38 frag u_clip_y 620 float 1 0 +U 3733fc38 frag u_spec_scale 624 float 1 0 +U 3733fc38 frag u_sky_rot 632 vec2 1 0 +U 3733fc38 frag u_ibl_scale 640 vec3 1 0 +U 3733fc38 frag u_daylight 652 float 1 0 +U 3733fc38 frag u_fire_pos 656 vec3 1 0 +U 3733fc38 frag u_fire_color 672 vec3 1 0 +U 3733fc38 frag u_hand_pos 688 vec3 1 0 +U 3733fc38 frag u_hand_color 704 vec3 1 0 +U 3733fc38 frag u_hand_dir 720 vec3 1 0 +U 3733fc38 frag u_hand_cone 732 float 1 0 +U 3733fc38 frag u_ts_origin 736 vec2 1 0 +U 3733fc38 frag u_ts_half 744 float 1 0 +U 3733fc38 frag u_ts_on 748 float 1 0 +U 3733fc38 frag u_force_cascade 752 int 1 0 +U 3733fc38 frag u_cloud_shadow 756 float 1 0 +U 3733fc38 frag u_time 760 float 1 0 +U 3733fc38 frag u_view 768 mat4 1 0 +U 3733fc38 frag u_tiles 832 float 1 0 +U 3733fc38 frag u_tint 848 vec3 1 0 +U 3733fc38 frag u_radius 860 float 1 0 +T 3733fc38 u_atlas_albedo 2 +T 3733fc38 u_atlas_normal 3 +T 3733fc38 u_brdf 4 +T 3733fc38 u_irradiance 5 +T 3733fc38 u_prefilter 6 +T 3733fc38 u_shadow 7 +T 3733fc38 u_tershadow 8 +T 3733fc38 u_ts_height 9 +P 4d4fa91b impostor.vert impostor.frag #define SHADOW_PASS; +B 4d4fa91b vert 0 232 +U 4d4fa91b vert u_view 0 mat4 1 0 +U 4d4fa91b vert u_proj 64 mat4 1 0 +U 4d4fa91b vert u_light_vp 128 mat4 1 0 +U 4d4fa91b vert u_cam_pos 192 vec3 1 0 +U 4d4fa91b vert u_face_dir 208 vec3 1 0 +U 4d4fa91b vert u_radius 220 float 1 0 +U 4d4fa91b vert u_height 224 float 1 0 +U 4d4fa91b vert u_tiles 228 float 1 0 +I 4d4fa91b i_pos 3 vec4 +I 4d4fa91b i_rot 4 vec4 +I 4d4fa91b a_xy 0 vec2 +I 4d4fa91b a_uv 1 vec2 +B 4d4fa91b frag 1 864 +U 4d4fa91b frag u_cascade_vp 0 mat4 5 64 +U 4d4fa91b frag u_cascade_split 320 float 5 16 +U 4d4fa91b frag u_cascade_range 400 float 5 16 +U 4d4fa91b frag u_cascade_texel 480 float 5 16 +U 4d4fa91b frag u_sun_dir 560 vec3 1 0 +U 4d4fa91b frag u_sun_color 576 vec3 1 0 +U 4d4fa91b frag u_cam_pos 592 vec3 1 0 +U 4d4fa91b frag u_prefilter_levels 604 float 1 0 +U 4d4fa91b frag u_fog_density 608 float 1 0 +U 4d4fa91b frag u_fog_height_falloff 612 float 1 0 +U 4d4fa91b frag u_fog_base 616 float 1 0 +U 4d4fa91b frag u_clip_y 620 float 1 0 +U 4d4fa91b frag u_spec_scale 624 float 1 0 +U 4d4fa91b frag u_sky_rot 632 vec2 1 0 +U 4d4fa91b frag u_ibl_scale 640 vec3 1 0 +U 4d4fa91b frag u_daylight 652 float 1 0 +U 4d4fa91b frag u_fire_pos 656 vec3 1 0 +U 4d4fa91b frag u_fire_color 672 vec3 1 0 +U 4d4fa91b frag u_hand_pos 688 vec3 1 0 +U 4d4fa91b frag u_hand_color 704 vec3 1 0 +U 4d4fa91b frag u_hand_dir 720 vec3 1 0 +U 4d4fa91b frag u_hand_cone 732 float 1 0 +U 4d4fa91b frag u_ts_origin 736 vec2 1 0 +U 4d4fa91b frag u_ts_half 744 float 1 0 +U 4d4fa91b frag u_ts_on 748 float 1 0 +U 4d4fa91b frag u_force_cascade 752 int 1 0 +U 4d4fa91b frag u_cloud_shadow 756 float 1 0 +U 4d4fa91b frag u_time 760 float 1 0 +U 4d4fa91b frag u_view 768 mat4 1 0 +U 4d4fa91b frag u_tiles 832 float 1 0 +U 4d4fa91b frag u_tint 848 vec3 1 0 +U 4d4fa91b frag u_radius 860 float 1 0 +T 4d4fa91b u_atlas_albedo 2 +T 4d4fa91b u_atlas_normal 3 +T 4d4fa91b u_brdf 4 +T 4d4fa91b u_irradiance 5 +T 4d4fa91b u_prefilter 6 +T 4d4fa91b u_shadow 7 +T 4d4fa91b u_tershadow 8 +T 4d4fa91b u_ts_height 9 +P 9dce3246 model.vert bake.frag +B 9dce3246 vert 0 232 +U 9dce3246 vert u_view 0 mat4 1 0 +U 9dce3246 vert u_proj 64 mat4 1 0 +U 9dce3246 vert u_light_vp 128 mat4 1 0 +U 9dce3246 vert u_time 192 float 1 0 +U 9dce3246 vert u_wind 196 float 1 0 +U 9dce3246 vert u_card_w 200 float 1 0 +U 9dce3246 vert u_card_h 204 float 1 0 +U 9dce3246 vert u_ground 208 float 1 0 +U 9dce3246 vert u_ts_origin 216 vec2 1 0 +U 9dce3246 vert u_ts_half 224 float 1 0 +U 9dce3246 vert u_model_h 228 float 1 0 +I 9dce3246 i_rot 4 vec4 +I 9dce3246 a_pos 0 vec3 +I 9dce3246 i_pos 3 vec4 +I 9dce3246 a_nrm 1 vec3 +I 9dce3246 a_uv 2 vec2 +B 9dce3246 frag 0 764 +U 9dce3246 frag u_cascade_vp 0 mat4 5 64 +U 9dce3246 frag u_cascade_split 320 float 5 16 +U 9dce3246 frag u_cascade_range 400 float 5 16 +U 9dce3246 frag u_cascade_texel 480 float 5 16 +U 9dce3246 frag u_sun_dir 560 vec3 1 0 +U 9dce3246 frag u_sun_color 576 vec3 1 0 +U 9dce3246 frag u_cam_pos 592 vec3 1 0 +U 9dce3246 frag u_prefilter_levels 604 float 1 0 +U 9dce3246 frag u_fog_density 608 float 1 0 +U 9dce3246 frag u_fog_height_falloff 612 float 1 0 +U 9dce3246 frag u_fog_base 616 float 1 0 +U 9dce3246 frag u_clip_y 620 float 1 0 +U 9dce3246 frag u_spec_scale 624 float 1 0 +U 9dce3246 frag u_sky_rot 632 vec2 1 0 +U 9dce3246 frag u_ibl_scale 640 vec3 1 0 +U 9dce3246 frag u_daylight 652 float 1 0 +U 9dce3246 frag u_fire_pos 656 vec3 1 0 +U 9dce3246 frag u_fire_color 672 vec3 1 0 +U 9dce3246 frag u_hand_pos 688 vec3 1 0 +U 9dce3246 frag u_hand_color 704 vec3 1 0 +U 9dce3246 frag u_hand_dir 720 vec3 1 0 +U 9dce3246 frag u_hand_cone 732 float 1 0 +U 9dce3246 frag u_ts_origin 736 vec2 1 0 +U 9dce3246 frag u_ts_half 744 float 1 0 +U 9dce3246 frag u_ts_on 748 float 1 0 +U 9dce3246 frag u_force_cascade 752 int 1 0 +U 9dce3246 frag u_cloud_shadow 756 float 1 0 +U 9dce3246 frag u_time 760 float 1 0 +T 9dce3246 u_arm 2 +T 9dce3246 u_brdf 3 +T 9dce3246 u_diff 4 +T 9dce3246 u_irradiance 5 +T 9dce3246 u_prefilter 6 +T 9dce3246 u_shadow 7 +T 9dce3246 u_tershadow 8 +T 9dce3246 u_ts_height 9 +P 439a2253 model.vert bake.frag #define CARD; +B 439a2253 vert 0 232 +U 439a2253 vert u_view 0 mat4 1 0 +U 439a2253 vert u_proj 64 mat4 1 0 +U 439a2253 vert u_light_vp 128 mat4 1 0 +U 439a2253 vert u_time 192 float 1 0 +U 439a2253 vert u_wind 196 float 1 0 +U 439a2253 vert u_card_w 200 float 1 0 +U 439a2253 vert u_card_h 204 float 1 0 +U 439a2253 vert u_ground 208 float 1 0 +U 439a2253 vert u_ts_origin 216 vec2 1 0 +U 439a2253 vert u_ts_half 224 float 1 0 +U 439a2253 vert u_model_h 228 float 1 0 +I 439a2253 i_rot 4 vec4 +I 439a2253 a_pos 0 vec3 +I 439a2253 i_pos 3 vec4 +I 439a2253 a_nrm 1 vec3 +I 439a2253 a_uv 2 vec2 +B 439a2253 frag 0 764 +U 439a2253 frag u_cascade_vp 0 mat4 5 64 +U 439a2253 frag u_cascade_split 320 float 5 16 +U 439a2253 frag u_cascade_range 400 float 5 16 +U 439a2253 frag u_cascade_texel 480 float 5 16 +U 439a2253 frag u_sun_dir 560 vec3 1 0 +U 439a2253 frag u_sun_color 576 vec3 1 0 +U 439a2253 frag u_cam_pos 592 vec3 1 0 +U 439a2253 frag u_prefilter_levels 604 float 1 0 +U 439a2253 frag u_fog_density 608 float 1 0 +U 439a2253 frag u_fog_height_falloff 612 float 1 0 +U 439a2253 frag u_fog_base 616 float 1 0 +U 439a2253 frag u_clip_y 620 float 1 0 +U 439a2253 frag u_spec_scale 624 float 1 0 +U 439a2253 frag u_sky_rot 632 vec2 1 0 +U 439a2253 frag u_ibl_scale 640 vec3 1 0 +U 439a2253 frag u_daylight 652 float 1 0 +U 439a2253 frag u_fire_pos 656 vec3 1 0 +U 439a2253 frag u_fire_color 672 vec3 1 0 +U 439a2253 frag u_hand_pos 688 vec3 1 0 +U 439a2253 frag u_hand_color 704 vec3 1 0 +U 439a2253 frag u_hand_dir 720 vec3 1 0 +U 439a2253 frag u_hand_cone 732 float 1 0 +U 439a2253 frag u_ts_origin 736 vec2 1 0 +U 439a2253 frag u_ts_half 744 float 1 0 +U 439a2253 frag u_ts_on 748 float 1 0 +U 439a2253 frag u_force_cascade 752 int 1 0 +U 439a2253 frag u_cloud_shadow 756 float 1 0 +U 439a2253 frag u_time 760 float 1 0 +T 439a2253 u_arm 2 +T 439a2253 u_brdf 3 +T 439a2253 u_diff 4 +T 439a2253 u_irradiance 5 +T 439a2253 u_prefilter 6 +T 439a2253 u_shadow 7 +T 439a2253 u_tershadow 8 +T 439a2253 u_ts_height 9 +P 86f427b0 model.vert bake.frag #define FLOWER; +B 86f427b0 vert 0 232 +U 86f427b0 vert u_view 0 mat4 1 0 +U 86f427b0 vert u_proj 64 mat4 1 0 +U 86f427b0 vert u_light_vp 128 mat4 1 0 +U 86f427b0 vert u_time 192 float 1 0 +U 86f427b0 vert u_wind 196 float 1 0 +U 86f427b0 vert u_card_w 200 float 1 0 +U 86f427b0 vert u_card_h 204 float 1 0 +U 86f427b0 vert u_ground 208 float 1 0 +U 86f427b0 vert u_ts_origin 216 vec2 1 0 +U 86f427b0 vert u_ts_half 224 float 1 0 +U 86f427b0 vert u_model_h 228 float 1 0 +I 86f427b0 i_rot 4 vec4 +I 86f427b0 a_pos 0 vec3 +I 86f427b0 i_pos 3 vec4 +I 86f427b0 a_nrm 1 vec3 +I 86f427b0 a_uv 2 vec2 +B 86f427b0 frag 0 764 +U 86f427b0 frag u_cascade_vp 0 mat4 5 64 +U 86f427b0 frag u_cascade_split 320 float 5 16 +U 86f427b0 frag u_cascade_range 400 float 5 16 +U 86f427b0 frag u_cascade_texel 480 float 5 16 +U 86f427b0 frag u_sun_dir 560 vec3 1 0 +U 86f427b0 frag u_sun_color 576 vec3 1 0 +U 86f427b0 frag u_cam_pos 592 vec3 1 0 +U 86f427b0 frag u_prefilter_levels 604 float 1 0 +U 86f427b0 frag u_fog_density 608 float 1 0 +U 86f427b0 frag u_fog_height_falloff 612 float 1 0 +U 86f427b0 frag u_fog_base 616 float 1 0 +U 86f427b0 frag u_clip_y 620 float 1 0 +U 86f427b0 frag u_spec_scale 624 float 1 0 +U 86f427b0 frag u_sky_rot 632 vec2 1 0 +U 86f427b0 frag u_ibl_scale 640 vec3 1 0 +U 86f427b0 frag u_daylight 652 float 1 0 +U 86f427b0 frag u_fire_pos 656 vec3 1 0 +U 86f427b0 frag u_fire_color 672 vec3 1 0 +U 86f427b0 frag u_hand_pos 688 vec3 1 0 +U 86f427b0 frag u_hand_color 704 vec3 1 0 +U 86f427b0 frag u_hand_dir 720 vec3 1 0 +U 86f427b0 frag u_hand_cone 732 float 1 0 +U 86f427b0 frag u_ts_origin 736 vec2 1 0 +U 86f427b0 frag u_ts_half 744 float 1 0 +U 86f427b0 frag u_ts_on 748 float 1 0 +U 86f427b0 frag u_force_cascade 752 int 1 0 +U 86f427b0 frag u_cloud_shadow 756 float 1 0 +U 86f427b0 frag u_time 760 float 1 0 +T 86f427b0 u_arm 2 +T 86f427b0 u_brdf 3 +T 86f427b0 u_diff 4 +T 86f427b0 u_irradiance 5 +T 86f427b0 u_prefilter 6 +T 86f427b0 u_shadow 7 +T 86f427b0 u_tershadow 8 +T 86f427b0 u_ts_height 9 +P bfa15301 model.vert depth.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST; +B bfa15301 vert 0 232 +U bfa15301 vert u_view 0 mat4 1 0 +U bfa15301 vert u_proj 64 mat4 1 0 +U bfa15301 vert u_light_vp 128 mat4 1 0 +U bfa15301 vert u_time 192 float 1 0 +U bfa15301 vert u_wind 196 float 1 0 +U bfa15301 vert u_card_w 200 float 1 0 +U bfa15301 vert u_card_h 204 float 1 0 +U bfa15301 vert u_ground 208 float 1 0 +U bfa15301 vert u_ts_origin 216 vec2 1 0 +U bfa15301 vert u_ts_half 224 float 1 0 +U bfa15301 vert u_model_h 228 float 1 0 +I bfa15301 i_rot 4 vec4 +I bfa15301 a_pos 0 vec3 +I bfa15301 i_pos 3 vec4 +I bfa15301 a_nrm 1 vec3 +I bfa15301 a_uv 2 vec2 +B bfa15301 frag 1 764 +U bfa15301 frag u_cascade_vp 0 mat4 5 64 +U bfa15301 frag u_cascade_split 320 float 5 16 +U bfa15301 frag u_cascade_range 400 float 5 16 +U bfa15301 frag u_cascade_texel 480 float 5 16 +U bfa15301 frag u_sun_dir 560 vec3 1 0 +U bfa15301 frag u_sun_color 576 vec3 1 0 +U bfa15301 frag u_cam_pos 592 vec3 1 0 +U bfa15301 frag u_prefilter_levels 604 float 1 0 +U bfa15301 frag u_fog_density 608 float 1 0 +U bfa15301 frag u_fog_height_falloff 612 float 1 0 +U bfa15301 frag u_fog_base 616 float 1 0 +U bfa15301 frag u_clip_y 620 float 1 0 +U bfa15301 frag u_spec_scale 624 float 1 0 +U bfa15301 frag u_sky_rot 632 vec2 1 0 +U bfa15301 frag u_ibl_scale 640 vec3 1 0 +U bfa15301 frag u_daylight 652 float 1 0 +U bfa15301 frag u_fire_pos 656 vec3 1 0 +U bfa15301 frag u_fire_color 672 vec3 1 0 +U bfa15301 frag u_hand_pos 688 vec3 1 0 +U bfa15301 frag u_hand_color 704 vec3 1 0 +U bfa15301 frag u_hand_dir 720 vec3 1 0 +U bfa15301 frag u_hand_cone 732 float 1 0 +U bfa15301 frag u_ts_origin 736 vec2 1 0 +U bfa15301 frag u_ts_half 744 float 1 0 +U bfa15301 frag u_ts_on 748 float 1 0 +U bfa15301 frag u_force_cascade 752 int 1 0 +U bfa15301 frag u_cloud_shadow 756 float 1 0 +U bfa15301 frag u_time 760 float 1 0 +T bfa15301 u_brdf 2 +T bfa15301 u_diff 3 +T bfa15301 u_irradiance 4 +T bfa15301 u_prefilter 5 +T bfa15301 u_shadow 6 +T bfa15301 u_tershadow 7 +T bfa15301 u_ts_height 8 +P 01089da8 model.vert model.frag +B 01089da8 vert 0 232 +U 01089da8 vert u_view 0 mat4 1 0 +U 01089da8 vert u_proj 64 mat4 1 0 +U 01089da8 vert u_light_vp 128 mat4 1 0 +U 01089da8 vert u_time 192 float 1 0 +U 01089da8 vert u_wind 196 float 1 0 +U 01089da8 vert u_card_w 200 float 1 0 +U 01089da8 vert u_card_h 204 float 1 0 +U 01089da8 vert u_ground 208 float 1 0 +U 01089da8 vert u_ts_origin 216 vec2 1 0 +U 01089da8 vert u_ts_half 224 float 1 0 +U 01089da8 vert u_model_h 228 float 1 0 +I 01089da8 i_rot 4 vec4 +I 01089da8 a_pos 0 vec3 +I 01089da8 i_pos 3 vec4 +I 01089da8 a_nrm 1 vec3 +I 01089da8 a_uv 2 vec2 +B 01089da8 frag 1 852 +U 01089da8 frag u_cascade_vp 0 mat4 5 64 +U 01089da8 frag u_cascade_split 320 float 5 16 +U 01089da8 frag u_cascade_range 400 float 5 16 +U 01089da8 frag u_cascade_texel 480 float 5 16 +U 01089da8 frag u_sun_dir 560 vec3 1 0 +U 01089da8 frag u_sun_color 576 vec3 1 0 +U 01089da8 frag u_cam_pos 592 vec3 1 0 +U 01089da8 frag u_prefilter_levels 604 float 1 0 +U 01089da8 frag u_fog_density 608 float 1 0 +U 01089da8 frag u_fog_height_falloff 612 float 1 0 +U 01089da8 frag u_fog_base 616 float 1 0 +U 01089da8 frag u_clip_y 620 float 1 0 +U 01089da8 frag u_spec_scale 624 float 1 0 +U 01089da8 frag u_sky_rot 632 vec2 1 0 +U 01089da8 frag u_ibl_scale 640 vec3 1 0 +U 01089da8 frag u_daylight 652 float 1 0 +U 01089da8 frag u_fire_pos 656 vec3 1 0 +U 01089da8 frag u_fire_color 672 vec3 1 0 +U 01089da8 frag u_hand_pos 688 vec3 1 0 +U 01089da8 frag u_hand_color 704 vec3 1 0 +U 01089da8 frag u_hand_dir 720 vec3 1 0 +U 01089da8 frag u_hand_cone 732 float 1 0 +U 01089da8 frag u_ts_origin 736 vec2 1 0 +U 01089da8 frag u_ts_half 744 float 1 0 +U 01089da8 frag u_ts_on 748 float 1 0 +U 01089da8 frag u_force_cascade 752 int 1 0 +U 01089da8 frag u_cloud_shadow 756 float 1 0 +U 01089da8 frag u_time 760 float 1 0 +U 01089da8 frag u_model_h 764 float 1 0 +U 01089da8 frag u_view 768 mat4 1 0 +U 01089da8 frag u_tint 832 vec3 1 0 +U 01089da8 frag u_rough_scale 844 float 1 0 +U 01089da8 frag u_emissive 848 float 1 0 +T 01089da8 u_arm 2 +T 01089da8 u_brdf 3 +T 01089da8 u_diff 4 +T 01089da8 u_irradiance 5 +T 01089da8 u_nrm 6 +T 01089da8 u_prefilter 7 +T 01089da8 u_shadow 8 +T 01089da8 u_tershadow 9 +T 01089da8 u_ts_height 10 +P 254e7887 model.vert model.frag #define CARD;#define CHEAP; +B 254e7887 vert 0 232 +U 254e7887 vert u_view 0 mat4 1 0 +U 254e7887 vert u_proj 64 mat4 1 0 +U 254e7887 vert u_light_vp 128 mat4 1 0 +U 254e7887 vert u_time 192 float 1 0 +U 254e7887 vert u_wind 196 float 1 0 +U 254e7887 vert u_card_w 200 float 1 0 +U 254e7887 vert u_card_h 204 float 1 0 +U 254e7887 vert u_ground 208 float 1 0 +U 254e7887 vert u_ts_origin 216 vec2 1 0 +U 254e7887 vert u_ts_half 224 float 1 0 +U 254e7887 vert u_model_h 228 float 1 0 +I 254e7887 i_rot 4 vec4 +I 254e7887 a_pos 0 vec3 +I 254e7887 i_pos 3 vec4 +I 254e7887 a_nrm 1 vec3 +I 254e7887 a_uv 2 vec2 +B 254e7887 frag 1 856 +U 254e7887 frag u_cascade_vp 0 mat4 5 64 +U 254e7887 frag u_cascade_split 320 float 5 16 +U 254e7887 frag u_cascade_range 400 float 5 16 +U 254e7887 frag u_cascade_texel 480 float 5 16 +U 254e7887 frag u_sun_dir 560 vec3 1 0 +U 254e7887 frag u_sun_color 576 vec3 1 0 +U 254e7887 frag u_cam_pos 592 vec3 1 0 +U 254e7887 frag u_prefilter_levels 604 float 1 0 +U 254e7887 frag u_fog_density 608 float 1 0 +U 254e7887 frag u_fog_height_falloff 612 float 1 0 +U 254e7887 frag u_fog_base 616 float 1 0 +U 254e7887 frag u_clip_y 620 float 1 0 +U 254e7887 frag u_spec_scale 624 float 1 0 +U 254e7887 frag u_sky_rot 632 vec2 1 0 +U 254e7887 frag u_ibl_scale 640 vec3 1 0 +U 254e7887 frag u_daylight 652 float 1 0 +U 254e7887 frag u_fire_pos 656 vec3 1 0 +U 254e7887 frag u_fire_color 672 vec3 1 0 +U 254e7887 frag u_hand_pos 688 vec3 1 0 +U 254e7887 frag u_hand_color 704 vec3 1 0 +U 254e7887 frag u_hand_dir 720 vec3 1 0 +U 254e7887 frag u_hand_cone 732 float 1 0 +U 254e7887 frag u_ts_origin 736 vec2 1 0 +U 254e7887 frag u_ts_half 744 float 1 0 +U 254e7887 frag u_ts_on 748 float 1 0 +U 254e7887 frag u_force_cascade 752 int 1 0 +U 254e7887 frag u_cloud_shadow 756 float 1 0 +U 254e7887 frag u_time 760 float 1 0 +U 254e7887 frag u_model_h 764 float 1 0 +U 254e7887 frag u_view 768 mat4 1 0 +U 254e7887 frag u_tint 832 vec3 1 0 +U 254e7887 frag u_rough_scale 844 float 1 0 +U 254e7887 frag u_emissive 848 float 1 0 +U 254e7887 frag u_cull 852 float 1 0 +T 254e7887 u_arm 2 +T 254e7887 u_brdf 3 +T 254e7887 u_diff 4 +T 254e7887 u_irradiance 5 +T 254e7887 u_nrm 6 +T 254e7887 u_prefilter 7 +T 254e7887 u_shadow 8 +T 254e7887 u_tershadow 9 +T 254e7887 u_ts_height 10 +P 1ce5c5d1 model.vert model.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST; +B 1ce5c5d1 vert 0 232 +U 1ce5c5d1 vert u_view 0 mat4 1 0 +U 1ce5c5d1 vert u_proj 64 mat4 1 0 +U 1ce5c5d1 vert u_light_vp 128 mat4 1 0 +U 1ce5c5d1 vert u_time 192 float 1 0 +U 1ce5c5d1 vert u_wind 196 float 1 0 +U 1ce5c5d1 vert u_card_w 200 float 1 0 +U 1ce5c5d1 vert u_card_h 204 float 1 0 +U 1ce5c5d1 vert u_ground 208 float 1 0 +U 1ce5c5d1 vert u_ts_origin 216 vec2 1 0 +U 1ce5c5d1 vert u_ts_half 224 float 1 0 +U 1ce5c5d1 vert u_model_h 228 float 1 0 +I 1ce5c5d1 i_rot 4 vec4 +I 1ce5c5d1 a_pos 0 vec3 +I 1ce5c5d1 i_pos 3 vec4 +I 1ce5c5d1 a_nrm 1 vec3 +I 1ce5c5d1 a_uv 2 vec2 +B 1ce5c5d1 frag 1 852 +U 1ce5c5d1 frag u_cascade_vp 0 mat4 5 64 +U 1ce5c5d1 frag u_cascade_split 320 float 5 16 +U 1ce5c5d1 frag u_cascade_range 400 float 5 16 +U 1ce5c5d1 frag u_cascade_texel 480 float 5 16 +U 1ce5c5d1 frag u_sun_dir 560 vec3 1 0 +U 1ce5c5d1 frag u_sun_color 576 vec3 1 0 +U 1ce5c5d1 frag u_cam_pos 592 vec3 1 0 +U 1ce5c5d1 frag u_prefilter_levels 604 float 1 0 +U 1ce5c5d1 frag u_fog_density 608 float 1 0 +U 1ce5c5d1 frag u_fog_height_falloff 612 float 1 0 +U 1ce5c5d1 frag u_fog_base 616 float 1 0 +U 1ce5c5d1 frag u_clip_y 620 float 1 0 +U 1ce5c5d1 frag u_spec_scale 624 float 1 0 +U 1ce5c5d1 frag u_sky_rot 632 vec2 1 0 +U 1ce5c5d1 frag u_ibl_scale 640 vec3 1 0 +U 1ce5c5d1 frag u_daylight 652 float 1 0 +U 1ce5c5d1 frag u_fire_pos 656 vec3 1 0 +U 1ce5c5d1 frag u_fire_color 672 vec3 1 0 +U 1ce5c5d1 frag u_hand_pos 688 vec3 1 0 +U 1ce5c5d1 frag u_hand_color 704 vec3 1 0 +U 1ce5c5d1 frag u_hand_dir 720 vec3 1 0 +U 1ce5c5d1 frag u_hand_cone 732 float 1 0 +U 1ce5c5d1 frag u_ts_origin 736 vec2 1 0 +U 1ce5c5d1 frag u_ts_half 744 float 1 0 +U 1ce5c5d1 frag u_ts_on 748 float 1 0 +U 1ce5c5d1 frag u_force_cascade 752 int 1 0 +U 1ce5c5d1 frag u_cloud_shadow 756 float 1 0 +U 1ce5c5d1 frag u_time 760 float 1 0 +U 1ce5c5d1 frag u_model_h 764 float 1 0 +U 1ce5c5d1 frag u_view 768 mat4 1 0 +U 1ce5c5d1 frag u_tint 832 vec3 1 0 +U 1ce5c5d1 frag u_rough_scale 844 float 1 0 +U 1ce5c5d1 frag u_emissive 848 float 1 0 +T 1ce5c5d1 u_arm 2 +T 1ce5c5d1 u_brdf 3 +T 1ce5c5d1 u_diff 4 +T 1ce5c5d1 u_irradiance 5 +T 1ce5c5d1 u_nrm 6 +T 1ce5c5d1 u_prefilter 7 +T 1ce5c5d1 u_shadow 8 +T 1ce5c5d1 u_tershadow 9 +T 1ce5c5d1 u_ts_height 10 +P f4a2b586 model.vert model.frag #define FOLIAGE;#define WIND;#define BLADE; +B f4a2b586 vert 0 248 +U f4a2b586 vert u_view 0 mat4 1 0 +U f4a2b586 vert u_proj 64 mat4 1 0 +U f4a2b586 vert u_light_vp 128 mat4 1 0 +U f4a2b586 vert u_time 192 float 1 0 +U f4a2b586 vert u_wind 196 float 1 0 +U f4a2b586 vert u_card_w 200 float 1 0 +U f4a2b586 vert u_card_h 204 float 1 0 +U f4a2b586 vert u_cam_pos 208 vec3 1 0 +U f4a2b586 vert u_cull 220 float 1 0 +U f4a2b586 vert u_ground 224 float 1 0 +U f4a2b586 vert u_ts_origin 232 vec2 1 0 +U f4a2b586 vert u_ts_half 240 float 1 0 +U f4a2b586 vert u_model_h 244 float 1 0 +I f4a2b586 i_rot 4 vec4 +I f4a2b586 a_pos 0 vec3 +I f4a2b586 i_pos 3 vec4 +I f4a2b586 a_nrm 1 vec3 +I f4a2b586 a_uv 2 vec2 +B f4a2b586 frag 1 892 +U f4a2b586 frag u_cascade_vp 0 mat4 5 64 +U f4a2b586 frag u_cascade_split 320 float 5 16 +U f4a2b586 frag u_cascade_range 400 float 5 16 +U f4a2b586 frag u_cascade_texel 480 float 5 16 +U f4a2b586 frag u_sun_dir 560 vec3 1 0 +U f4a2b586 frag u_sun_color 576 vec3 1 0 +U f4a2b586 frag u_cam_pos 592 vec3 1 0 +U f4a2b586 frag u_prefilter_levels 604 float 1 0 +U f4a2b586 frag u_fog_density 608 float 1 0 +U f4a2b586 frag u_fog_height_falloff 612 float 1 0 +U f4a2b586 frag u_fog_base 616 float 1 0 +U f4a2b586 frag u_clip_y 620 float 1 0 +U f4a2b586 frag u_spec_scale 624 float 1 0 +U f4a2b586 frag u_sky_rot 632 vec2 1 0 +U f4a2b586 frag u_ibl_scale 640 vec3 1 0 +U f4a2b586 frag u_daylight 652 float 1 0 +U f4a2b586 frag u_fire_pos 656 vec3 1 0 +U f4a2b586 frag u_fire_color 672 vec3 1 0 +U f4a2b586 frag u_hand_pos 688 vec3 1 0 +U f4a2b586 frag u_hand_color 704 vec3 1 0 +U f4a2b586 frag u_hand_dir 720 vec3 1 0 +U f4a2b586 frag u_hand_cone 732 float 1 0 +U f4a2b586 frag u_ts_origin 736 vec2 1 0 +U f4a2b586 frag u_ts_half 744 float 1 0 +U f4a2b586 frag u_ts_on 748 float 1 0 +U f4a2b586 frag u_force_cascade 752 int 1 0 +U f4a2b586 frag u_cloud_shadow 756 float 1 0 +U f4a2b586 frag u_time 760 float 1 0 +U f4a2b586 frag u_model_h 764 float 1 0 +U f4a2b586 frag u_view 768 mat4 1 0 +U f4a2b586 frag u_tint 832 vec3 1 0 +U f4a2b586 frag u_rough_scale 844 float 1 0 +U f4a2b586 frag u_emissive 848 float 1 0 +U f4a2b586 frag u_blade_base 864 vec3 1 0 +U f4a2b586 frag u_blade_tip 880 vec3 1 0 +T f4a2b586 u_arm 2 +T f4a2b586 u_brdf 3 +T f4a2b586 u_diff 4 +T f4a2b586 u_irradiance 5 +T f4a2b586 u_nrm 6 +T f4a2b586 u_prefilter 7 +T f4a2b586 u_shadow 8 +T f4a2b586 u_tershadow 9 +T f4a2b586 u_ts_height 10 +P b4587cd4 model.vert model.frag #define FOLIAGE;#define WIND;#define CARD; +B b4587cd4 vert 0 232 +U b4587cd4 vert u_view 0 mat4 1 0 +U b4587cd4 vert u_proj 64 mat4 1 0 +U b4587cd4 vert u_light_vp 128 mat4 1 0 +U b4587cd4 vert u_time 192 float 1 0 +U b4587cd4 vert u_wind 196 float 1 0 +U b4587cd4 vert u_card_w 200 float 1 0 +U b4587cd4 vert u_card_h 204 float 1 0 +U b4587cd4 vert u_ground 208 float 1 0 +U b4587cd4 vert u_ts_origin 216 vec2 1 0 +U b4587cd4 vert u_ts_half 224 float 1 0 +U b4587cd4 vert u_model_h 228 float 1 0 +I b4587cd4 i_rot 4 vec4 +I b4587cd4 a_pos 0 vec3 +I b4587cd4 i_pos 3 vec4 +I b4587cd4 a_nrm 1 vec3 +I b4587cd4 a_uv 2 vec2 +B b4587cd4 frag 1 856 +U b4587cd4 frag u_cascade_vp 0 mat4 5 64 +U b4587cd4 frag u_cascade_split 320 float 5 16 +U b4587cd4 frag u_cascade_range 400 float 5 16 +U b4587cd4 frag u_cascade_texel 480 float 5 16 +U b4587cd4 frag u_sun_dir 560 vec3 1 0 +U b4587cd4 frag u_sun_color 576 vec3 1 0 +U b4587cd4 frag u_cam_pos 592 vec3 1 0 +U b4587cd4 frag u_prefilter_levels 604 float 1 0 +U b4587cd4 frag u_fog_density 608 float 1 0 +U b4587cd4 frag u_fog_height_falloff 612 float 1 0 +U b4587cd4 frag u_fog_base 616 float 1 0 +U b4587cd4 frag u_clip_y 620 float 1 0 +U b4587cd4 frag u_spec_scale 624 float 1 0 +U b4587cd4 frag u_sky_rot 632 vec2 1 0 +U b4587cd4 frag u_ibl_scale 640 vec3 1 0 +U b4587cd4 frag u_daylight 652 float 1 0 +U b4587cd4 frag u_fire_pos 656 vec3 1 0 +U b4587cd4 frag u_fire_color 672 vec3 1 0 +U b4587cd4 frag u_hand_pos 688 vec3 1 0 +U b4587cd4 frag u_hand_color 704 vec3 1 0 +U b4587cd4 frag u_hand_dir 720 vec3 1 0 +U b4587cd4 frag u_hand_cone 732 float 1 0 +U b4587cd4 frag u_ts_origin 736 vec2 1 0 +U b4587cd4 frag u_ts_half 744 float 1 0 +U b4587cd4 frag u_ts_on 748 float 1 0 +U b4587cd4 frag u_force_cascade 752 int 1 0 +U b4587cd4 frag u_cloud_shadow 756 float 1 0 +U b4587cd4 frag u_time 760 float 1 0 +U b4587cd4 frag u_model_h 764 float 1 0 +U b4587cd4 frag u_view 768 mat4 1 0 +U b4587cd4 frag u_tint 832 vec3 1 0 +U b4587cd4 frag u_rough_scale 844 float 1 0 +U b4587cd4 frag u_emissive 848 float 1 0 +U b4587cd4 frag u_cull 852 float 1 0 +T b4587cd4 u_arm 2 +T b4587cd4 u_brdf 3 +T b4587cd4 u_diff 4 +T b4587cd4 u_irradiance 5 +T b4587cd4 u_nrm 6 +T b4587cd4 u_prefilter 7 +T b4587cd4 u_shadow 8 +T b4587cd4 u_tershadow 9 +T b4587cd4 u_ts_height 10 +P 4dda406a model.vert model.frag #define FOLIAGE;#define WIND;#define EQ_PASS; +B 4dda406a vert 0 232 +U 4dda406a vert u_view 0 mat4 1 0 +U 4dda406a vert u_proj 64 mat4 1 0 +U 4dda406a vert u_light_vp 128 mat4 1 0 +U 4dda406a vert u_time 192 float 1 0 +U 4dda406a vert u_wind 196 float 1 0 +U 4dda406a vert u_card_w 200 float 1 0 +U 4dda406a vert u_card_h 204 float 1 0 +U 4dda406a vert u_ground 208 float 1 0 +U 4dda406a vert u_ts_origin 216 vec2 1 0 +U 4dda406a vert u_ts_half 224 float 1 0 +U 4dda406a vert u_model_h 228 float 1 0 +I 4dda406a i_rot 4 vec4 +I 4dda406a a_pos 0 vec3 +I 4dda406a i_pos 3 vec4 +I 4dda406a a_nrm 1 vec3 +I 4dda406a a_uv 2 vec2 +B 4dda406a frag 1 852 +U 4dda406a frag u_cascade_vp 0 mat4 5 64 +U 4dda406a frag u_cascade_split 320 float 5 16 +U 4dda406a frag u_cascade_range 400 float 5 16 +U 4dda406a frag u_cascade_texel 480 float 5 16 +U 4dda406a frag u_sun_dir 560 vec3 1 0 +U 4dda406a frag u_sun_color 576 vec3 1 0 +U 4dda406a frag u_cam_pos 592 vec3 1 0 +U 4dda406a frag u_prefilter_levels 604 float 1 0 +U 4dda406a frag u_fog_density 608 float 1 0 +U 4dda406a frag u_fog_height_falloff 612 float 1 0 +U 4dda406a frag u_fog_base 616 float 1 0 +U 4dda406a frag u_clip_y 620 float 1 0 +U 4dda406a frag u_spec_scale 624 float 1 0 +U 4dda406a frag u_sky_rot 632 vec2 1 0 +U 4dda406a frag u_ibl_scale 640 vec3 1 0 +U 4dda406a frag u_daylight 652 float 1 0 +U 4dda406a frag u_fire_pos 656 vec3 1 0 +U 4dda406a frag u_fire_color 672 vec3 1 0 +U 4dda406a frag u_hand_pos 688 vec3 1 0 +U 4dda406a frag u_hand_color 704 vec3 1 0 +U 4dda406a frag u_hand_dir 720 vec3 1 0 +U 4dda406a frag u_hand_cone 732 float 1 0 +U 4dda406a frag u_ts_origin 736 vec2 1 0 +U 4dda406a frag u_ts_half 744 float 1 0 +U 4dda406a frag u_ts_on 748 float 1 0 +U 4dda406a frag u_force_cascade 752 int 1 0 +U 4dda406a frag u_cloud_shadow 756 float 1 0 +U 4dda406a frag u_time 760 float 1 0 +U 4dda406a frag u_model_h 764 float 1 0 +U 4dda406a frag u_view 768 mat4 1 0 +U 4dda406a frag u_tint 832 vec3 1 0 +U 4dda406a frag u_rough_scale 844 float 1 0 +U 4dda406a frag u_emissive 848 float 1 0 +T 4dda406a u_arm 2 +T 4dda406a u_brdf 3 +T 4dda406a u_diff 4 +T 4dda406a u_irradiance 5 +T 4dda406a u_nrm 6 +T 4dda406a u_prefilter 7 +T 4dda406a u_shadow 8 +T 4dda406a u_tershadow 9 +T 4dda406a u_ts_height 10 +P 3b183d8f model.vert model.frag #define FOLIAGE;#define WIND;#define FLOWER; +B 3b183d8f vert 0 232 +U 3b183d8f vert u_view 0 mat4 1 0 +U 3b183d8f vert u_proj 64 mat4 1 0 +U 3b183d8f vert u_light_vp 128 mat4 1 0 +U 3b183d8f vert u_time 192 float 1 0 +U 3b183d8f vert u_wind 196 float 1 0 +U 3b183d8f vert u_card_w 200 float 1 0 +U 3b183d8f vert u_card_h 204 float 1 0 +U 3b183d8f vert u_ground 208 float 1 0 +U 3b183d8f vert u_ts_origin 216 vec2 1 0 +U 3b183d8f vert u_ts_half 224 float 1 0 +U 3b183d8f vert u_model_h 228 float 1 0 +I 3b183d8f i_rot 4 vec4 +I 3b183d8f a_pos 0 vec3 +I 3b183d8f i_pos 3 vec4 +I 3b183d8f a_nrm 1 vec3 +I 3b183d8f a_uv 2 vec2 +B 3b183d8f frag 1 852 +U 3b183d8f frag u_cascade_vp 0 mat4 5 64 +U 3b183d8f frag u_cascade_split 320 float 5 16 +U 3b183d8f frag u_cascade_range 400 float 5 16 +U 3b183d8f frag u_cascade_texel 480 float 5 16 +U 3b183d8f frag u_sun_dir 560 vec3 1 0 +U 3b183d8f frag u_sun_color 576 vec3 1 0 +U 3b183d8f frag u_cam_pos 592 vec3 1 0 +U 3b183d8f frag u_prefilter_levels 604 float 1 0 +U 3b183d8f frag u_fog_density 608 float 1 0 +U 3b183d8f frag u_fog_height_falloff 612 float 1 0 +U 3b183d8f frag u_fog_base 616 float 1 0 +U 3b183d8f frag u_clip_y 620 float 1 0 +U 3b183d8f frag u_spec_scale 624 float 1 0 +U 3b183d8f frag u_sky_rot 632 vec2 1 0 +U 3b183d8f frag u_ibl_scale 640 vec3 1 0 +U 3b183d8f frag u_daylight 652 float 1 0 +U 3b183d8f frag u_fire_pos 656 vec3 1 0 +U 3b183d8f frag u_fire_color 672 vec3 1 0 +U 3b183d8f frag u_hand_pos 688 vec3 1 0 +U 3b183d8f frag u_hand_color 704 vec3 1 0 +U 3b183d8f frag u_hand_dir 720 vec3 1 0 +U 3b183d8f frag u_hand_cone 732 float 1 0 +U 3b183d8f frag u_ts_origin 736 vec2 1 0 +U 3b183d8f frag u_ts_half 744 float 1 0 +U 3b183d8f frag u_ts_on 748 float 1 0 +U 3b183d8f frag u_force_cascade 752 int 1 0 +U 3b183d8f frag u_cloud_shadow 756 float 1 0 +U 3b183d8f frag u_time 760 float 1 0 +U 3b183d8f frag u_model_h 764 float 1 0 +U 3b183d8f frag u_view 768 mat4 1 0 +U 3b183d8f frag u_tint 832 vec3 1 0 +U 3b183d8f frag u_rough_scale 844 float 1 0 +U 3b183d8f frag u_emissive 848 float 1 0 +T 3b183d8f u_arm 2 +T 3b183d8f u_brdf 3 +T 3b183d8f u_diff 4 +T 3b183d8f u_irradiance 5 +T 3b183d8f u_nrm 6 +T 3b183d8f u_prefilter 7 +T 3b183d8f u_shadow 8 +T 3b183d8f u_tershadow 9 +T 3b183d8f u_ts_height 10 +P 79b77ed9 model.vert model.frag #define SHADOW_PASS;#define WIND;#define CARD; +B 79b77ed9 vert 0 232 +U 79b77ed9 vert u_view 0 mat4 1 0 +U 79b77ed9 vert u_proj 64 mat4 1 0 +U 79b77ed9 vert u_light_vp 128 mat4 1 0 +U 79b77ed9 vert u_time 192 float 1 0 +U 79b77ed9 vert u_wind 196 float 1 0 +U 79b77ed9 vert u_card_w 200 float 1 0 +U 79b77ed9 vert u_card_h 204 float 1 0 +U 79b77ed9 vert u_ground 208 float 1 0 +U 79b77ed9 vert u_ts_origin 216 vec2 1 0 +U 79b77ed9 vert u_ts_half 224 float 1 0 +U 79b77ed9 vert u_model_h 228 float 1 0 +I 79b77ed9 i_rot 4 vec4 +I 79b77ed9 a_pos 0 vec3 +I 79b77ed9 i_pos 3 vec4 +I 79b77ed9 a_nrm 1 vec3 +I 79b77ed9 a_uv 2 vec2 +B 79b77ed9 frag 1 856 +U 79b77ed9 frag u_cascade_vp 0 mat4 5 64 +U 79b77ed9 frag u_cascade_split 320 float 5 16 +U 79b77ed9 frag u_cascade_range 400 float 5 16 +U 79b77ed9 frag u_cascade_texel 480 float 5 16 +U 79b77ed9 frag u_sun_dir 560 vec3 1 0 +U 79b77ed9 frag u_sun_color 576 vec3 1 0 +U 79b77ed9 frag u_cam_pos 592 vec3 1 0 +U 79b77ed9 frag u_prefilter_levels 604 float 1 0 +U 79b77ed9 frag u_fog_density 608 float 1 0 +U 79b77ed9 frag u_fog_height_falloff 612 float 1 0 +U 79b77ed9 frag u_fog_base 616 float 1 0 +U 79b77ed9 frag u_clip_y 620 float 1 0 +U 79b77ed9 frag u_spec_scale 624 float 1 0 +U 79b77ed9 frag u_sky_rot 632 vec2 1 0 +U 79b77ed9 frag u_ibl_scale 640 vec3 1 0 +U 79b77ed9 frag u_daylight 652 float 1 0 +U 79b77ed9 frag u_fire_pos 656 vec3 1 0 +U 79b77ed9 frag u_fire_color 672 vec3 1 0 +U 79b77ed9 frag u_hand_pos 688 vec3 1 0 +U 79b77ed9 frag u_hand_color 704 vec3 1 0 +U 79b77ed9 frag u_hand_dir 720 vec3 1 0 +U 79b77ed9 frag u_hand_cone 732 float 1 0 +U 79b77ed9 frag u_ts_origin 736 vec2 1 0 +U 79b77ed9 frag u_ts_half 744 float 1 0 +U 79b77ed9 frag u_ts_on 748 float 1 0 +U 79b77ed9 frag u_force_cascade 752 int 1 0 +U 79b77ed9 frag u_cloud_shadow 756 float 1 0 +U 79b77ed9 frag u_time 760 float 1 0 +U 79b77ed9 frag u_model_h 764 float 1 0 +U 79b77ed9 frag u_view 768 mat4 1 0 +U 79b77ed9 frag u_tint 832 vec3 1 0 +U 79b77ed9 frag u_rough_scale 844 float 1 0 +U 79b77ed9 frag u_emissive 848 float 1 0 +U 79b77ed9 frag u_cull 852 float 1 0 +T 79b77ed9 u_arm 2 +T 79b77ed9 u_brdf 3 +T 79b77ed9 u_diff 4 +T 79b77ed9 u_irradiance 5 +T 79b77ed9 u_nrm 6 +T 79b77ed9 u_prefilter 7 +T 79b77ed9 u_shadow 8 +T 79b77ed9 u_tershadow 9 +T 79b77ed9 u_ts_height 10 +P b9fc2041 model.vert model.frag #define WIND; +B b9fc2041 vert 0 232 +U b9fc2041 vert u_view 0 mat4 1 0 +U b9fc2041 vert u_proj 64 mat4 1 0 +U b9fc2041 vert u_light_vp 128 mat4 1 0 +U b9fc2041 vert u_time 192 float 1 0 +U b9fc2041 vert u_wind 196 float 1 0 +U b9fc2041 vert u_card_w 200 float 1 0 +U b9fc2041 vert u_card_h 204 float 1 0 +U b9fc2041 vert u_ground 208 float 1 0 +U b9fc2041 vert u_ts_origin 216 vec2 1 0 +U b9fc2041 vert u_ts_half 224 float 1 0 +U b9fc2041 vert u_model_h 228 float 1 0 +I b9fc2041 i_rot 4 vec4 +I b9fc2041 a_pos 0 vec3 +I b9fc2041 i_pos 3 vec4 +I b9fc2041 a_nrm 1 vec3 +I b9fc2041 a_uv 2 vec2 +B b9fc2041 frag 1 852 +U b9fc2041 frag u_cascade_vp 0 mat4 5 64 +U b9fc2041 frag u_cascade_split 320 float 5 16 +U b9fc2041 frag u_cascade_range 400 float 5 16 +U b9fc2041 frag u_cascade_texel 480 float 5 16 +U b9fc2041 frag u_sun_dir 560 vec3 1 0 +U b9fc2041 frag u_sun_color 576 vec3 1 0 +U b9fc2041 frag u_cam_pos 592 vec3 1 0 +U b9fc2041 frag u_prefilter_levels 604 float 1 0 +U b9fc2041 frag u_fog_density 608 float 1 0 +U b9fc2041 frag u_fog_height_falloff 612 float 1 0 +U b9fc2041 frag u_fog_base 616 float 1 0 +U b9fc2041 frag u_clip_y 620 float 1 0 +U b9fc2041 frag u_spec_scale 624 float 1 0 +U b9fc2041 frag u_sky_rot 632 vec2 1 0 +U b9fc2041 frag u_ibl_scale 640 vec3 1 0 +U b9fc2041 frag u_daylight 652 float 1 0 +U b9fc2041 frag u_fire_pos 656 vec3 1 0 +U b9fc2041 frag u_fire_color 672 vec3 1 0 +U b9fc2041 frag u_hand_pos 688 vec3 1 0 +U b9fc2041 frag u_hand_color 704 vec3 1 0 +U b9fc2041 frag u_hand_dir 720 vec3 1 0 +U b9fc2041 frag u_hand_cone 732 float 1 0 +U b9fc2041 frag u_ts_origin 736 vec2 1 0 +U b9fc2041 frag u_ts_half 744 float 1 0 +U b9fc2041 frag u_ts_on 748 float 1 0 +U b9fc2041 frag u_force_cascade 752 int 1 0 +U b9fc2041 frag u_cloud_shadow 756 float 1 0 +U b9fc2041 frag u_time 760 float 1 0 +U b9fc2041 frag u_model_h 764 float 1 0 +U b9fc2041 frag u_view 768 mat4 1 0 +U b9fc2041 frag u_tint 832 vec3 1 0 +U b9fc2041 frag u_rough_scale 844 float 1 0 +U b9fc2041 frag u_emissive 848 float 1 0 +T b9fc2041 u_arm 2 +T b9fc2041 u_brdf 3 +T b9fc2041 u_diff 4 +T b9fc2041 u_irradiance 5 +T b9fc2041 u_nrm 6 +T b9fc2041 u_prefilter 7 +T b9fc2041 u_shadow 8 +T b9fc2041 u_tershadow 9 +T b9fc2041 u_ts_height 10 +P f34dce08 model.vert shadow.frag #define SHADOW_PASS; +B f34dce08 vert 0 232 +U f34dce08 vert u_view 0 mat4 1 0 +U f34dce08 vert u_proj 64 mat4 1 0 +U f34dce08 vert u_light_vp 128 mat4 1 0 +U f34dce08 vert u_time 192 float 1 0 +U f34dce08 vert u_wind 196 float 1 0 +U f34dce08 vert u_card_w 200 float 1 0 +U f34dce08 vert u_card_h 204 float 1 0 +U f34dce08 vert u_ground 208 float 1 0 +U f34dce08 vert u_ts_origin 216 vec2 1 0 +U f34dce08 vert u_ts_half 224 float 1 0 +U f34dce08 vert u_model_h 228 float 1 0 +I f34dce08 i_rot 4 vec4 +I f34dce08 a_pos 0 vec3 +I f34dce08 i_pos 3 vec4 +I f34dce08 a_nrm 1 vec3 +I f34dce08 a_uv 2 vec2 +B f34dce08 frag 0 764 +U f34dce08 frag u_cascade_vp 0 mat4 5 64 +U f34dce08 frag u_cascade_split 320 float 5 16 +U f34dce08 frag u_cascade_range 400 float 5 16 +U f34dce08 frag u_cascade_texel 480 float 5 16 +U f34dce08 frag u_sun_dir 560 vec3 1 0 +U f34dce08 frag u_sun_color 576 vec3 1 0 +U f34dce08 frag u_cam_pos 592 vec3 1 0 +U f34dce08 frag u_prefilter_levels 604 float 1 0 +U f34dce08 frag u_fog_density 608 float 1 0 +U f34dce08 frag u_fog_height_falloff 612 float 1 0 +U f34dce08 frag u_fog_base 616 float 1 0 +U f34dce08 frag u_clip_y 620 float 1 0 +U f34dce08 frag u_spec_scale 624 float 1 0 +U f34dce08 frag u_sky_rot 632 vec2 1 0 +U f34dce08 frag u_ibl_scale 640 vec3 1 0 +U f34dce08 frag u_daylight 652 float 1 0 +U f34dce08 frag u_fire_pos 656 vec3 1 0 +U f34dce08 frag u_fire_color 672 vec3 1 0 +U f34dce08 frag u_hand_pos 688 vec3 1 0 +U f34dce08 frag u_hand_color 704 vec3 1 0 +U f34dce08 frag u_hand_dir 720 vec3 1 0 +U f34dce08 frag u_hand_cone 732 float 1 0 +U f34dce08 frag u_ts_origin 736 vec2 1 0 +U f34dce08 frag u_ts_half 744 float 1 0 +U f34dce08 frag u_ts_on 748 float 1 0 +U f34dce08 frag u_force_cascade 752 int 1 0 +U f34dce08 frag u_cloud_shadow 756 float 1 0 +U f34dce08 frag u_time 760 float 1 0 +T f34dce08 u_brdf 2 +T f34dce08 u_diff 3 +T f34dce08 u_irradiance 4 +T f34dce08 u_prefilter 5 +T f34dce08 u_shadow 6 +T f34dce08 u_tershadow 7 +T f34dce08 u_ts_height 8 +P 512004a1 model.vert shadow.frag #define SHADOW_PASS;#define WIND; +B 512004a1 vert 0 232 +U 512004a1 vert u_view 0 mat4 1 0 +U 512004a1 vert u_proj 64 mat4 1 0 +U 512004a1 vert u_light_vp 128 mat4 1 0 +U 512004a1 vert u_time 192 float 1 0 +U 512004a1 vert u_wind 196 float 1 0 +U 512004a1 vert u_card_w 200 float 1 0 +U 512004a1 vert u_card_h 204 float 1 0 +U 512004a1 vert u_ground 208 float 1 0 +U 512004a1 vert u_ts_origin 216 vec2 1 0 +U 512004a1 vert u_ts_half 224 float 1 0 +U 512004a1 vert u_model_h 228 float 1 0 +I 512004a1 i_rot 4 vec4 +I 512004a1 a_pos 0 vec3 +I 512004a1 i_pos 3 vec4 +I 512004a1 a_nrm 1 vec3 +I 512004a1 a_uv 2 vec2 +B 512004a1 frag 0 764 +U 512004a1 frag u_cascade_vp 0 mat4 5 64 +U 512004a1 frag u_cascade_split 320 float 5 16 +U 512004a1 frag u_cascade_range 400 float 5 16 +U 512004a1 frag u_cascade_texel 480 float 5 16 +U 512004a1 frag u_sun_dir 560 vec3 1 0 +U 512004a1 frag u_sun_color 576 vec3 1 0 +U 512004a1 frag u_cam_pos 592 vec3 1 0 +U 512004a1 frag u_prefilter_levels 604 float 1 0 +U 512004a1 frag u_fog_density 608 float 1 0 +U 512004a1 frag u_fog_height_falloff 612 float 1 0 +U 512004a1 frag u_fog_base 616 float 1 0 +U 512004a1 frag u_clip_y 620 float 1 0 +U 512004a1 frag u_spec_scale 624 float 1 0 +U 512004a1 frag u_sky_rot 632 vec2 1 0 +U 512004a1 frag u_ibl_scale 640 vec3 1 0 +U 512004a1 frag u_daylight 652 float 1 0 +U 512004a1 frag u_fire_pos 656 vec3 1 0 +U 512004a1 frag u_fire_color 672 vec3 1 0 +U 512004a1 frag u_hand_pos 688 vec3 1 0 +U 512004a1 frag u_hand_color 704 vec3 1 0 +U 512004a1 frag u_hand_dir 720 vec3 1 0 +U 512004a1 frag u_hand_cone 732 float 1 0 +U 512004a1 frag u_ts_origin 736 vec2 1 0 +U 512004a1 frag u_ts_half 744 float 1 0 +U 512004a1 frag u_ts_on 748 float 1 0 +U 512004a1 frag u_force_cascade 752 int 1 0 +U 512004a1 frag u_cloud_shadow 756 float 1 0 +U 512004a1 frag u_time 760 float 1 0 +T 512004a1 u_brdf 2 +T 512004a1 u_diff 3 +T 512004a1 u_irradiance 4 +T 512004a1 u_prefilter 5 +T 512004a1 u_shadow 6 +T 512004a1 u_tershadow 7 +T 512004a1 u_ts_height 8 +P b964507f model.vert shadow.frag #define SHADOW_PASS;#define WIND;#define ALPHA_TEST; +B b964507f vert 0 232 +U b964507f vert u_view 0 mat4 1 0 +U b964507f vert u_proj 64 mat4 1 0 +U b964507f vert u_light_vp 128 mat4 1 0 +U b964507f vert u_time 192 float 1 0 +U b964507f vert u_wind 196 float 1 0 +U b964507f vert u_card_w 200 float 1 0 +U b964507f vert u_card_h 204 float 1 0 +U b964507f vert u_ground 208 float 1 0 +U b964507f vert u_ts_origin 216 vec2 1 0 +U b964507f vert u_ts_half 224 float 1 0 +U b964507f vert u_model_h 228 float 1 0 +I b964507f i_rot 4 vec4 +I b964507f a_pos 0 vec3 +I b964507f i_pos 3 vec4 +I b964507f a_nrm 1 vec3 +I b964507f a_uv 2 vec2 +B b964507f frag 0 764 +U b964507f frag u_cascade_vp 0 mat4 5 64 +U b964507f frag u_cascade_split 320 float 5 16 +U b964507f frag u_cascade_range 400 float 5 16 +U b964507f frag u_cascade_texel 480 float 5 16 +U b964507f frag u_sun_dir 560 vec3 1 0 +U b964507f frag u_sun_color 576 vec3 1 0 +U b964507f frag u_cam_pos 592 vec3 1 0 +U b964507f frag u_prefilter_levels 604 float 1 0 +U b964507f frag u_fog_density 608 float 1 0 +U b964507f frag u_fog_height_falloff 612 float 1 0 +U b964507f frag u_fog_base 616 float 1 0 +U b964507f frag u_clip_y 620 float 1 0 +U b964507f frag u_spec_scale 624 float 1 0 +U b964507f frag u_sky_rot 632 vec2 1 0 +U b964507f frag u_ibl_scale 640 vec3 1 0 +U b964507f frag u_daylight 652 float 1 0 +U b964507f frag u_fire_pos 656 vec3 1 0 +U b964507f frag u_fire_color 672 vec3 1 0 +U b964507f frag u_hand_pos 688 vec3 1 0 +U b964507f frag u_hand_color 704 vec3 1 0 +U b964507f frag u_hand_dir 720 vec3 1 0 +U b964507f frag u_hand_cone 732 float 1 0 +U b964507f frag u_ts_origin 736 vec2 1 0 +U b964507f frag u_ts_half 744 float 1 0 +U b964507f frag u_ts_on 748 float 1 0 +U b964507f frag u_force_cascade 752 int 1 0 +U b964507f frag u_cloud_shadow 756 float 1 0 +U b964507f frag u_time 760 float 1 0 +T b964507f u_brdf 2 +T b964507f u_diff 3 +T b964507f u_irradiance 4 +T b964507f u_prefilter 5 +T b964507f u_shadow 6 +T b964507f u_tershadow 7 +T b964507f u_ts_height 8 +P 1b654972 overlay.vert overlay.frag +B 1b654972 vert 0 8 +U 1b654972 vert u_screen 0 vec2 1 0 +I 1b654972 a_pos 0 vec2 +I 1b654972 a_uv 1 vec2 +I 1b654972 a_col 2 vec4 +B 1b654972 frag 1 768 +U 1b654972 frag u_cascade_vp 0 mat4 5 64 +U 1b654972 frag u_cascade_split 320 float 5 16 +U 1b654972 frag u_cascade_range 400 float 5 16 +U 1b654972 frag u_cascade_texel 480 float 5 16 +U 1b654972 frag u_sun_dir 560 vec3 1 0 +U 1b654972 frag u_sun_color 576 vec3 1 0 +U 1b654972 frag u_cam_pos 592 vec3 1 0 +U 1b654972 frag u_prefilter_levels 604 float 1 0 +U 1b654972 frag u_fog_density 608 float 1 0 +U 1b654972 frag u_fog_height_falloff 612 float 1 0 +U 1b654972 frag u_fog_base 616 float 1 0 +U 1b654972 frag u_clip_y 620 float 1 0 +U 1b654972 frag u_spec_scale 624 float 1 0 +U 1b654972 frag u_sky_rot 632 vec2 1 0 +U 1b654972 frag u_ibl_scale 640 vec3 1 0 +U 1b654972 frag u_daylight 652 float 1 0 +U 1b654972 frag u_fire_pos 656 vec3 1 0 +U 1b654972 frag u_fire_color 672 vec3 1 0 +U 1b654972 frag u_hand_pos 688 vec3 1 0 +U 1b654972 frag u_hand_color 704 vec3 1 0 +U 1b654972 frag u_hand_dir 720 vec3 1 0 +U 1b654972 frag u_hand_cone 732 float 1 0 +U 1b654972 frag u_ts_origin 736 vec2 1 0 +U 1b654972 frag u_ts_half 744 float 1 0 +U 1b654972 frag u_ts_on 748 float 1 0 +U 1b654972 frag u_force_cascade 752 int 1 0 +U 1b654972 frag u_cloud_shadow 756 float 1 0 +U 1b654972 frag u_time 760 float 1 0 +U 1b654972 frag u_is_font 764 float 1 0 +T 1b654972 u_brdf 2 +T 1b654972 u_irradiance 3 +T 1b654972 u_prefilter 4 +T 1b654972 u_shadow 5 +T 1b654972 u_tershadow 6 +T 1b654972 u_tex 7 +T 1b654972 u_ts_height 8 +P 1fde9cd2 skin.vert model.frag +B 1fde9cd2 vert 0 3344 +U 1fde9cd2 vert u_model 0 mat4 1 0 +U 1fde9cd2 vert u_bones 64 mat4 48 64 +U 1fde9cd2 vert u_skinned 3136 float 1 0 +U 1fde9cd2 vert u_view 3152 mat4 1 0 +U 1fde9cd2 vert u_proj 3216 mat4 1 0 +U 1fde9cd2 vert u_light_vp 3280 mat4 1 0 +I 1fde9cd2 a_weights 6 vec4 +I 1fde9cd2 a_joints 5 vec4 +I 1fde9cd2 a_pos 0 vec3 +I 1fde9cd2 a_nrm 1 vec3 +I 1fde9cd2 a_uv 2 vec2 +B 1fde9cd2 frag 1 852 +U 1fde9cd2 frag u_cascade_vp 0 mat4 5 64 +U 1fde9cd2 frag u_cascade_split 320 float 5 16 +U 1fde9cd2 frag u_cascade_range 400 float 5 16 +U 1fde9cd2 frag u_cascade_texel 480 float 5 16 +U 1fde9cd2 frag u_sun_dir 560 vec3 1 0 +U 1fde9cd2 frag u_sun_color 576 vec3 1 0 +U 1fde9cd2 frag u_cam_pos 592 vec3 1 0 +U 1fde9cd2 frag u_prefilter_levels 604 float 1 0 +U 1fde9cd2 frag u_fog_density 608 float 1 0 +U 1fde9cd2 frag u_fog_height_falloff 612 float 1 0 +U 1fde9cd2 frag u_fog_base 616 float 1 0 +U 1fde9cd2 frag u_clip_y 620 float 1 0 +U 1fde9cd2 frag u_spec_scale 624 float 1 0 +U 1fde9cd2 frag u_sky_rot 632 vec2 1 0 +U 1fde9cd2 frag u_ibl_scale 640 vec3 1 0 +U 1fde9cd2 frag u_daylight 652 float 1 0 +U 1fde9cd2 frag u_fire_pos 656 vec3 1 0 +U 1fde9cd2 frag u_fire_color 672 vec3 1 0 +U 1fde9cd2 frag u_hand_pos 688 vec3 1 0 +U 1fde9cd2 frag u_hand_color 704 vec3 1 0 +U 1fde9cd2 frag u_hand_dir 720 vec3 1 0 +U 1fde9cd2 frag u_hand_cone 732 float 1 0 +U 1fde9cd2 frag u_ts_origin 736 vec2 1 0 +U 1fde9cd2 frag u_ts_half 744 float 1 0 +U 1fde9cd2 frag u_ts_on 748 float 1 0 +U 1fde9cd2 frag u_force_cascade 752 int 1 0 +U 1fde9cd2 frag u_cloud_shadow 756 float 1 0 +U 1fde9cd2 frag u_time 760 float 1 0 +U 1fde9cd2 frag u_model_h 764 float 1 0 +U 1fde9cd2 frag u_view 768 mat4 1 0 +U 1fde9cd2 frag u_tint 832 vec3 1 0 +U 1fde9cd2 frag u_rough_scale 844 float 1 0 +U 1fde9cd2 frag u_emissive 848 float 1 0 +T 1fde9cd2 u_arm 2 +T 1fde9cd2 u_brdf 3 +T 1fde9cd2 u_diff 4 +T 1fde9cd2 u_irradiance 5 +T 1fde9cd2 u_nrm 6 +T 1fde9cd2 u_prefilter 7 +T 1fde9cd2 u_shadow 8 +T 1fde9cd2 u_tershadow 9 +T 1fde9cd2 u_ts_height 10 +P a5ad521e skin.vert model.frag #define ALPHA_TEST; +B a5ad521e vert 0 3344 +U a5ad521e vert u_model 0 mat4 1 0 +U a5ad521e vert u_bones 64 mat4 48 64 +U a5ad521e vert u_skinned 3136 float 1 0 +U a5ad521e vert u_view 3152 mat4 1 0 +U a5ad521e vert u_proj 3216 mat4 1 0 +U a5ad521e vert u_light_vp 3280 mat4 1 0 +I a5ad521e a_weights 6 vec4 +I a5ad521e a_joints 5 vec4 +I a5ad521e a_pos 0 vec3 +I a5ad521e a_nrm 1 vec3 +I a5ad521e a_uv 2 vec2 +B a5ad521e frag 1 852 +U a5ad521e frag u_cascade_vp 0 mat4 5 64 +U a5ad521e frag u_cascade_split 320 float 5 16 +U a5ad521e frag u_cascade_range 400 float 5 16 +U a5ad521e frag u_cascade_texel 480 float 5 16 +U a5ad521e frag u_sun_dir 560 vec3 1 0 +U a5ad521e frag u_sun_color 576 vec3 1 0 +U a5ad521e frag u_cam_pos 592 vec3 1 0 +U a5ad521e frag u_prefilter_levels 604 float 1 0 +U a5ad521e frag u_fog_density 608 float 1 0 +U a5ad521e frag u_fog_height_falloff 612 float 1 0 +U a5ad521e frag u_fog_base 616 float 1 0 +U a5ad521e frag u_clip_y 620 float 1 0 +U a5ad521e frag u_spec_scale 624 float 1 0 +U a5ad521e frag u_sky_rot 632 vec2 1 0 +U a5ad521e frag u_ibl_scale 640 vec3 1 0 +U a5ad521e frag u_daylight 652 float 1 0 +U a5ad521e frag u_fire_pos 656 vec3 1 0 +U a5ad521e frag u_fire_color 672 vec3 1 0 +U a5ad521e frag u_hand_pos 688 vec3 1 0 +U a5ad521e frag u_hand_color 704 vec3 1 0 +U a5ad521e frag u_hand_dir 720 vec3 1 0 +U a5ad521e frag u_hand_cone 732 float 1 0 +U a5ad521e frag u_ts_origin 736 vec2 1 0 +U a5ad521e frag u_ts_half 744 float 1 0 +U a5ad521e frag u_ts_on 748 float 1 0 +U a5ad521e frag u_force_cascade 752 int 1 0 +U a5ad521e frag u_cloud_shadow 756 float 1 0 +U a5ad521e frag u_time 760 float 1 0 +U a5ad521e frag u_model_h 764 float 1 0 +U a5ad521e frag u_view 768 mat4 1 0 +U a5ad521e frag u_tint 832 vec3 1 0 +U a5ad521e frag u_rough_scale 844 float 1 0 +U a5ad521e frag u_emissive 848 float 1 0 +T a5ad521e u_arm 2 +T a5ad521e u_brdf 3 +T a5ad521e u_diff 4 +T a5ad521e u_irradiance 5 +T a5ad521e u_nrm 6 +T a5ad521e u_prefilter 7 +T a5ad521e u_shadow 8 +T a5ad521e u_tershadow 9 +T a5ad521e u_ts_height 10 +P 9068df1c skin.vert outline.frag #define OUTLINE; +B 9068df1c vert 0 3348 +U 9068df1c vert u_model 0 mat4 1 0 +U 9068df1c vert u_bones 64 mat4 48 64 +U 9068df1c vert u_skinned 3136 float 1 0 +U 9068df1c vert u_view 3152 mat4 1 0 +U 9068df1c vert u_proj 3216 mat4 1 0 +U 9068df1c vert u_light_vp 3280 mat4 1 0 +U 9068df1c vert u_outline 3344 float 1 0 +I 9068df1c a_weights 6 vec4 +I 9068df1c a_joints 5 vec4 +I 9068df1c a_pos 0 vec3 +I 9068df1c a_nrm 1 vec3 +I 9068df1c a_uv 2 vec2 +B 9068df1c frag 1 780 +U 9068df1c frag u_cascade_vp 0 mat4 5 64 +U 9068df1c frag u_cascade_split 320 float 5 16 +U 9068df1c frag u_cascade_range 400 float 5 16 +U 9068df1c frag u_cascade_texel 480 float 5 16 +U 9068df1c frag u_sun_dir 560 vec3 1 0 +U 9068df1c frag u_sun_color 576 vec3 1 0 +U 9068df1c frag u_cam_pos 592 vec3 1 0 +U 9068df1c frag u_prefilter_levels 604 float 1 0 +U 9068df1c frag u_fog_density 608 float 1 0 +U 9068df1c frag u_fog_height_falloff 612 float 1 0 +U 9068df1c frag u_fog_base 616 float 1 0 +U 9068df1c frag u_clip_y 620 float 1 0 +U 9068df1c frag u_spec_scale 624 float 1 0 +U 9068df1c frag u_sky_rot 632 vec2 1 0 +U 9068df1c frag u_ibl_scale 640 vec3 1 0 +U 9068df1c frag u_daylight 652 float 1 0 +U 9068df1c frag u_fire_pos 656 vec3 1 0 +U 9068df1c frag u_fire_color 672 vec3 1 0 +U 9068df1c frag u_hand_pos 688 vec3 1 0 +U 9068df1c frag u_hand_color 704 vec3 1 0 +U 9068df1c frag u_hand_dir 720 vec3 1 0 +U 9068df1c frag u_hand_cone 732 float 1 0 +U 9068df1c frag u_ts_origin 736 vec2 1 0 +U 9068df1c frag u_ts_half 744 float 1 0 +U 9068df1c frag u_ts_on 748 float 1 0 +U 9068df1c frag u_force_cascade 752 int 1 0 +U 9068df1c frag u_cloud_shadow 756 float 1 0 +U 9068df1c frag u_time 760 float 1 0 +U 9068df1c frag u_outline_col 768 vec3 1 0 +T 9068df1c u_brdf 2 +T 9068df1c u_diff 3 +T 9068df1c u_irradiance 4 +T 9068df1c u_prefilter 5 +T 9068df1c u_shadow 6 +T 9068df1c u_tershadow 7 +T 9068df1c u_ts_height 8 +P e9b6300c skin.vert outline.frag #define OUTLINE;#define ALPHA_TEST; +B e9b6300c vert 0 3348 +U e9b6300c vert u_model 0 mat4 1 0 +U e9b6300c vert u_bones 64 mat4 48 64 +U e9b6300c vert u_skinned 3136 float 1 0 +U e9b6300c vert u_view 3152 mat4 1 0 +U e9b6300c vert u_proj 3216 mat4 1 0 +U e9b6300c vert u_light_vp 3280 mat4 1 0 +U e9b6300c vert u_outline 3344 float 1 0 +I e9b6300c a_weights 6 vec4 +I e9b6300c a_joints 5 vec4 +I e9b6300c a_pos 0 vec3 +I e9b6300c a_nrm 1 vec3 +I e9b6300c a_uv 2 vec2 +B e9b6300c frag 1 780 +U e9b6300c frag u_cascade_vp 0 mat4 5 64 +U e9b6300c frag u_cascade_split 320 float 5 16 +U e9b6300c frag u_cascade_range 400 float 5 16 +U e9b6300c frag u_cascade_texel 480 float 5 16 +U e9b6300c frag u_sun_dir 560 vec3 1 0 +U e9b6300c frag u_sun_color 576 vec3 1 0 +U e9b6300c frag u_cam_pos 592 vec3 1 0 +U e9b6300c frag u_prefilter_levels 604 float 1 0 +U e9b6300c frag u_fog_density 608 float 1 0 +U e9b6300c frag u_fog_height_falloff 612 float 1 0 +U e9b6300c frag u_fog_base 616 float 1 0 +U e9b6300c frag u_clip_y 620 float 1 0 +U e9b6300c frag u_spec_scale 624 float 1 0 +U e9b6300c frag u_sky_rot 632 vec2 1 0 +U e9b6300c frag u_ibl_scale 640 vec3 1 0 +U e9b6300c frag u_daylight 652 float 1 0 +U e9b6300c frag u_fire_pos 656 vec3 1 0 +U e9b6300c frag u_fire_color 672 vec3 1 0 +U e9b6300c frag u_hand_pos 688 vec3 1 0 +U e9b6300c frag u_hand_color 704 vec3 1 0 +U e9b6300c frag u_hand_dir 720 vec3 1 0 +U e9b6300c frag u_hand_cone 732 float 1 0 +U e9b6300c frag u_ts_origin 736 vec2 1 0 +U e9b6300c frag u_ts_half 744 float 1 0 +U e9b6300c frag u_ts_on 748 float 1 0 +U e9b6300c frag u_force_cascade 752 int 1 0 +U e9b6300c frag u_cloud_shadow 756 float 1 0 +U e9b6300c frag u_time 760 float 1 0 +U e9b6300c frag u_outline_col 768 vec3 1 0 +T e9b6300c u_brdf 2 +T e9b6300c u_diff 3 +T e9b6300c u_irradiance 4 +T e9b6300c u_prefilter 5 +T e9b6300c u_shadow 6 +T e9b6300c u_tershadow 7 +T e9b6300c u_ts_height 8 +P b79a1f4e skin.vert shadow.frag #define SHADOW_PASS; +B b79a1f4e vert 0 3344 +U b79a1f4e vert u_model 0 mat4 1 0 +U b79a1f4e vert u_bones 64 mat4 48 64 +U b79a1f4e vert u_skinned 3136 float 1 0 +U b79a1f4e vert u_view 3152 mat4 1 0 +U b79a1f4e vert u_proj 3216 mat4 1 0 +U b79a1f4e vert u_light_vp 3280 mat4 1 0 +I b79a1f4e a_weights 6 vec4 +I b79a1f4e a_joints 5 vec4 +I b79a1f4e a_pos 0 vec3 +I b79a1f4e a_nrm 1 vec3 +I b79a1f4e a_uv 2 vec2 +B b79a1f4e frag 0 764 +U b79a1f4e frag u_cascade_vp 0 mat4 5 64 +U b79a1f4e frag u_cascade_split 320 float 5 16 +U b79a1f4e frag u_cascade_range 400 float 5 16 +U b79a1f4e frag u_cascade_texel 480 float 5 16 +U b79a1f4e frag u_sun_dir 560 vec3 1 0 +U b79a1f4e frag u_sun_color 576 vec3 1 0 +U b79a1f4e frag u_cam_pos 592 vec3 1 0 +U b79a1f4e frag u_prefilter_levels 604 float 1 0 +U b79a1f4e frag u_fog_density 608 float 1 0 +U b79a1f4e frag u_fog_height_falloff 612 float 1 0 +U b79a1f4e frag u_fog_base 616 float 1 0 +U b79a1f4e frag u_clip_y 620 float 1 0 +U b79a1f4e frag u_spec_scale 624 float 1 0 +U b79a1f4e frag u_sky_rot 632 vec2 1 0 +U b79a1f4e frag u_ibl_scale 640 vec3 1 0 +U b79a1f4e frag u_daylight 652 float 1 0 +U b79a1f4e frag u_fire_pos 656 vec3 1 0 +U b79a1f4e frag u_fire_color 672 vec3 1 0 +U b79a1f4e frag u_hand_pos 688 vec3 1 0 +U b79a1f4e frag u_hand_color 704 vec3 1 0 +U b79a1f4e frag u_hand_dir 720 vec3 1 0 +U b79a1f4e frag u_hand_cone 732 float 1 0 +U b79a1f4e frag u_ts_origin 736 vec2 1 0 +U b79a1f4e frag u_ts_half 744 float 1 0 +U b79a1f4e frag u_ts_on 748 float 1 0 +U b79a1f4e frag u_force_cascade 752 int 1 0 +U b79a1f4e frag u_cloud_shadow 756 float 1 0 +U b79a1f4e frag u_time 760 float 1 0 +T b79a1f4e u_brdf 2 +T b79a1f4e u_diff 3 +T b79a1f4e u_irradiance 4 +T b79a1f4e u_prefilter 5 +T b79a1f4e u_shadow 6 +T b79a1f4e u_tershadow 7 +T b79a1f4e u_ts_height 8 +P a64015f2 skin.vert shadow.frag #define SHADOW_PASS;#define ALPHA_TEST; +B a64015f2 vert 0 3344 +U a64015f2 vert u_model 0 mat4 1 0 +U a64015f2 vert u_bones 64 mat4 48 64 +U a64015f2 vert u_skinned 3136 float 1 0 +U a64015f2 vert u_view 3152 mat4 1 0 +U a64015f2 vert u_proj 3216 mat4 1 0 +U a64015f2 vert u_light_vp 3280 mat4 1 0 +I a64015f2 a_weights 6 vec4 +I a64015f2 a_joints 5 vec4 +I a64015f2 a_pos 0 vec3 +I a64015f2 a_nrm 1 vec3 +I a64015f2 a_uv 2 vec2 +B a64015f2 frag 0 764 +U a64015f2 frag u_cascade_vp 0 mat4 5 64 +U a64015f2 frag u_cascade_split 320 float 5 16 +U a64015f2 frag u_cascade_range 400 float 5 16 +U a64015f2 frag u_cascade_texel 480 float 5 16 +U a64015f2 frag u_sun_dir 560 vec3 1 0 +U a64015f2 frag u_sun_color 576 vec3 1 0 +U a64015f2 frag u_cam_pos 592 vec3 1 0 +U a64015f2 frag u_prefilter_levels 604 float 1 0 +U a64015f2 frag u_fog_density 608 float 1 0 +U a64015f2 frag u_fog_height_falloff 612 float 1 0 +U a64015f2 frag u_fog_base 616 float 1 0 +U a64015f2 frag u_clip_y 620 float 1 0 +U a64015f2 frag u_spec_scale 624 float 1 0 +U a64015f2 frag u_sky_rot 632 vec2 1 0 +U a64015f2 frag u_ibl_scale 640 vec3 1 0 +U a64015f2 frag u_daylight 652 float 1 0 +U a64015f2 frag u_fire_pos 656 vec3 1 0 +U a64015f2 frag u_fire_color 672 vec3 1 0 +U a64015f2 frag u_hand_pos 688 vec3 1 0 +U a64015f2 frag u_hand_color 704 vec3 1 0 +U a64015f2 frag u_hand_dir 720 vec3 1 0 +U a64015f2 frag u_hand_cone 732 float 1 0 +U a64015f2 frag u_ts_origin 736 vec2 1 0 +U a64015f2 frag u_ts_half 744 float 1 0 +U a64015f2 frag u_ts_on 748 float 1 0 +U a64015f2 frag u_force_cascade 752 int 1 0 +U a64015f2 frag u_cloud_shadow 756 float 1 0 +U a64015f2 frag u_time 760 float 1 0 +T a64015f2 u_brdf 2 +T a64015f2 u_diff 3 +T a64015f2 u_irradiance 4 +T a64015f2 u_prefilter 5 +T a64015f2 u_shadow 6 +T a64015f2 u_tershadow 7 +T a64015f2 u_ts_height 8 +P 2e2908c8 terrain.vert terrain.frag +B 2e2908c8 vert 0 204 +U 2e2908c8 vert u_half 0 float 1 0 +U 2e2908c8 vert u_view 16 mat4 1 0 +U 2e2908c8 vert u_proj 80 mat4 1 0 +U 2e2908c8 vert u_origin 144 vec2 1 0 +U 2e2908c8 vert u_cam_pos 160 vec3 1 0 +U 2e2908c8 vert u_node 176 vec3 1 0 +U 2e2908c8 vert u_morph 192 vec2 1 0 +U 2e2908c8 vert u_grid 200 float 1 0 +I 2e2908c8 a_xz 0 vec2 +B 2e2908c8 frag 1 872 +U 2e2908c8 frag u_cascade_vp 0 mat4 5 64 +U 2e2908c8 frag u_cascade_split 320 float 5 16 +U 2e2908c8 frag u_cascade_range 400 float 5 16 +U 2e2908c8 frag u_cascade_texel 480 float 5 16 +U 2e2908c8 frag u_sun_dir 560 vec3 1 0 +U 2e2908c8 frag u_sun_color 576 vec3 1 0 +U 2e2908c8 frag u_cam_pos 592 vec3 1 0 +U 2e2908c8 frag u_prefilter_levels 604 float 1 0 +U 2e2908c8 frag u_fog_density 608 float 1 0 +U 2e2908c8 frag u_fog_height_falloff 612 float 1 0 +U 2e2908c8 frag u_fog_base 616 float 1 0 +U 2e2908c8 frag u_clip_y 620 float 1 0 +U 2e2908c8 frag u_spec_scale 624 float 1 0 +U 2e2908c8 frag u_sky_rot 632 vec2 1 0 +U 2e2908c8 frag u_ibl_scale 640 vec3 1 0 +U 2e2908c8 frag u_daylight 652 float 1 0 +U 2e2908c8 frag u_fire_pos 656 vec3 1 0 +U 2e2908c8 frag u_fire_color 672 vec3 1 0 +U 2e2908c8 frag u_hand_pos 688 vec3 1 0 +U 2e2908c8 frag u_hand_color 704 vec3 1 0 +U 2e2908c8 frag u_hand_dir 720 vec3 1 0 +U 2e2908c8 frag u_hand_cone 732 float 1 0 +U 2e2908c8 frag u_ts_origin 736 vec2 1 0 +U 2e2908c8 frag u_ts_half 744 float 1 0 +U 2e2908c8 frag u_ts_on 748 float 1 0 +U 2e2908c8 frag u_force_cascade 752 int 1 0 +U 2e2908c8 frag u_cloud_shadow 756 float 1 0 +U 2e2908c8 frag u_time 760 float 1 0 +U 2e2908c8 frag u_half 764 float 1 0 +U 2e2908c8 frag u_texel 768 float 1 0 +U 2e2908c8 frag u_ortho_on 772 float 1 0 +U 2e2908c8 frag u_carpet_on 776 float 1 0 +U 2e2908c8 frag u_snow_line 780 float 1 0 +U 2e2908c8 frag u_lake_level 784 float 1 0 +U 2e2908c8 frag u_sea_level 788 float 1 0 +U 2e2908c8 frag u_origin 792 vec2 1 0 +U 2e2908c8 frag u_view 800 mat4 1 0 +U 2e2908c8 frag u_far_split 864 float 1 0 +U 2e2908c8 frag u_far_band 868 float 1 0 +T 2e2908c8 u_brdf 2 +T 2e2908c8 u_carpet 3 +T 2e2908c8 u_grass_a 4 +T 2e2908c8 u_grass_d 5 +T 2e2908c8 u_grass_n 6 +T 2e2908c8 u_height 7 +T 2e2908c8 u_irradiance 8 +T 2e2908c8 u_ortho 9 +T 2e2908c8 u_prefilter 10 +T 2e2908c8 u_rock_a 11 +T 2e2908c8 u_rock_d 12 +T 2e2908c8 u_rock_n 13 +T 2e2908c8 u_shadow 14 +T 2e2908c8 u_snow_d 15 +T 2e2908c8 u_sunshadow 16 +T 2e2908c8 u_tershadow 17 +T 2e2908c8 u_ts_height 18 +P 1f95f31b terrain.vert terrain.frag #define FAR_ONLY; +B 1f95f31b vert 0 204 +U 1f95f31b vert u_half 0 float 1 0 +U 1f95f31b vert u_view 16 mat4 1 0 +U 1f95f31b vert u_proj 80 mat4 1 0 +U 1f95f31b vert u_origin 144 vec2 1 0 +U 1f95f31b vert u_cam_pos 160 vec3 1 0 +U 1f95f31b vert u_node 176 vec3 1 0 +U 1f95f31b vert u_morph 192 vec2 1 0 +U 1f95f31b vert u_grid 200 float 1 0 +I 1f95f31b a_xz 0 vec2 +B 1f95f31b frag 1 872 +U 1f95f31b frag u_cascade_vp 0 mat4 5 64 +U 1f95f31b frag u_cascade_split 320 float 5 16 +U 1f95f31b frag u_cascade_range 400 float 5 16 +U 1f95f31b frag u_cascade_texel 480 float 5 16 +U 1f95f31b frag u_sun_dir 560 vec3 1 0 +U 1f95f31b frag u_sun_color 576 vec3 1 0 +U 1f95f31b frag u_cam_pos 592 vec3 1 0 +U 1f95f31b frag u_prefilter_levels 604 float 1 0 +U 1f95f31b frag u_fog_density 608 float 1 0 +U 1f95f31b frag u_fog_height_falloff 612 float 1 0 +U 1f95f31b frag u_fog_base 616 float 1 0 +U 1f95f31b frag u_clip_y 620 float 1 0 +U 1f95f31b frag u_spec_scale 624 float 1 0 +U 1f95f31b frag u_sky_rot 632 vec2 1 0 +U 1f95f31b frag u_ibl_scale 640 vec3 1 0 +U 1f95f31b frag u_daylight 652 float 1 0 +U 1f95f31b frag u_fire_pos 656 vec3 1 0 +U 1f95f31b frag u_fire_color 672 vec3 1 0 +U 1f95f31b frag u_hand_pos 688 vec3 1 0 +U 1f95f31b frag u_hand_color 704 vec3 1 0 +U 1f95f31b frag u_hand_dir 720 vec3 1 0 +U 1f95f31b frag u_hand_cone 732 float 1 0 +U 1f95f31b frag u_ts_origin 736 vec2 1 0 +U 1f95f31b frag u_ts_half 744 float 1 0 +U 1f95f31b frag u_ts_on 748 float 1 0 +U 1f95f31b frag u_force_cascade 752 int 1 0 +U 1f95f31b frag u_cloud_shadow 756 float 1 0 +U 1f95f31b frag u_time 760 float 1 0 +U 1f95f31b frag u_half 764 float 1 0 +U 1f95f31b frag u_texel 768 float 1 0 +U 1f95f31b frag u_ortho_on 772 float 1 0 +U 1f95f31b frag u_carpet_on 776 float 1 0 +U 1f95f31b frag u_snow_line 780 float 1 0 +U 1f95f31b frag u_lake_level 784 float 1 0 +U 1f95f31b frag u_sea_level 788 float 1 0 +U 1f95f31b frag u_origin 792 vec2 1 0 +U 1f95f31b frag u_view 800 mat4 1 0 +U 1f95f31b frag u_far_split 864 float 1 0 +U 1f95f31b frag u_far_band 868 float 1 0 +T 1f95f31b u_brdf 2 +T 1f95f31b u_carpet 3 +T 1f95f31b u_grass_a 4 +T 1f95f31b u_grass_d 5 +T 1f95f31b u_grass_n 6 +T 1f95f31b u_height 7 +T 1f95f31b u_irradiance 8 +T 1f95f31b u_ortho 9 +T 1f95f31b u_prefilter 10 +T 1f95f31b u_rock_a 11 +T 1f95f31b u_rock_d 12 +T 1f95f31b u_rock_n 13 +T 1f95f31b u_shadow 14 +T 1f95f31b u_snow_d 15 +T 1f95f31b u_sunshadow 16 +T 1f95f31b u_tershadow 17 +T 1f95f31b u_ts_height 18 +P f4382918 terrain.vert terrain.frag #define NEAR_ONLY; +B f4382918 vert 0 204 +U f4382918 vert u_half 0 float 1 0 +U f4382918 vert u_view 16 mat4 1 0 +U f4382918 vert u_proj 80 mat4 1 0 +U f4382918 vert u_origin 144 vec2 1 0 +U f4382918 vert u_cam_pos 160 vec3 1 0 +U f4382918 vert u_node 176 vec3 1 0 +U f4382918 vert u_morph 192 vec2 1 0 +U f4382918 vert u_grid 200 float 1 0 +I f4382918 a_xz 0 vec2 +B f4382918 frag 1 872 +U f4382918 frag u_cascade_vp 0 mat4 5 64 +U f4382918 frag u_cascade_split 320 float 5 16 +U f4382918 frag u_cascade_range 400 float 5 16 +U f4382918 frag u_cascade_texel 480 float 5 16 +U f4382918 frag u_sun_dir 560 vec3 1 0 +U f4382918 frag u_sun_color 576 vec3 1 0 +U f4382918 frag u_cam_pos 592 vec3 1 0 +U f4382918 frag u_prefilter_levels 604 float 1 0 +U f4382918 frag u_fog_density 608 float 1 0 +U f4382918 frag u_fog_height_falloff 612 float 1 0 +U f4382918 frag u_fog_base 616 float 1 0 +U f4382918 frag u_clip_y 620 float 1 0 +U f4382918 frag u_spec_scale 624 float 1 0 +U f4382918 frag u_sky_rot 632 vec2 1 0 +U f4382918 frag u_ibl_scale 640 vec3 1 0 +U f4382918 frag u_daylight 652 float 1 0 +U f4382918 frag u_fire_pos 656 vec3 1 0 +U f4382918 frag u_fire_color 672 vec3 1 0 +U f4382918 frag u_hand_pos 688 vec3 1 0 +U f4382918 frag u_hand_color 704 vec3 1 0 +U f4382918 frag u_hand_dir 720 vec3 1 0 +U f4382918 frag u_hand_cone 732 float 1 0 +U f4382918 frag u_ts_origin 736 vec2 1 0 +U f4382918 frag u_ts_half 744 float 1 0 +U f4382918 frag u_ts_on 748 float 1 0 +U f4382918 frag u_force_cascade 752 int 1 0 +U f4382918 frag u_cloud_shadow 756 float 1 0 +U f4382918 frag u_time 760 float 1 0 +U f4382918 frag u_half 764 float 1 0 +U f4382918 frag u_texel 768 float 1 0 +U f4382918 frag u_ortho_on 772 float 1 0 +U f4382918 frag u_carpet_on 776 float 1 0 +U f4382918 frag u_snow_line 780 float 1 0 +U f4382918 frag u_lake_level 784 float 1 0 +U f4382918 frag u_sea_level 788 float 1 0 +U f4382918 frag u_origin 792 vec2 1 0 +U f4382918 frag u_view 800 mat4 1 0 +U f4382918 frag u_far_split 864 float 1 0 +U f4382918 frag u_far_band 868 float 1 0 +T f4382918 u_brdf 2 +T f4382918 u_carpet 3 +T f4382918 u_grass_a 4 +T f4382918 u_grass_d 5 +T f4382918 u_grass_n 6 +T f4382918 u_height 7 +T f4382918 u_irradiance 8 +T f4382918 u_ortho 9 +T f4382918 u_prefilter 10 +T f4382918 u_rock_a 11 +T f4382918 u_rock_d 12 +T f4382918 u_rock_n 13 +T f4382918 u_shadow 14 +T f4382918 u_snow_d 15 +T f4382918 u_sunshadow 16 +T f4382918 u_tershadow 17 +T f4382918 u_ts_height 18 +P bf3151c8 terrain.vert tersun.frag +B bf3151c8 vert 0 204 +U bf3151c8 vert u_half 0 float 1 0 +U bf3151c8 vert u_view 16 mat4 1 0 +U bf3151c8 vert u_proj 80 mat4 1 0 +U bf3151c8 vert u_origin 144 vec2 1 0 +U bf3151c8 vert u_cam_pos 160 vec3 1 0 +U bf3151c8 vert u_node 176 vec3 1 0 +U bf3151c8 vert u_morph 192 vec2 1 0 +U bf3151c8 vert u_grid 200 float 1 0 +I bf3151c8 a_xz 0 vec2 +B bf3151c8 frag 1 840 +U bf3151c8 frag u_cascade_vp 0 mat4 5 64 +U bf3151c8 frag u_cascade_split 320 float 5 16 +U bf3151c8 frag u_cascade_range 400 float 5 16 +U bf3151c8 frag u_cascade_texel 480 float 5 16 +U bf3151c8 frag u_sun_dir 560 vec3 1 0 +U bf3151c8 frag u_sun_color 576 vec3 1 0 +U bf3151c8 frag u_cam_pos 592 vec3 1 0 +U bf3151c8 frag u_prefilter_levels 604 float 1 0 +U bf3151c8 frag u_fog_density 608 float 1 0 +U bf3151c8 frag u_fog_height_falloff 612 float 1 0 +U bf3151c8 frag u_fog_base 616 float 1 0 +U bf3151c8 frag u_clip_y 620 float 1 0 +U bf3151c8 frag u_spec_scale 624 float 1 0 +U bf3151c8 frag u_sky_rot 632 vec2 1 0 +U bf3151c8 frag u_ibl_scale 640 vec3 1 0 +U bf3151c8 frag u_daylight 652 float 1 0 +U bf3151c8 frag u_fire_pos 656 vec3 1 0 +U bf3151c8 frag u_fire_color 672 vec3 1 0 +U bf3151c8 frag u_hand_pos 688 vec3 1 0 +U bf3151c8 frag u_hand_color 704 vec3 1 0 +U bf3151c8 frag u_hand_dir 720 vec3 1 0 +U bf3151c8 frag u_hand_cone 732 float 1 0 +U bf3151c8 frag u_ts_origin 736 vec2 1 0 +U bf3151c8 frag u_ts_half 744 float 1 0 +U bf3151c8 frag u_ts_on 748 float 1 0 +U bf3151c8 frag u_force_cascade 752 int 1 0 +U bf3151c8 frag u_cloud_shadow 756 float 1 0 +U bf3151c8 frag u_time 760 float 1 0 +U bf3151c8 frag u_view 768 mat4 1 0 +U bf3151c8 frag u_far_split 832 float 1 0 +U bf3151c8 frag u_far_band 836 float 1 0 +T bf3151c8 u_brdf 2 +T bf3151c8 u_height 3 +T bf3151c8 u_irradiance 4 +T bf3151c8 u_prefilter 5 +T bf3151c8 u_shadow 6 +T bf3151c8 u_tershadow 7 +T bf3151c8 u_ts_height 8 +P 46e2325c water.vert water.frag +B 46e2325c vert 0 152 +U 46e2325c vert u_view 0 mat4 1 0 +U 46e2325c vert u_proj 64 mat4 1 0 +U 46e2325c vert u_level 128 float 1 0 +U 46e2325c vert u_center 136 vec2 1 0 +U 46e2325c vert u_extent 144 vec2 1 0 +I 46e2325c a_xz 0 vec2 +B 46e2325c frag 1 932 +U 46e2325c frag u_cascade_vp 0 mat4 5 64 +U 46e2325c frag u_cascade_split 320 float 5 16 +U 46e2325c frag u_cascade_range 400 float 5 16 +U 46e2325c frag u_cascade_texel 480 float 5 16 +U 46e2325c frag u_sun_dir 560 vec3 1 0 +U 46e2325c frag u_sun_color 576 vec3 1 0 +U 46e2325c frag u_cam_pos 592 vec3 1 0 +U 46e2325c frag u_prefilter_levels 604 float 1 0 +U 46e2325c frag u_fog_density 608 float 1 0 +U 46e2325c frag u_fog_height_falloff 612 float 1 0 +U 46e2325c frag u_fog_base 616 float 1 0 +U 46e2325c frag u_clip_y 620 float 1 0 +U 46e2325c frag u_spec_scale 624 float 1 0 +U 46e2325c frag u_sky_rot 632 vec2 1 0 +U 46e2325c frag u_ibl_scale 640 vec3 1 0 +U 46e2325c frag u_daylight 652 float 1 0 +U 46e2325c frag u_fire_pos 656 vec3 1 0 +U 46e2325c frag u_fire_color 672 vec3 1 0 +U 46e2325c frag u_hand_pos 688 vec3 1 0 +U 46e2325c frag u_hand_color 704 vec3 1 0 +U 46e2325c frag u_hand_dir 720 vec3 1 0 +U 46e2325c frag u_hand_cone 732 float 1 0 +U 46e2325c frag u_ts_origin 736 vec2 1 0 +U 46e2325c frag u_ts_half 744 float 1 0 +U 46e2325c frag u_ts_on 748 float 1 0 +U 46e2325c frag u_force_cascade 752 int 1 0 +U 46e2325c frag u_cloud_shadow 756 float 1 0 +U 46e2325c frag u_time 760 float 1 0 +U 46e2325c frag u_view 768 mat4 1 0 +U 46e2325c frag u_inv_vp 832 mat4 1 0 +U 46e2325c frag u_screen 896 vec2 1 0 +U 46e2325c frag u_refl_on 904 float 1 0 +U 46e2325c frag u_center 912 vec2 1 0 +U 46e2325c frag u_extent 920 vec2 1 0 +U 46e2325c frag u_clip_ellipse 928 float 1 0 +T 46e2325c u_brdf 2 +T 46e2325c u_depth 3 +T 46e2325c u_irradiance 4 +T 46e2325c u_prefilter 5 +T 46e2325c u_refl 6 +T 46e2325c u_scene 7 +T 46e2325c u_shadow 8 +T 46e2325c u_tershadow 9 +T 46e2325c u_ts_height 10 diff --git a/packages/ludic.render3d/shaders/variants.list b/packages/ludic.render3d/shaders/variants.list new file mode 100644 index 00000000..c135d04d --- /dev/null +++ b/packages/ludic.render3d/shaders/variants.list @@ -0,0 +1,49 @@ +# variants.list - every program render3d builds: vertex|fragment|defines (one line; newlines +# in the defines are written as ";"). A backend that cannot compile shaders at run time +# (Vulkan: SPIR-V is built ahead) must cover all of them. Regenerate by running the game and +# its self-tests with R3D_PROGRAMS_LOG= and sorting the result. +fullscreen.vert|adapt.frag| +fullscreen.vert|bloom_down.frag| +fullscreen.vert|bloom_up.frag| +fullscreen.vert|heightgen.frag|#define DEM; +fullscreen.vert|ibl_brdf.frag| +fullscreen.vert|ibl_irradiance.frag| +fullscreen.vert|ibl_prefilter.frag| +fullscreen.vert|sharpen.frag| +fullscreen.vert|sky.frag| +fullscreen.vert|ssao_blur.frag| +fullscreen.vert|ssgi.frag| +fullscreen.vert|ternormal.frag| +fullscreen.vert|tershadow.frag|#define NOISE_ONLY; +fullscreen.vert|tonemap.frag| +grass.vert|model.frag|#define FOLIAGE;#define BLADE; +impostor.vert|impostor.frag| +impostor.vert|impostor.frag|#define SHADOW_PASS; +model.vert|bake.frag| +model.vert|bake.frag|#define CARD; +model.vert|bake.frag|#define FLOWER; +model.vert|depth.frag|#define FOLIAGE;#define WIND;#define ALPHA_TEST; +model.vert|model.frag| +model.vert|model.frag|#define CARD;#define CHEAP; +model.vert|model.frag|#define FOLIAGE;#define WIND;#define ALPHA_TEST; +model.vert|model.frag|#define FOLIAGE;#define WIND;#define BLADE; +model.vert|model.frag|#define FOLIAGE;#define WIND;#define CARD; +model.vert|model.frag|#define FOLIAGE;#define WIND;#define EQ_PASS; +model.vert|model.frag|#define FOLIAGE;#define WIND;#define FLOWER; +model.vert|model.frag|#define SHADOW_PASS;#define WIND;#define CARD; +model.vert|model.frag|#define WIND; +model.vert|shadow.frag|#define SHADOW_PASS; +model.vert|shadow.frag|#define SHADOW_PASS;#define WIND; +model.vert|shadow.frag|#define SHADOW_PASS;#define WIND;#define ALPHA_TEST; +overlay.vert|overlay.frag| +skin.vert|model.frag| +skin.vert|model.frag|#define ALPHA_TEST; +skin.vert|outline.frag|#define OUTLINE; +skin.vert|outline.frag|#define OUTLINE;#define ALPHA_TEST; +skin.vert|shadow.frag|#define SHADOW_PASS; +skin.vert|shadow.frag|#define SHADOW_PASS;#define ALPHA_TEST; +terrain.vert|terrain.frag| +terrain.vert|terrain.frag|#define FAR_ONLY; +terrain.vert|terrain.frag|#define NEAR_ONLY; +terrain.vert|tersun.frag| +water.vert|water.frag| diff --git a/tools/ludic-cli/dev.ludic b/tools/ludic-cli/dev.ludic index b35f5148..d137febd 100644 --- a/tools/ludic-cli/dev.ludic +++ b/tools/ludic-cli/dev.ludic @@ -34,6 +34,7 @@ program LudicDev { import "docgen_check.ludic" import "glgen.ludic" import "vkgen.ludic" + import "shaders.ludic" import "assets.ludic" import "release.ludic" import "pkg.ludic" @@ -71,6 +72,7 @@ program LudicDev { print(" docs-palette [--check] regenerate emit_color.ludic + palette.json from the palette table") print(" glgen [--check] regenerate gl_api.ludic + gl_thunks.ll from the platform gl3.h") print(" vkgen [--xml f] [--check] regenerate vk_api.ludic + vk_thunks.ll from the Vulkan registry") + print(" shaders [--check] build render3d's shader variants to SPIR-V + manifest (Vulkan SDK)") print("") print("release:") print(" release [major|minor|patch] [--dry-run] [--publish]") @@ -109,6 +111,7 @@ program LudicDev { if (cmd == "docs-palette") { return cmd_docs_palette() } if (cmd == "glgen") { return cmd_glgen() } if (cmd == "vkgen") { return cmd_vkgen() } + if (cmd == "shaders") { return cmd_shaders() } if (cmd == "fetch-assets") { return cmd_fetch_assets() } if (cmd == "docs-gen") { return cmd_docs_gen() } if (cmd == "docs-check") { return cmd_docs_check() } diff --git a/tools/ludic-cli/shaders.ludic b/tools/ludic-cli/shaders.ludic new file mode 100644 index 00000000..e33d7cab --- /dev/null +++ b/tools/ludic-cli/shaders.ludic @@ -0,0 +1,223 @@ +# shaders.ludic — render3d's shaders as Vulkan SPIR-V, built ahead of time. +# +# ludic-dev shaders [--check] +# read packages/ludic.render3d/shaders/variants.list and write, per variant, +# packages/ludic.render3d/shaders/spv/.vert.spv and .frag.spv +# and one packages/ludic.render3d/shaders/spv/manifest.txt the renderer reads: +# P a program (defines with ';' for newlines) +# B a stage's uniform block +# U +# T a sampler, the same binding in both stages +# I a vertex input +# +# OpenGL compiles GLSL when the game starts; Vulkan cannot, so every program the renderer +# builds (variants.list, from R3D_PROGRAMS_LOG) is compiled here. The GLSL is the renderer's +# own, assembled exactly as programs.ludic assembles it, through glslang's relaxed Vulkan mode: +# the loose uniforms of each stage land in one uniform block whose offsets come from the +# reflection, which is what gpu_uniform / u_* write through on Vulkan. +# +# Bindings are assigned here, not by glslang: its automatic numbering gave several samplers of +# one stage the same binding. The vertex stage's block is 0, the fragment stage's is 1, and the +# samplers of both stages are numbered from 2 in name order, so a sampler both stages use has +# one binding and one pipeline layout covers the program. +# +# Needs the Vulkan SDK (glslangValidator, spirv-cross, spirv-val): $VULKAN_SDK/bin, else the +# newest ~/VulkanSDK/*/macOS/bin, else C:/VulkanSDK/*/Bin. The outputs are tracked, so building a +# game never runs this. + +var shd_bin: pointer = null + +function shd_find_sdk() -> bool { + let sdk = getenv_or("VULKAN_SDK", "") + if sdk != "" and file_exists(`{sdk}/bin/glslangValidator`) { shd_bin = `{sdk}/bin`; return true } + if sdk != "" and file_exists(`{sdk}/Bin/glslangValidator.exe`) { shd_bin = `{sdk}/Bin`; return true } + let found = Text.trim(capture("ls -d $HOME/VulkanSDK/*/macOS/bin /c/VulkanSDK/*/Bin 2>/dev/null | tail -1")) + if found != "" { shd_bin = found; return true } + return false +} + +# FNV-1a over the variant line, as eight hex digits: the id is stable across runs and machines +function shd_id(line: pointer) -> pointer { + var h = 0x811C9DC5 + let n = slen(line) + var i = 0 + while i < n { h = (h ^ line[i]) * 16777619; i += 1 } + let hex = "0123456789abcdef" + let b = sb_new() + var k = 0 + while k < 8 { sb_putc(b, hex[(h >> (28 - k * 4)) & 15]); k += 1 } + return sb_str(b) +} + +function shd_is_ident(c: int) -> bool { return (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or (c >= '0' and c <= '9') or c == '_' } + +# the sampler declarations of a source: names (in order met) into shd_names, deduplicated +var shd_names: []pointer = null +function shd_note_name(n: pointer) -> void { + var i = 0 + while i < len(shd_names) { if shd_names[i] == n { return }; i += 1 } + push(shd_names, n) +} + +# Rewrite every `uniform <[iu]sampler...> [...];` anywhere in the text (several share a line +# in terrain.frag) as `layout(set = 0, binding = N) uniform ...`. With `collect`, only record names. +function shd_bind_samplers(src: pointer, collect: bool) -> pointer { + let b = sb_new() + let n = slen(src) + var i = 0 + while i < n { + let at = s_index(src, "uniform", i) + if at < 0 { sb_puts(b, str_sub(src, i, n)); break } + sb_puts(b, str_sub(src, i, at)) + # a whole word "uniform", then whitespace, then a sampler type + var ok = (at == 0 or not shd_is_ident(src[at - 1])) and at + 7 < n and str_space(src[at + 7]) + var p = at + 7 + while ok and p < n and str_space(src[p]) { p += 1 } + let ts = p + while ok and p < n and shd_is_ident(src[p]) { p += 1 } + let ty = str_sub(src, ts, p) + if ok { ok = s_starts(ty, "sampler") or s_starts(ty, "isampler") or s_starts(ty, "usampler") } + while ok and p < n and str_space(src[p]) { p += 1 } + let ns = p + while ok and p < n and shd_is_ident(src[p]) { p += 1 } + let name = str_sub(src, ns, p) + if ok { ok = slen(name) > 0 } + if not ok { sb_puts(b, "uniform"); i = at + 7; continue } + if collect { shd_note_name(name) } + var bind = 0 + var k = 0 + while k < len(shd_names) { if shd_names[k] == name { bind = k + 2 }; k += 1 } + sb_puts(b, `layout(set = 0, binding = {string(bind)}) uniform {ty} {name}`) + i = p + } + return sb_str(b) +} + +var shd_noise: pointer = null +var shd_lighting: pointer = null +function shd_file(name: pointer) -> pointer { + let s = read_file(`packages/ludic.render3d/shaders/{name}`) + if s == null { err(`shaders: missing packages/ludic.render3d/shaders/{name}\n`); return "" } + return s +} + +function shd_q(p: pointer) -> pointer { return `"{p}"` } + +function shd_reflect_stage(mf: pointer, id: pointer, stage: pointer, spv: pointer, tmp: pointer) -> bool { + let js = `{tmp}/{id}.{stage}.json` + if not shq(`{shd_q(shd_bin + "/spirv-cross")} {shd_q(spv)} --reflect > {shd_q(js)} 2>/dev/null`) { err(`shaders: spirv-cross failed on {spv}\n`); return false } + let d = json_parse(read_file(js)) + let ubos = j_get(d, "ubos") + if ubos.t == JV_ARR and len(ubos.kids) > 0 { + let u = ubos.kids[0] + sb_puts(mf, `B {id} {stage} {string(j_get(u, "binding").num)} {string(j_get(u, "block_size").num)}\n`) + let ty = j_get(j_get(d, "types"), j_get(u, "type").s) + let mem = j_get(ty, "members") + var i = 0 + while i < len(mem.kids) { + let m = mem.kids[i] + var count = 1 + let arr = j_get(m, "array") + if arr.t == JV_ARR and len(arr.kids) > 0 { count = arr.kids[0].num } + var stride = 0 + let st = j_get(m, "array_stride") + if st.t == JV_NUM { stride = st.num } + sb_puts(mf, `U {id} {stage} {j_get(m, "name").s} {string(j_get(m, "offset").num)} {j_get(m, "type").s} {string(count)} {string(stride)}\n`) + i += 1 + } + } + if stage == "vert" { + let ins = j_get(d, "inputs") + var i = 0 + while i < len(ins.kids) { + let v = ins.kids[i] + sb_puts(mf, `I {id} {j_get(v, "name").s} {string(j_get(v, "location").num)} {j_get(v, "type").s}\n`) + i += 1 + } + } + return true +} + +function cmd_shaders() -> int { + var check = false + var ai = 2 + while ai < arg_count() { if arg(ai) == "--check" { check = true }; ai += 1 } + if not shd_find_sdk() { err("shaders: no Vulkan SDK (glslangValidator); set VULKAN_SDK\n"); return 1 } + let list = read_file("packages/ludic.render3d/shaders/variants.list") + if list == null { err("shaders: no packages/ludic.render3d/shaders/variants.list\n"); return 1 } + shd_noise = shd_file("noise.glsl") + shd_lighting = shd_file("lighting.glsl") + var outdir = "packages/ludic.render3d/shaders/spv" + let tmp = tmp_path("shaders") + if check { outdir = tmp_path("shaders-check") } + shell(`rm -rf {shd_q(tmp)} && mkdir -p {shd_q(tmp)} {shd_q(outdir)}`) + if not check { shell(`rm -f {shd_q(outdir)}/*.spv`) } + let mf = sb_new() + sb_puts(mf, "# manifest.txt - GENERATED by `ludic-dev shaders` from variants.list. Do not edit.\n") + let lines = Text.split(list, "\n") + var made = 0 + var li = 0 + while li < len(lines) { + let line = Text.trim(lines[li]) + li += 1 + if slen(line) == 0 or line[0] == '#' { continue } + let parts = Text.split(line, "|") + if len(parts) < 2 { err(`shaders: bad variant line: {line}\n`); return 1 } + var defs = "" + if len(parts) > 2 { defs = parts[2] } + let id = shd_id(line) + let defines = Text.replace(defs, ";", "\n") + let vsrc = "#version 460\n" + defines + shd_file(parts[0]) + let fsrc = "#version 460\n" + defines + shd_noise + shd_lighting + shd_file(parts[1]) + # one binding table for both stages + shd_names = new []pointer + shd_bind_samplers(vsrc, true) + shd_bind_samplers(fsrc, true) + # name order, so the table does not depend on which stage met a sampler first + var x = 0 + while x < len(shd_names) { + var y = x + 1 + while y < len(shd_names) { + if str_cmp(shd_names[y], shd_names[x]) < 0 { let t = shd_names[x]; shd_names[x] = shd_names[y]; shd_names[y] = t } + y += 1 + } + x += 1 + } + sb_puts(mf, `P {id} {parts[0]} {parts[1]} {defs}\n`) + let stages = Text.split("vert frag", " ") + var si = 0 + while si < 2 { + let stage = stages[si] + var src = vsrc + if stage == "frag" { src = fsrc } + let glsl = `{tmp}/{id}.{stage}.glsl` + if not write_file(glsl, shd_bind_samplers(src, false)) { err(`shaders: cannot write {glsl}\n`); return 1 } + let spv = `{outdir}/{id}.{stage}.spv` + var extra = "" + if stage == "frag" { extra = " --shift-UBO-binding frag 1" } + let logf = `{tmp}/{id}.{stage}.log` + if not shq(`{shd_q(shd_bin + "/glslangValidator")} -V -R --auto-map-bindings --auto-map-locations{extra} -S {stage} {shd_q(glsl)} -o {shd_q(spv)} > {shd_q(logf)} 2>&1`) { + err(`shaders: {parts[0]} + {parts[1]} [{defs}] ({stage}) did not compile:\n{capture("grep ERROR " + shd_q(logf) + " | head -5")}\n`) + return 1 + } + if not shq(`{shd_q(shd_bin + "/spirv-val")} --target-env vulkan1.3 {shd_q(spv)} > /dev/null 2>&1`) { err(`shaders: {spv} fails spirv-val\n`); return 1 } + if not shd_reflect_stage(mf, id, stage, spv, tmp) { return 1 } + si += 1 + } + var t = 0 + while t < len(shd_names) { + sb_puts(mf, `T {id} {shd_names[t]} {string(t + 2)}\n`) + t += 1 + } + made += 1 + } + if not write_file(`{outdir}/manifest.txt`, sb_str(mf)) { err("shaders: cannot write manifest.txt\n"); return 1 } + if check { + let real = "packages/ludic.render3d/shaders/spv" + if not shq(`diff -r {shd_q(outdir)} {shd_q(real)} > /dev/null 2>&1`) { err("shaders: spv/ drifted from variants.list and the GLSL (run: ludic-dev shaders)\n"); return 1 } + } + var note = "" + if check { note = " (unchanged)" } + print(`OK {string(made)} programs, {string(made * 2)} SPIR-V stages{note}`) + return 0 +} diff --git a/tools/ludic-cli/test.ludic b/tools/ludic-cli/test.ludic index 75ebc0bf..c4058d64 100644 --- a/tools/ludic-cli/test.ludic +++ b/tools/ludic-cli/test.ludic @@ -817,5 +817,13 @@ function cmd_dev_test() -> int { } else { bad2("ludic-dev vkgen --check", capture_line(`tail -1 {tmp_dir()}/vkgen.out`)) } } else { skip("ludic-dev vkgen --check (needs the Vulkan SDK's vk.xml)") } + # render3d's shader variants as SPIR-V: tracked, so a change to a shader or to variants.list + # that nobody rebuilt fails here, wherever the Vulkan SDK (glslangValidator) is installed + if shq("ls $VULKAN_SDK/bin/glslangValidator $HOME/VulkanSDK/*/macOS/bin/glslangValidator 2>/dev/null | grep -q glslangValidator") { + if shq(`bin/ludic-dev shaders --check > {tmp_dir()}/shaders.out 2>&1`) { + ok("ludic-dev shaders rebuilds render3d's SPIR-V byte-identically") + } else { bad2("ludic-dev shaders --check", capture_line(`tail -1 {tmp_dir()}/shaders.out`)) } + } else { skip("ludic-dev shaders --check (needs the Vulkan SDK's glslangValidator)") } + return report() }