From d90d9276b27806c8a8e5ca64e1fcc557af120310 Mon Sep 17 00:00:00 2001 From: peterino2 Date: Sat, 7 Jun 2025 14:16:56 -0700 Subject: [PATCH] saving --- engine/platform/build.zig | 3 - engine/rend/build.zig | 22 +- engine/ui/build.zig | 8 +- projects/minimal/Saved/Session_Log.txt | 8 +- .../content/_shaders/dxil/debug.frag.dxil | Bin 0 -> 2996 bytes .../content/_shaders/dxil/debug.vert.dxil | Bin 0 -> 5080 bytes .../content/_shaders/dxil/depthOnly.frag.dxil | Bin 0 -> 2512 bytes .../content/_shaders/dxil/lit_mesh.frag.dxil | Bin 0 -> 8336 bytes .../content/_shaders/dxil/meshes.vert.dxil | Bin 0 -> 7596 bytes .../content/_shaders/dxil/postProc.frag.dxil | Bin 0 -> 4956 bytes .../content/_shaders/dxil/postProc.vert.dxil | Bin 0 -> 3104 bytes .../content/_shaders/dxil/rect.frag.dxil | Bin 0 -> 6284 bytes .../content/_shaders/dxil/rect.vert.dxil | Bin 0 -> 5060 bytes .../content/_shaders/dxil/sample.frag.dxil | Bin 0 -> 2816 bytes .../content/_shaders/dxil/sample.vert.dxil | Bin 0 -> 3780 bytes .../content/_shaders/dxil/skybox.frag.dxil | Bin 0 -> 4252 bytes .../content/_shaders/dxil/skybox.vert.dxil | Bin 0 -> 3848 bytes .../content/_shaders/dxil/ssao.frag.dxil | Bin 0 -> 8264 bytes .../content/_shaders/dxil/test.vert.dxil | Bin 0 -> 3800 bytes .../content/_shaders/dxil/text.frag.dxil | Bin 0 -> 5952 bytes .../content/_shaders/dxil/text.vert.dxil | Bin 0 -> 5004 bytes .../content/_shaders/msl/debug.frag.msl | 25 + .../content/_shaders/msl/debug.vert.msl | 40 + .../content/_shaders/msl/depthOnly.frag.msl | 17 + .../content/_shaders/msl/lit_mesh.frag.msl | 198 + .../content/_shaders/msl/meshes.vert.msl | 62 + .../content/_shaders/msl/postProc.frag.msl | 59 + .../content/_shaders/msl/postProc.vert.msl | 25 + .../content/_shaders/msl/rect.frag.msl | 259 + .../content/_shaders/msl/rect.vert.msl | 59 + .../content/_shaders/msl/sample.frag.msl | 22 + .../content/_shaders/msl/sample.vert.msl | 66 + .../content/_shaders/msl/skybox.frag.msl | 32 + .../content/_shaders/msl/skybox.vert.msl | 29 + .../content/_shaders/msl/ssao.frag.msl | 124 + .../content/_shaders/msl/test.vert.msl | 66 + .../content/_shaders/msl/text.frag.msl | 100 + .../content/_shaders/msl/text.vert.msl | 53 + .../content/_shaders/spv/debug.frag.spv | Bin 0 -> 604 bytes .../content/_shaders/spv/debug.vert.spv | Bin 0 -> 1488 bytes .../content/_shaders/spv/depthOnly.frag.spv | Bin 0 -> 320 bytes .../content/_shaders/spv/lit_mesh.frag.spv | Bin 0 -> 8044 bytes .../content/_shaders/spv/meshes.vert.spv | Bin 0 -> 3520 bytes .../content/_shaders/spv/postProc.frag.spv | Bin 0 -> 3956 bytes .../content/_shaders/spv/postProc.vert.spv | Bin 0 -> 656 bytes .../content/_shaders/spv/rect.frag.spv | Bin 0 -> 6316 bytes .../content/_shaders/spv/rect.vert.spv | Bin 0 -> 3100 bytes .../content/_shaders/spv/sample.frag.spv | Bin 0 -> 372 bytes .../content/_shaders/spv/sample.vert.spv | Bin 0 -> 1848 bytes .../content/_shaders/spv/skybox.frag.spv | Bin 0 -> 1308 bytes .../content/_shaders/spv/skybox.vert.spv | Bin 0 -> 880 bytes .../content/_shaders/spv/ssao.frag.spv | Bin 0 -> 9372 bytes .../content/_shaders/spv/test.vert.spv | Bin 0 -> 1568 bytes .../content/_shaders/spv/text.frag.spv | Bin 0 -> 4432 bytes .../content/_shaders/spv/text.vert.spv | Bin 0 -> 2080 bytes projects/minimal/src/main.zig | 3 +- projects/out.txt | 23631 ++++++++++++++++ 57 files changed, 24888 insertions(+), 23 deletions(-) create mode 100644 projects/minimal/content/_shaders/dxil/debug.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/debug.vert.dxil create mode 100644 projects/minimal/content/_shaders/dxil/depthOnly.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/lit_mesh.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/meshes.vert.dxil create mode 100644 projects/minimal/content/_shaders/dxil/postProc.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/postProc.vert.dxil create mode 100644 projects/minimal/content/_shaders/dxil/rect.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/rect.vert.dxil create mode 100644 projects/minimal/content/_shaders/dxil/sample.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/sample.vert.dxil create mode 100644 projects/minimal/content/_shaders/dxil/skybox.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/skybox.vert.dxil create mode 100644 projects/minimal/content/_shaders/dxil/ssao.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/test.vert.dxil create mode 100644 projects/minimal/content/_shaders/dxil/text.frag.dxil create mode 100644 projects/minimal/content/_shaders/dxil/text.vert.dxil create mode 100644 projects/minimal/content/_shaders/msl/debug.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/debug.vert.msl create mode 100644 projects/minimal/content/_shaders/msl/depthOnly.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/lit_mesh.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/meshes.vert.msl create mode 100644 projects/minimal/content/_shaders/msl/postProc.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/postProc.vert.msl create mode 100644 projects/minimal/content/_shaders/msl/rect.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/rect.vert.msl create mode 100644 projects/minimal/content/_shaders/msl/sample.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/sample.vert.msl create mode 100644 projects/minimal/content/_shaders/msl/skybox.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/skybox.vert.msl create mode 100644 projects/minimal/content/_shaders/msl/ssao.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/test.vert.msl create mode 100644 projects/minimal/content/_shaders/msl/text.frag.msl create mode 100644 projects/minimal/content/_shaders/msl/text.vert.msl create mode 100644 projects/minimal/content/_shaders/spv/debug.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/debug.vert.spv create mode 100644 projects/minimal/content/_shaders/spv/depthOnly.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/lit_mesh.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/meshes.vert.spv create mode 100644 projects/minimal/content/_shaders/spv/postProc.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/postProc.vert.spv create mode 100644 projects/minimal/content/_shaders/spv/rect.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/rect.vert.spv create mode 100644 projects/minimal/content/_shaders/spv/sample.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/sample.vert.spv create mode 100644 projects/minimal/content/_shaders/spv/skybox.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/skybox.vert.spv create mode 100644 projects/minimal/content/_shaders/spv/ssao.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/test.vert.spv create mode 100644 projects/minimal/content/_shaders/spv/text.frag.spv create mode 100644 projects/minimal/content/_shaders/spv/text.vert.spv create mode 100644 projects/out.txt diff --git a/engine/platform/build.zig b/engine/platform/build.zig index 9ff59ba..7db70b4 100644 --- a/engine/platform/build.zig +++ b/engine/platform/build.zig @@ -16,9 +16,6 @@ pub fn build(b: *std.Build) void { .root_source_file = b.path("src/platform.zig"), }); - const test_vert = sdl3.addShaderDefinition(b, "../../lib/sdl3", optimize, "test.vert", b.path("shaders/test.vert.json")); - mod.addImport("test.vert", test_vert); - const tests = b.addTest(.{ .target = target, .optimize = optimize, diff --git a/engine/rend/build.zig b/engine/rend/build.zig index 2cf2924..a107144 100644 --- a/engine/rend/build.zig +++ b/engine/rend/build.zig @@ -32,22 +32,22 @@ pub fn build(b: *std.Build) void { } } - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "sample.vert", b.path("shaders/sample.vert.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "meshes.vert", b.path("shaders/meshes.vert.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "lit_mesh.frag", b.path("shaders/lit_mesh.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "sample.vert", b.path("shaders/sample.vert.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "meshes.vert", b.path("shaders/meshes.vert.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "lit_mesh.frag", b.path("shaders/lit_mesh.frag.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "debug.frag", b.path("shaders/debug.frag.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "debug.vert", b.path("shaders/debug.vert.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "debug.frag", b.path("shaders/debug.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "debug.vert", b.path("shaders/debug.vert.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "depthOnly.frag", b.path("shaders/depthOnly.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "depthOnly.frag", b.path("shaders/depthOnly.frag.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "skybox.frag", b.path("shaders/skybox.frag.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "skybox.vert", b.path("shaders/skybox.vert.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "skybox.frag", b.path("shaders/skybox.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "skybox.vert", b.path("shaders/skybox.vert.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "postProc.frag", b.path("shaders/postProc.frag.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "postProc.vert", b.path("shaders/postProc.vert.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "postProc.frag", b.path("shaders/postProc.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "postProc.vert", b.path("shaders/postProc.vert.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "ssao.frag", b.path("shaders/ssao.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "ssao.frag", b.path("shaders/ssao.frag.json")); // ========== tests ========== const tests = b.addTest(.{ diff --git a/engine/ui/build.zig b/engine/ui/build.zig index d2f454f..d58c829 100644 --- a/engine/ui/build.zig +++ b/engine/ui/build.zig @@ -27,11 +27,11 @@ pub fn build(b: *std.Build) void { } // shaders - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "rect.vert", b.path("shaders/rect.vert.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "rect.frag", b.path("shaders/rect.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "rect.vert", b.path("shaders/rect.vert.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "rect.frag", b.path("shaders/rect.frag.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "text.vert", b.path("shaders/text.vert.json")); - sdl3.shaderDefintion(b, mod, "../../lib/sdl3", optimize, "text.frag", b.path("shaders/text.frag.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "text.vert", b.path("shaders/text.vert.json")); + sdl3.shaderDefintion(b, mod, "../../lib/sdl3", target, optimize, "text.frag", b.path("shaders/text.frag.json")); // ========== tests ========== const tests = b.addTest(.{ diff --git a/projects/minimal/Saved/Session_Log.txt b/projects/minimal/Saved/Session_Log.txt index f8d41df..3a61517 100644 --- a/projects/minimal/Saved/Session_Log.txt +++ b/projects/minimal/Saved/Session_Log.txt @@ -1,5 +1,5 @@ [ENGINE ]: defining componentScene -[ENGINE ]: Component container created scene.Scene @1c60c524798 +[ENGINE ]: Component container created scene.Scene @16ed1884f98 [ENGINE ]: creating lua metatable Scene [ENGINE ]: module started >>>> core <<<< [ENGINE ]: platform settings windowing.PlatformParams{ .extent = math.Vector2Type(c_int,"Vector2c"[0..8]){ .x = 1600, .y = 900 }, .windowName = { 66, 97, 99, 107, 108, 111, 103, 32, 69, 110, 103, 105, 110, 101 }, .icon = { 116, 101, 120, 116, 117, 114, 101, 115, 47, 105, 99, 111, 110, 46, 112, 110, 103 }, .hasVideo = true } @@ -56,10 +56,10 @@ [ENGINE ]: creating shader postProc.vert => _shaders/spv/postProc.vert.spv gpu.GPUShaderStage.shaderstageVertex args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 0 } [ENGINE ]: creating shader ssao.frag => _shaders/spv/ssao.frag.spv gpu.GPUShaderStage.shaderstageFragment args: shaderTypes.ShaderLoadArgs{ .num_samplers = 3, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 1 } [ENGINE ]: defining component_MeshComponent -[ENGINE ]: Component container created meshes.MeshComponent @24618af28e8 +[ENGINE ]: Component container created meshes.MeshComponent @16e88766338 [ENGINE ]: creating lua metatable Mesh [ENGINE ]: defining component_CameraComponent -[ENGINE ]: Component container created camera.CameraComponent @1c60e4b9d68 +[ENGINE ]: Component container created camera.CameraComponent @16ed3fef308 [ENGINE ]: creating lua metatable Camera [ENGINE ]: module started >>>> rend <<<< [GRAPHICS ]: imgui startup @@ -97,7 +97,7 @@ [ENGINE ]: install mesh by name 38 [ENGINE ]: Processing exit signals [ENGINE ]: checking everything is ready to exit -[ENGINE ]: checking everything is ready to exit engineObject.InterfaceRef2(engineObject.EngineObjectVTable){ .ptr = anyopaque@1c60c49a9e8, .vtable = engineObject.EngineObjectVTable{ .typeName = { 119, 105, 110, 100, 111, 119, 105, 110, 103, 46, 80, 108, 97, 116, 102, 111, 114, 109, 73, 110, 115, 116, 97, 110, 99, 101 }, .typeSize = 112, .typeAlign = 8, .singletonName = { 112, 108, 97, 116, 102, 111, 114, 109, 46, 73, 110, 115, 116, 97, 110, 99, 101 }, .init_func = fn (mem.Allocator) error{OutOfMemory,UnknownStatePanic,BadInit,UnknownError}!*anyopaque@7ff66491a590, .tick_func = null, .engineDraw_func = null, .preTick_func = null, .deinit_func = fn (*anyopaque) void@7ff66491a7f0, .postInit_func = null, .processEvents = null, .exitSignal_func = fn (*anyopaque) error{OutOfMemory,UnknownStatePanic,BadInit,UnknownError}!void@7ff66491a6d0, .readyToExit_func = fn (*anyopaque) bool@7ff66491a750, .prepare_func = null, .fieldListHash = null, .fieldList = null, .slackSize = null } } +[ENGINE ]: checking everything is ready to exit engineObject.InterfaceRef2(engineObject.EngineObjectVTable){ .ptr = anyopaque@16ed18a2458, .vtable = engineObject.EngineObjectVTable{ .typeName = { 119, 105, 110, 100, 111, 119, 105, 110, 103, 46, 80, 108, 97, 116, 102, 111, 114, 109, 73, 110, 115, 116, 97, 110, 99, 101 }, .typeSize = 112, .typeAlign = 8, .singletonName = { 112, 108, 97, 116, 102, 111, 114, 109, 46, 73, 110, 115, 116, 97, 110, 99, 101 }, .init_func = fn (mem.Allocator) error{OutOfMemory,UnknownStatePanic,BadInit,UnknownError}!*anyopaque@7ff7f0769030, .tick_func = null, .engineDraw_func = null, .preTick_func = null, .deinit_func = fn (*anyopaque) void@7ff7f0769290, .postInit_func = null, .processEvents = null, .exitSignal_func = fn (*anyopaque) error{OutOfMemory,UnknownStatePanic,BadInit,UnknownError}!void@7ff7f0769170, .readyToExit_func = fn (*anyopaque) bool@7ff7f07691f0, .prepare_func = null, .fieldListHash = null, .fieldList = null, .slackSize = null } } [ENGINE ]: exiting [ENGINE ]: module shutting down >>>> ui <<<< [ENGINE ]: module shutting down >>>> imgui <<<< diff --git a/projects/minimal/content/_shaders/dxil/debug.frag.dxil b/projects/minimal/content/_shaders/dxil/debug.frag.dxil new file mode 100644 index 0000000000000000000000000000000000000000..d8cf8b2a2c389664a3df0dacaaacd1c94faa0227 GIT binary patch literal 2996 zcmeHJeN0=|6~Fd-_}O601Ds%EKo1DWX-H}eHBiiE``NAuMsWrqR0GxKBcUn~^HIK9 zZT~x-#PF7{M5B7y0Y|mq5SYSM+yC$j@M+ z-#=6A<4Y3hCkJjbz1+TgR^&$eqBzos7=Q-YQ-v5nO-9d;au|%=>qKa0L5?&4>Z)pG zbr1)@2<<|csID#7qoSzxCFobt^Iv3g0XP7CaW*Q_t7I4>tl4iW19&-$l$MMz9Ne53 zwlD+#L4$?VFjXUQDhDa$7qbNwu~L;w=iyVd)^#2TrK&9*&y$$7WKbTpx;O3jhVe`- z>!<(#I9ecb-$8956wKLpM;MtHh0b0MafwFP+tP=bU33DM~#x+tQ}!|R9|eNm&sNT7ru>vvD3^(cq|BhejXZIeXLZl;k3 zE9_=&!;qJNIc;}%u+HNO5f6Rt$-@W0keo$6nJKrQqyU^jgaS+k90QPMOz?$?dXJlv z`@%9#&m;*L;vuQn`B2P$dj#4xso10ProSWb=(sxAynfg_BV3n?={;Iz^3oaZshuw? zx%-x5u4*o@w97FBu5oYY=CV%a{v@xNCiSGtWK)nLhc!fzc+4dqhk3MBz;jGc?0J^a zugJSTWVt2b9xhPUdgB-9nS*(2r`g96KMQ^`%3sH)4Y}+q?`2ZC?3eS^=f9Kh^CBFBimpQ6UJvn^Rrl3SPmn+Lt7xnLX?sa?*OJpfjYg&G^S6g&7Ypv}}`rJKZ8)A=H2!E?mP1W?HhrPNU)=iP zwMx$L^G$t+x>`(4&7GB}nwndym~SNs&&Abe)V=7L`dm~msJ}h+`No*{r!=fEUehzK zmT6M7$7MNvzlT-EeCyZlDL*>zTVJc>ta{^w=dOpo`(si4*^P}cOFWt%nghbL0=6Y> zX*2BvpHb$biyeNq%0l$_5nU4<+-;EXCCU4fg;&5;Wh^eFe>|ObLJ|{6vx`=-vH)G? z#>!Uv+}&p4H8#<&bDGV>fEnxQbDAlqa5a&)UuUAuye`HJ!E^ksGG8mCUpyYx;_b^_hn*3D6}I z5qZg9JVqD0u+lOAvvAYD+DdO?r9bz(1DV9@W~`HRc9}7BFGi<1;Ow0x1}3cXElWbX zBH><;7l!@npdju*y;l-H{s;Nrego_w`OU4Ai*3wL&42m$ZpCPFqWHP8hzH;p73noh z2Rdbyj*kpT-#%EtI_<9=z~Ub*h?!&GLl~DAv-@6Dz<1Et_HEaQ=IT`F%SJu|L2%DL6KKjCW&}{t&(In`YrpGaFbPrU&oa|H#d0RmpJ{* zV(P%aNY*69U%{tqW%v?4ZOmnB3Y63t4%6C7KJ$uSB{%G=#5C$(4S_~!^H-WZxxF>o zBBl689MvBo95&evuR=Jq%l4-hXFZhR{-NfeH=a9V6=j{WhX)siGLtbQyU1#aI>;t2(3}hc@ zoJ!jFY9L&mh;2?Y^ zlW}Dp`nE#fJJmUgLd+05s3_0^8|C_bBTlhxVgblzae&Qeto0Y>UvVj!7D^yUQ66>X zH+TTWX0d9jk9CC?QnnHvGeZ9WzVl}F literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/debug.vert.dxil b/projects/minimal/content/_shaders/dxil/debug.vert.dxil new file mode 100644 index 0000000000000000000000000000000000000000..89a9c46e35302ac71215e2ad4aab2e3c8b8316f6 GIT binary patch literal 5080 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 AUjP6A literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/meshes.vert.dxil b/projects/minimal/content/_shaders/dxil/meshes.vert.dxil new file mode 100644 index 0000000000000000000000000000000000000000..147b51a227f5228efe28bd6d4fabace1c5d4f75c GIT binary patch literal 7596 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/postProc.frag.dxil b/projects/minimal/content/_shaders/dxil/postProc.frag.dxil new file mode 100644 index 0000000000000000000000000000000000000000..c55772cecae1a7d21d07435b48365716b7b99cd6 GIT binary patch literal 4956 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 literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/postProc.vert.dxil b/projects/minimal/content/_shaders/dxil/postProc.vert.dxil new file mode 100644 index 0000000000000000000000000000000000000000..ce70167e8d61b8c02261c37d3ac56defbc6e2a74 GIT binary patch literal 3104 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 K4D-M<2mLoHz{=17 literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/rect.vert.dxil b/projects/minimal/content/_shaders/dxil/rect.vert.dxil new file mode 100644 index 0000000000000000000000000000000000000000..1bc9fecd10a26390540e13ceb4816eb7ed4d708d GIT binary patch literal 5060 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 r=v7Il4uczAvnqVd=gLH|UYP*A@l;F979VEBXHG literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/sample.frag.dxil b/projects/minimal/content/_shaders/dxil/sample.frag.dxil new file mode 100644 index 0000000000000000000000000000000000000000..6115e3aa4c6a978c12a4780e1c16ac3ab588aaa8 GIT binary patch literal 2816 zcmeHJdvFtV9{(k~&2DJA*)&lSnszpQO(+$X6kB>tXPT!eq(f>$jh>E4p@>Rr+LX|T zGq*|8Zoq)CREgAK2o)^g_<}i!qEnh!LtDJ^IOGn8p;D^eAlGqpM&}&$w@J%*j^o_@ zarc+s$@lU5zV`Rn{p4qK=nX4Z9(}dJPVi0O%!4`|thTY^aY}jzWksEFJjoKO*zf;R4 zLuzPz)b473thoc)wuVMJ1U2{UU!xx(aef|;`~5pDSs0R>zB8c~*W<0}b#QJjwphml zMu6}+Z<^qk8Db) zQW(R01<&b{Xsv+MR1WY0qM{63k%vCh#E>SwejrmHAT_eJxP1K*jXr1z%P506co--& z`dJGRmgFaFx_Vz|ruXJ9RAm;_%K?DL1ad;xxh=qI_#;_?dCo*AZoaiJ&dpiscj_sq zcS6A(jV2!#Qk(lwY5vOrC~gFzVOh2{7|IL;tR!6kioh-fQ^}_z1vR@?8|}tM5p`(U zn2%Wl>!q^xQMSX$mTzUdwj$8Zdfi5}OcUKu0&zEuwI9Sh6xI?Z+7^w@MWfA$aS79c zFMgKht--pTSjV(rj>Np_OeX<5q%-GW=pY7jTCNkY&q9Zk$8g}zO9()}RzTi4Ls1t= zr49P<@qOc{;ZU}mr|#FNpB+%6#|EJ7*Q?3DzbW$LD4*8_ z_w4~#vkb9@&3tKMkLameU)G5V$1^@O9TAwvGceQ?nkz0AJXZWlX|sW}l0lchhRg~0 zu23YJaVjR{*Kd;(fe3|<3Y_tp(#d}2Z?tG#na*(_>x|*hJ*DS%;~OQHr!Vf6okyd# zV*G=*R8%pZQKnPx7xG=O-=r*&|L|33h^H9z zDPHm^?5<5Gp7hiftndsEWuqID^AF#en4PGQ_U zr0R`$D5=7pb|dX1>v1F8TAZvq$?h1zx+6aAEF*5M5#O99=HY&|Q7PyKchgz>{;B=p zQ_y=wduev*+b#URy1)DA#`?WdiTd8^ln0;)l?6*uWYINPWD9oljX&l8`H$q+FN@#b zY_UIdhQqE)3s`pVFR<+N&#<2 zBo(Zo;GYrqo#|oI{~pUC6#0R`MXN{8)sgt7I8&HFU2Wy)B&q|JlYNI{l4!};vhMDI z{QZ>dEJU$#G=WAPDHNmj2>HHkWXY3pz1CJ(hnS2X_k&HE=5I`Q74K*?S3sD{%8crU zWLYxFBRTxmczFA0|DiT57#SPi^6}h&xpB^1QG_20&%~}gfA-wr_hNOzVDaY8m0s62 zZ*zMCf0$4lm{dL_fAGbJFXlX`xH?E3HS~Yhw6D>-&sc6+YJQ-+$ng(YJs3NG_NMN= z!?E+{>V(`?=Xc!sKjMyy0w53WxfIova`z(c9%byK5!(`bkqus43IsyncRH;Z=<-BR z$7d+Hd{AOCtZoVe3Ky8STP`$(>q&u6~?Orw6y&>;>s` NUQ@1YBbvUU{sbS{Knnl> literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/sample.vert.dxil b/projects/minimal/content/_shaders/dxil/sample.vert.dxil new file mode 100644 index 0000000000000000000000000000000000000000..fdabb150dc7d441e281506f448f4a779bb5a950f GIT binary patch literal 3780 zcmeHJe^3+I9e>F#y9;cV1)@ZLcpK1+2=xpP2~GM-gL<`lhY13^qJdhzFQ$}p%%@y4@^ZLiw9{&)|Gr=9-O{?WP4 z^gDU)`+eV^yYIbxzN=lM*8KI`4?xtSs$JUa5&hDk;{zf9Kpz7D33&z_xo|k(n1G`L z8XKXZ3y%EEY@UKTKV|1HNlJzb6z|v1nKBYndbAWF2T1v=-(6i)v8|{&TML%MSUuE< z;qb?1LD^5(ln~-qK%O@xqjboQxZl2V@fywYxD%kWe0x82w(SAf$&w1_%DS2?S5AS;Su!FEwn2RZ$G0N!tq%>V(N{@Y_T{3$RxT zibPrrgGJt+^7pg+mBPxA008tbLp2Q6uF1|t1yF7;)T=e_VL1)JR;UZE(~TUn(vjgl=5Qm$}hxul#X({T*UP^w3> z7}ws|KAn(fcHXl*+>OU)5_xa~&>2NJN6>bWDsj8SI)OxtE9GrScmo8sgKX%B&LzB7 zujXRM?xTav;sr}sX`w_(9Id)xd>;M{yYJUw*K=}zTyeKu zR_M&zoqAh_lVYZ!%@L;f(4$aC*&MFc`nf@|>YnC9Sm7QZMb8v2t#I47>Fp`S_8r9- zlqIKhOsS9A31<+plP4>h$x4nabus0Bq1rE$>q+F`BObltR;40$>d9?BVvHrLUU=#m znBj%z7&JAL(5G~SfqAAfOlmZTUtWFyY#9OU%ezDGV7Zrhl15~r8#=MdDiY`_OhwOtc%$~ zx!&g9LPrI5z%$zpc_fzW$`pt9?V-0m{(2cbt3Tk<;x;0)KY+v+JI53XVw2(*iA5SV zm$ent^0Fwad5~lAfD7G$y~Yw5V{PPg(*w_Urk@Y&HI-yhMRJE(ZjuOR%tnYG9OWkT z9+mc*O?8K-eaS-mafz__$h^cW^}pSJ>)@(G(d%dYB=+1GjdKr_01P#`y}er zk~LJ~jg&GUb@eX0OWVG?!*=*^t3yHI$pUvIP%K}@5=9o@fgW2Og(Z!AmL&6mt|RX}XJ>8&eXoNQV$vvVnK?xDWLZ_vo8?4j-~CO$tnQjWzI zR2a$%i;F4~uMdrlk0~gRI`&F^*`EG&cfO2>no-}~b>T#+~#l<^@CCYT8wGoS5?8J0&6 z%42#BGdJ=dE&SZF(5Ff7!ZJR$WLU9<0~69JJy}ysrWV^P;B2xRU3R0MteQhsJqv(o zx0~$mQucD0y`s^+qtTrBWP*7z!u-k2Jm#?iZ%g!OOZ33xJYzq-h@TJt6g{#TiD@odgbIUBUZuMD~%X>7rou+wQp}HcQ%?c zMol4Qs*s01W`ehvy`ndURH#s|AqEKuyURIC~;$Ht-xfGXDiOtc9`v zKK?gy^d-W;&l$V|L3o45G^-CcAE#h{*q~7-(gH0Jl~5l``Y_|Kz%E>FU>rV{Sm*uc4A^x6DXlPnmQ`r>8Ep(b?a|}c?i{+eT zgIcK|#~=khNfNWT@Lg0K5ZJyC4ee5Pzb ziL3bn6W}O9CrkGH&Z)rN#kH(cLH9~FZB483e7Ux^@SHpy;~R@)4t*aGsaU!>xqbR? zB9~F7Yq(stOlFO`I&A#LcIFIz$*8fKdlEGUJdU7XQE*X6H4GQ4fm1>C6!&sN$Sw8b zPiFJPT;^y8R?vK(56a-s!iN^1t~SK+$i_cwgjJg#m@I%MF3QH!MmS&*l8CpMH24v& zbDH;PrioX{q|ilIXPQQ=3vSB7D9Hv uW`1IN&D_G+zBg-OwCa1a3PsnxW`5$PGwCpZ_kj4iG`3FHj=`^BME?NNWSW!! literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/skybox.frag.dxil b/projects/minimal/content/_shaders/dxil/skybox.frag.dxil new file mode 100644 index 0000000000000000000000000000000000000000..f75744d34557fc8f9ba991f99823bb9b4f5435dc GIT binary patch literal 4252 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 QAq)uXeefVf!vlu$AM|fWJpcdz literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/skybox.vert.dxil b/projects/minimal/content/_shaders/dxil/skybox.vert.dxil new file mode 100644 index 0000000000000000000000000000000000000000..280990d888408863d3de0225b92ac838fd3a7496 GIT binary patch literal 3848 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 IO*M)C1amMG)c^nh literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/test.vert.dxil b/projects/minimal/content/_shaders/dxil/test.vert.dxil new file mode 100644 index 0000000000000000000000000000000000000000..a29b0fe9191aca62d43e89d0f1c9ba7a4024cda1 GIT binary patch literal 3800 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 literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/dxil/text.frag.dxil b/projects/minimal/content/_shaders/dxil/text.frag.dxil new file mode 100644 index 0000000000000000000000000000000000000000..a6e91a84b2596eac313bd72c3f0ae849909e02d3 GIT binary patch literal 5952 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 +#include + +using namespace metal; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; + float4 out_var_SV_Target1 [[color(1)]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[user(locn0)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]]) +{ + main0_out out = {}; + float4 _20 = float4(in.in_var_TEXCOORD0 * 4.0, 1.0); + out.out_var_SV_Target0 = _20; + out.out_var_SV_Target1 = _20; + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/debug.vert.msl b/projects/minimal/content/_shaders/msl/debug.vert.msl new file mode 100644 index 0000000..8dd4b36 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/debug.vert.msl @@ -0,0 +1,40 @@ +#include +#include + +using namespace metal; + +struct Scene +{ + float4x4 Model; + float4 Color; +}; + +struct type_StructuredBuffer_Scene +{ + Scene _m0[1]; +}; + +struct type_Uniforms +{ + float4x4 ViewProjection; +}; + +struct main0_out +{ + float3 out_var_TEXCOORD0 [[user(locn0)]]; + float4 gl_Position [[position]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[attribute(0)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], const device type_StructuredBuffer_Scene& scene [[buffer(1)]], uint gl_InstanceIndex [[instance_id]]) +{ + main0_out out = {}; + out.out_var_TEXCOORD0 = scene._m0[gl_InstanceIndex].Color.xyz; + out.gl_Position = Uniforms.ViewProjection * (scene._m0[gl_InstanceIndex].Model * float4(in.in_var_TEXCOORD0, 1.0)); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/depthOnly.frag.msl b/projects/minimal/content/_shaders/msl/depthOnly.frag.msl new file mode 100644 index 0000000..e221fab --- /dev/null +++ b/projects/minimal/content/_shaders/msl/depthOnly.frag.msl @@ -0,0 +1,17 @@ +#include +#include + +using namespace metal; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; +}; + +fragment main0_out main0() +{ + main0_out out = {}; + out.out_var_SV_Target0 = float4(1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/lit_mesh.frag.msl b/projects/minimal/content/_shaders/msl/lit_mesh.frag.msl new file mode 100644 index 0000000..b72c673 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/lit_mesh.frag.msl @@ -0,0 +1,198 @@ +#include +#include + +using namespace metal; + +struct type_Uniforms +{ + float4 viewPos; + float4 lightPosition; + float4 directionalLight; + float4 directionalLightColor; + float2 screenSize; + float lightPower; + float time; +}; + +struct Scene +{ + float4x4 Model; + uint textureMode; + uint pad0; + uint pad1; + uint pad2; +}; + +struct type_StructuredBuffer_Scene +{ + Scene _m0[1]; +}; + +constant float4 _90 = {}; +constant float3 _92 = {}; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; + float4 out_var_SV_Target1 [[color(1)]]; + float4 out_var_SV_Target2 [[color(2)]]; + float4 out_var_SV_Target3 [[color(3)]]; +}; + +struct main0_in +{ + float2 in_var_TEXCOORD0 [[user(locn0)]]; + float3 in_var_TEXCOORD1 [[user(locn1)]]; + float3 in_var_TEXCOORD2 [[user(locn2)]]; + float4 in_var_TEXCOORD3 [[user(locn3)]]; + uint in_var_TEXCOORD4 [[user(locn4)]]; + float3 in_var_TEXCOORD5 [[user(locn5)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], const device type_StructuredBuffer_Scene& scene [[buffer(1)]], texture2d Texture0 [[texture(0)]], texture2d Texture1 [[texture(1)]], texture2d Texture2 [[texture(2)]], texture2d DirectionalShadowDepthMap [[texture(3)]], sampler Sampler0 [[sampler(0)]], sampler Sampler1 [[sampler(1)]], sampler Sampler2 [[sampler(2)]], sampler DirectionalShadowSampler [[sampler(3)]]) +{ + main0_out out = {}; + int _102 = int(scene._m0[in.in_var_TEXCOORD4].textureMode); + int _103 = _102 & 240; + float4 _137; + if (_103 == 16) + { + float3 _124 = float3(Texture0.sample(Sampler0, in.in_var_TEXCOORD0).x, Texture1.sample(Sampler1, in.in_var_TEXCOORD0).x, Texture2.sample(Sampler2, in.in_var_TEXCOORD0).x) + float3(-0.0625, -0.5, -0.5); + _137 = float4(dot(_124, float3(1.164000034332275390625, 0.0, 1.7929999828338623046875)), dot(_124, float3(1.164000034332275390625, -0.212999999523162841796875, -0.53299999237060546875)), dot(_124, float3(1.164000034332275390625, 2.111999988555908203125, 0.0)), 1.0); + } + else + { + float4 _136; + if (_103 == 0) + { + _136 = Texture0.sample(Sampler0, in.in_var_TEXCOORD0); + } + else + { + _136 = _90; + } + _137 = _136; + } + float4 _143; + if ((_102 & 1) == 1) + { + _143 = powr(_137, float4(2.2000000476837158203125)); + } + else + { + _143 = _137; + } + if (_143.w < 0.00999999977648258209228515625) + { + discard_fragment(); + } + float3 _153 = float3(0.800000011920928955078125, 0.800000011920928955078125, 0.5) * Uniforms.lightPower; + float3 _200; + do + { + float3 _157 = Uniforms.lightPosition.xyz - in.in_var_TEXCOORD1; + float _158 = length(_157); + float _159 = _158 * _158; + float _165; + if (_158 > 2.0) + { + _165 = 0.5 / _159; + } + else + { + _165 = 1.0 / _159; + } + float _170; + if (_158 > 4.0) + { + _170 = _165 * 0.5; + } + else + { + _170 = _165; + } + float _172 = (_158 > 15.0) ? 0.0 : _170; + float _174 = (_172 > 1.0) ? 1.0 : _172; + if (length(in.in_var_TEXCOORD2) < 0.100000001490116119384765625) + { + _200 = (in.in_var_TEXCOORD1 * _153) * _174; + break; + } + float3 _181 = fast::normalize(_157); + _200 = ((_153 * precise::max(dot(_181, in.in_var_TEXCOORD2), 0.0)) * _174) + (((_153 * powr(precise::max(dot(in.in_var_TEXCOORD2, fast::normalize(_181 + fast::normalize(in.in_var_TEXCOORD1 - Uniforms.viewPos.xyz))), 0.0), 30.0)) * 2.0) * _174); + break; + } while(false); + float3 _217 = ((in.in_var_TEXCOORD3.xyz / float3(in.in_var_TEXCOORD3.w)) * 0.5) + float3(0.5); + float3 _219; + _219.x = _217.x; + float2 _220 = _219.xy; + _220.y = -_217.y; + float _227; + int _230; + int _232; + _227 = 0.0; + _230 = 0; + _232 = -2; + float _228; + int _231; + for (; _232 <= 2; _227 = _228, _230 = _231, _232++) + { + _231 = _230; + _228 = _227; + for (int _241 = -2; _241 <= 2; ) + { + _231++; + _228 += float((in.in_var_TEXCOORD3.z - 0.0030000000260770320892333984375) > DirectionalShadowDepthMap.sample(DirectionalShadowSampler, (_220 + float2(float(_241) * 0.000244140625, float(_232) * 0.000244140625))).x); + _241++; + continue; + } + } + float3 _270; + if ((_102 & 2) > 0) + { + _270 = _143.xyz * 2.0; + } + else + { + _270 = _143.xyz * ((float3(0.100000001490116119384765625) + _200) + ((Uniforms.directionalLightColor.xyz * precise::max(dot(Uniforms.directionalLight.xyz, in.in_var_TEXCOORD2), 0.0)) * (1.0 - (_227 / float(_230))))); + } + float4 _287; + if (_270.x > 1.0) + { + float4 _286 = float4(0.0, 0.0, 0.0, 1.0); + _286.x = _270.x; + _287 = _286; + } + else + { + _287 = float4(0.0, 0.0, 0.0, 1.0); + } + float4 _292; + if (_270.y > 1.0) + { + float4 _291 = _287; + _291.y = _270.y; + _292 = _291; + } + else + { + _292 = _287; + } + float4 _297; + if (_270.z > 1.0) + { + float4 _296 = _292; + _296.z = _270.z; + _297 = _296; + } + else + { + _297 = _292; + } + out.out_var_SV_Target0 = float4(_270, _143.w); + out.out_var_SV_Target1 = _297; + out.out_var_SV_Target2 = float4(in.in_var_TEXCOORD1, 1.0); + out.out_var_SV_Target3 = float4(in.in_var_TEXCOORD5, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/meshes.vert.msl b/projects/minimal/content/_shaders/msl/meshes.vert.msl new file mode 100644 index 0000000..0f92f0a --- /dev/null +++ b/projects/minimal/content/_shaders/msl/meshes.vert.msl @@ -0,0 +1,62 @@ +#include +#include + +using namespace metal; + +struct Scene +{ + float4x4 Model; + uint textureMode; + uint pad0; + uint pad1; + uint pad2; +}; + +struct type_StructuredBuffer_Scene +{ + Scene _m0[1]; +}; + +struct type_Uniforms +{ + float4x4 ViewProjection; + float4x4 NoTranslateView; + float4x4 ShadowMapProjection; + float time; +}; + +struct main0_out +{ + float2 out_var_TEXCOORD0 [[user(locn0)]]; + float3 out_var_TEXCOORD1 [[user(locn1)]]; + float3 out_var_TEXCOORD2 [[user(locn2)]]; + float4 out_var_TEXCOORD3 [[user(locn3)]]; + uint out_var_TEXCOORD4 [[user(locn4)]]; + float3 out_var_TEXCOORD5 [[user(locn5)]]; + float4 gl_Position [[position]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[attribute(0)]]; + float3 in_var_TEXCOORD1 [[attribute(1)]]; + float2 in_var_TEXCOORD3 [[attribute(3)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], const device type_StructuredBuffer_Scene& scene [[buffer(1)]], uint gl_InstanceIndex [[instance_id]]) +{ + main0_out out = {}; + float4 _53 = float4(in.in_var_TEXCOORD0, 1.0); + float4 _56 = scene._m0[gl_InstanceIndex].Model * _53; + float4x4 _91 = float4x4(float4(fast::normalize(float3(scene._m0[gl_InstanceIndex].Model[0][0], scene._m0[gl_InstanceIndex].Model[1][0], scene._m0[gl_InstanceIndex].Model[2][0])), 0.0), float4(fast::normalize(float3(scene._m0[gl_InstanceIndex].Model[0][1], scene._m0[gl_InstanceIndex].Model[1][1], scene._m0[gl_InstanceIndex].Model[2][1])), 0.0), float4(fast::normalize(float3(scene._m0[gl_InstanceIndex].Model[0][2], scene._m0[gl_InstanceIndex].Model[1][2], scene._m0[gl_InstanceIndex].Model[2][2])), 0.0), float4(0.0, 0.0, 0.0, 1.0)); + float4 _95 = float4(in.in_var_TEXCOORD1, 1.0); + out.out_var_TEXCOORD0 = in.in_var_TEXCOORD3; + out.out_var_TEXCOORD1 = _56.xyz; + out.out_var_TEXCOORD2 = fast::normalize(_95 * _91).xyz; + out.out_var_TEXCOORD3 = Uniforms.ShadowMapProjection * _56; + out.out_var_TEXCOORD4 = gl_InstanceIndex; + out.out_var_TEXCOORD5 = (_95 * (_91 * transpose(Uniforms.NoTranslateView))).xyz; + out.gl_Position = Uniforms.ViewProjection * (scene._m0[gl_InstanceIndex].Model * _53); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/postProc.frag.msl b/projects/minimal/content/_shaders/msl/postProc.frag.msl new file mode 100644 index 0000000..1c59719 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/postProc.frag.msl @@ -0,0 +1,59 @@ +#include +#include + +using namespace metal; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; +}; + +struct main0_in +{ + float2 in_var_TEXCOORD0 [[user(locn0)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], texture2d ColorTexture [[texture(0)]], texture2d EmissiveTexture [[texture(1)]], texture2d SsaoTexture [[texture(2)]], sampler Sampler0 [[sampler(0)]], sampler Sampler1 [[sampler(1)]], sampler Sampler2 [[sampler(2)]]) +{ + main0_out out = {}; + float2 _51 = in.in_var_TEXCOORD0; + _51.y = (_51.y * (-1.0)) + 1.0; + float4 _59 = ColorTexture.sample(Sampler0, _51); + float3 _60 = _59.xyz; + float3 _74; + int _77; + _74 = EmissiveTexture.sample(Sampler1, _51).xyz * 0.2270270287990570068359375; + _77 = 0; + float3 _75; + for (; _77 < 5; _74 = _75, _77++) + { + _75 = _74; + for (int _85 = 0; _85 < 5; ) + { + float2 _93 = float2(float(_77) - 2.5, float(_85)) * float2(0.001953125); + _75 = (_75 + (EmissiveTexture.sample(Sampler1, (_51 + _93)).xyz * float3(0.039999999105930328369140625))) + (EmissiveTexture.sample(Sampler1, (_51 - _93)).xyz * float3(0.039999999105930328369140625)); + _85++; + continue; + } + } + float3 _109; + int _112; + _109 = float3(0.0); + _112 = 0; + float3 _110; + for (; _112 < 5; _109 = _110, _112++) + { + _110 = _109; + for (int _120 = 0; _120 < 5; ) + { + float2 _128 = float2(float(_112) - 2.5, float(_120)) * float2(0.0009765625); + _110 = (_110 + (SsaoTexture.sample(Sampler2, (_51 + _128)).xyz * float3(0.0199999995529651641845703125))) + (SsaoTexture.sample(Sampler2, (_51 - _128)).xyz * float3(0.0199999995529651641845703125)); + _120++; + continue; + } + } + float3 _142 = ((powr((_60 * (float3(1.0) + (_60 * float3(0.00999999977648258209228515625)))) / (float3(1.0) + _60), float3(0.4545454680919647216796875)) + (_74 * 0.0500000007450580596923828125)) * 1.0) * _109; + out.out_var_SV_Target0 = float4(((_142.x * (1.0 + (9.9999999747524270787835121154785e-07 * EmissiveTexture.sample(Sampler1, _51).x))) * (1.0 + (9.9999999747524270787835121154785e-07 * ColorTexture.sample(Sampler0, _51).x))) * (1.0 + (9.9999999747524270787835121154785e-07 * SsaoTexture.sample(Sampler2, _51).x)), _142.yz, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/postProc.vert.msl b/projects/minimal/content/_shaders/msl/postProc.vert.msl new file mode 100644 index 0000000..ecdc597 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/postProc.vert.msl @@ -0,0 +1,25 @@ +#include +#include + +using namespace metal; + +struct main0_out +{ + float2 out_var_TEXCOORD0 [[user(locn0)]]; + float4 gl_Position [[position]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[attribute(0)]]; + float2 in_var_TEXCOORD3 [[attribute(3)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]]) +{ + main0_out out = {}; + out.out_var_TEXCOORD0 = in.in_var_TEXCOORD3; + out.gl_Position = float4(in.in_var_TEXCOORD0, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/rect.frag.msl b/projects/minimal/content/_shaders/msl/rect.frag.msl new file mode 100644 index 0000000..e38b4ac --- /dev/null +++ b/projects/minimal/content/_shaders/msl/rect.frag.msl @@ -0,0 +1,259 @@ +#include +#include + +using namespace metal; + +struct Scene +{ + float2 imagePosition; + float2 _imageSize; + float2 anchorPoint; + float2 scale; + float alpha; + float borderWidth; + uint flags; + float4 baseColor; + float4 rounding; + float4 edgeColor; +}; + +struct type_StructuredBuffer_Scene +{ + Scene _m0[1]; +}; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; +}; + +struct main0_in +{ + float4 in_var_TEXCOORD0 [[user(locn0)]]; + float2 in_var_TEXCOORD1 [[user(locn1)]]; + float2 in_var_TEXCOORD2 [[user(locn2)]]; + uint in_var_TEXCOORD3 [[user(locn3)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], const device type_StructuredBuffer_Scene& scene [[buffer(4294967295)]], texture2d Texture0 [[texture(0)]], sampler Sampler0 [[sampler(0)]]) +{ + main0_out out = {}; + bool _73 = in.in_var_TEXCOORD2.x < scene._m0[in.in_var_TEXCOORD3].rounding.x; + bool _80; + if (_73) + { + _80 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].rounding.y; + } + else + { + _80 = false; + } + float _97; + float3 _98; + if (_80) + { + float _84 = distance(in.in_var_TEXCOORD2, float2(scene._m0[in.in_var_TEXCOORD3].rounding.x)); + float _95; + float3 _96; + if (_84 > scene._m0[in.in_var_TEXCOORD3].rounding.x) + { + discard_fragment(); + } + else + { + if (abs(_84 - scene._m0[in.in_var_TEXCOORD3].rounding.x) < 1.0) + { + _95 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w; + _96 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz; + } + else + { + _95 = scene._m0[in.in_var_TEXCOORD3].alpha; + _96 = in.in_var_TEXCOORD0.xyz; + } + } + _97 = _95; + _98 = _96; + } + else + { + _97 = scene._m0[in.in_var_TEXCOORD3].alpha; + _98 = in.in_var_TEXCOORD0.xyz; + } + float _101 = scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.y; + bool _108; + if (in.in_var_TEXCOORD2.x > _101) + { + _108 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].rounding.y; + } + else + { + _108 = false; + } + float _125; + float3 _126; + if (_108) + { + float _112 = distance(in.in_var_TEXCOORD2, float2(_101, scene._m0[in.in_var_TEXCOORD3].rounding.y)); + float _123; + float3 _124; + if (_112 > scene._m0[in.in_var_TEXCOORD3].rounding.y) + { + discard_fragment(); + } + else + { + if (abs(_112 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0) + { + _123 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w; + _124 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz; + } + else + { + _123 = _97; + _124 = _98; + } + } + _125 = _123; + _126 = _124; + } + else + { + _125 = _97; + _126 = _98; + } + bool _134; + if (_73) + { + _134 = in.in_var_TEXCOORD2.y > (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].rounding.y); + } + else + { + _134 = false; + } + float _153; + float3 _154; + if (_134) + { + float _140 = distance(in.in_var_TEXCOORD2, float2(scene._m0[in.in_var_TEXCOORD3].rounding.x, scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].rounding.y)); + float _151; + float3 _152; + if (_140 > scene._m0[in.in_var_TEXCOORD3].rounding.y) + { + discard_fragment(); + } + else + { + if (abs(_140 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0) + { + _151 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w; + _152 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz; + } + else + { + _151 = _125; + _152 = _126; + } + } + _153 = _151; + _154 = _152; + } + else + { + _153 = _125; + _154 = _126; + } + bool _165; + if (in.in_var_TEXCOORD2.x > (scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.w)) + { + _165 = (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - in.in_var_TEXCOORD2.y) < scene._m0[in.in_var_TEXCOORD3].rounding.w; + } + else + { + _165 = false; + } + float _185; + float3 _186; + if (_165) + { + float _172 = distance(in.in_var_TEXCOORD2, float2(scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.x, scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].rounding.y)); + float _183; + float3 _184; + if (_172 > scene._m0[in.in_var_TEXCOORD3].rounding.y) + { + discard_fragment(); + } + else + { + if (abs(_172 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0) + { + _183 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w; + _184 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz; + } + else + { + _183 = _153; + _184 = _154; + } + } + _185 = _183; + _186 = _184; + } + else + { + _185 = _153; + _186 = _154; + } + bool _193; + if (!(in.in_var_TEXCOORD2.x < scene._m0[in.in_var_TEXCOORD3].borderWidth)) + { + _193 = in.in_var_TEXCOORD2.x > (scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].borderWidth); + } + else + { + _193 = true; + } + bool _200; + if (!_193) + { + _200 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].borderWidth; + } + else + { + _200 = true; + } + bool _209; + if (!_200) + { + _209 = in.in_var_TEXCOORD2.y > (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].borderWidth); + } + else + { + _209 = true; + } + float _214; + float3 _215; + if (_209) + { + _214 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w; + _215 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz; + } + else + { + _214 = _185; + _215 = _186; + } + float4 _241; + if ((scene._m0[in.in_var_TEXCOORD3].flags & 1u) > 0u) + { + float4 _229 = Texture0.sample(Sampler0, float2(in.in_var_TEXCOORD1.x, 1.0 - in.in_var_TEXCOORD1.y)); + _241 = float4(_229.xyz, _229.w * _214); + } + else + { + _241 = float4(powr(_215, float3(2.2000000476837158203125)), _214); + } + out.out_var_SV_Target0 = _241; + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/rect.vert.msl b/projects/minimal/content/_shaders/msl/rect.vert.msl new file mode 100644 index 0000000..23538c3 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/rect.vert.msl @@ -0,0 +1,59 @@ +#include +#include + +using namespace metal; + +struct Scene +{ + float2 imagePosition; + float2 _imageSize; + float2 anchorPoint; + float2 scale; + float alpha; + float borderWidth; + uint flags; + float4 baseColor; + float4 rounding; + float4 edgeColor; +}; + +struct type_StructuredBuffer_Scene +{ + Scene _m0[1]; +}; + +struct type_Uniforms +{ + float2 Extents; +}; + +struct main0_out +{ + float4 out_var_TEXCOORD0 [[user(locn0)]]; + float2 out_var_TEXCOORD1 [[user(locn1)]]; + float2 out_var_TEXCOORD2 [[user(locn2)]]; + uint out_var_TEXCOORD3 [[user(locn3)]]; + float4 gl_Position [[position]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[attribute(0)]]; + float2 in_var_TEXCOORD3 [[attribute(3)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], const device type_StructuredBuffer_Scene& scene [[buffer(1)]], uint gl_InstanceIndex [[instance_id]]) +{ + main0_out out = {}; + float2 _63 = scene._m0[gl_InstanceIndex]._imageSize / Uniforms.Extents; + float2 _69 = (((scene._m0[gl_InstanceIndex].imagePosition / Uniforms.Extents) * 2.0) - float2(1.0)) - ((scene._m0[gl_InstanceIndex].anchorPoint * _63) * scene._m0[gl_InstanceIndex].scale); + float2 _99 = ((in.in_var_TEXCOORD0.xy - scene._m0[gl_InstanceIndex].anchorPoint) * float2(0.5)) * scene._m0[gl_InstanceIndex]._imageSize; + _99.y = scene._m0[gl_InstanceIndex]._imageSize.y - _99.y; + out.out_var_TEXCOORD0 = scene._m0[gl_InstanceIndex].baseColor; + out.out_var_TEXCOORD1 = float2(1.0 - in.in_var_TEXCOORD3.x, in.in_var_TEXCOORD3.y); + out.out_var_TEXCOORD2 = _99; + out.out_var_TEXCOORD3 = gl_InstanceIndex; + out.gl_Position = float4(_69.x + ((in.in_var_TEXCOORD0.x * _63.x) * scene._m0[gl_InstanceIndex].scale.x), _69.y + (((-in.in_var_TEXCOORD0.y) * _63.y) * scene._m0[gl_InstanceIndex].scale.y), in.in_var_TEXCOORD0.z, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/sample.frag.msl b/projects/minimal/content/_shaders/msl/sample.frag.msl new file mode 100644 index 0000000..e9e2dad --- /dev/null +++ b/projects/minimal/content/_shaders/msl/sample.frag.msl @@ -0,0 +1,22 @@ +#include +#include + +using namespace metal; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; +}; + +struct main0_in +{ + float4 in_var_TEXCOORD0 [[user(locn0)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]]) +{ + main0_out out = {}; + out.out_var_SV_Target0 = in.in_var_TEXCOORD0; + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/sample.vert.msl b/projects/minimal/content/_shaders/msl/sample.vert.msl new file mode 100644 index 0000000..15b45b2 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/sample.vert.msl @@ -0,0 +1,66 @@ +#include +#include + +using namespace metal; + +struct Scene +{ + float3 color; +}; + +struct type_StructuredBuffer_Scene +{ + Scene _m0[1]; +}; + +constant float2 _31 = {}; +constant float4 _32 = {}; + +struct main0_out +{ + float4 out_var_TEXCOORD0 [[user(locn0)]]; + float4 gl_Position [[position]]; +}; + +vertex main0_out main0(const device type_StructuredBuffer_Scene& test [[buffer(0)]], uint gl_VertexIndex [[vertex_id]]) +{ + main0_out out = {}; + float4 _71; + float2 _72; + if (gl_VertexIndex == 0u) + { + _71 = float4(test._m0[0u].color, 1.0); + _72 = float2(-1.0); + } + else + { + float4 _69; + float2 _70; + if (gl_VertexIndex == 1u) + { + _69 = float4(test._m0[1u].color, 1.0); + _70 = float2(1.0, -1.0); + } + else + { + bool _57 = gl_VertexIndex == 2u; + float4 _66; + if (_57) + { + _66 = float4(test._m0[2u].color, 1.0); + } + else + { + _66 = _32; + } + _69 = _66; + _70 = select(_31, float2(0.0, 1.0), bool2(_57)); + } + _71 = _69; + _72 = _70; + } + out.out_var_TEXCOORD0 = _71; + out.gl_Position = float4(_72, 0.0, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/skybox.frag.msl b/projects/minimal/content/_shaders/msl/skybox.frag.msl new file mode 100644 index 0000000..1abee72 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/skybox.frag.msl @@ -0,0 +1,32 @@ +#include +#include + +using namespace metal; + +struct type_Uniforms +{ + float brightnessFactor; +}; + +constant float4 _28 = {}; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; + float4 out_var_SV_Target1 [[color(1)]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[user(locn0)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], texturecube SkyboxTexture [[texture(0)]], sampler SkyboxSampler [[sampler(0)]]) +{ + main0_out out = {}; + float4 _38 = SkyboxTexture.sample(SkyboxSampler, in.in_var_TEXCOORD0) * Uniforms.brightnessFactor; + out.out_var_SV_Target0 = _38; + out.out_var_SV_Target1 = select(_28, _38, bool4(length(_38) > 1.0)); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/skybox.vert.msl b/projects/minimal/content/_shaders/msl/skybox.vert.msl new file mode 100644 index 0000000..63e7121 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/skybox.vert.msl @@ -0,0 +1,29 @@ +#include +#include + +using namespace metal; + +struct type_Uniforms +{ + float4x4 ViewProjection; +}; + +struct main0_out +{ + float3 out_var_TEXCOORD0 [[user(locn0)]]; + float4 gl_Position [[position]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[attribute(0)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]]) +{ + main0_out out = {}; + out.out_var_TEXCOORD0 = in.in_var_TEXCOORD0; + out.gl_Position = Uniforms.ViewProjection * float4(in.in_var_TEXCOORD0, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/ssao.frag.msl b/projects/minimal/content/_shaders/msl/ssao.frag.msl new file mode 100644 index 0000000..0b8c1d0 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/ssao.frag.msl @@ -0,0 +1,124 @@ +#pragma clang diagnostic ignored "-Wmissing-prototypes" +#pragma clang diagnostic ignored "-Wmissing-braces" + +#include +#include + +using namespace metal; + +template +struct spvUnsafeArray +{ + T elements[Num ? Num : 1]; + + thread T& operator [] (size_t pos) thread + { + return elements[pos]; + } + constexpr const thread T& operator [] (size_t pos) const thread + { + return elements[pos]; + } + + device T& operator [] (size_t pos) device + { + return elements[pos]; + } + constexpr const device T& operator [] (size_t pos) const device + { + return elements[pos]; + } + + constexpr const constant T& operator [] (size_t pos) const constant + { + return elements[pos]; + } + + threadgroup T& operator [] (size_t pos) threadgroup + { + return elements[pos]; + } + constexpr const threadgroup T& operator [] (size_t pos) const threadgroup + { + return elements[pos]; + } +}; + +struct type_Uniforms +{ + float4x4 View; + float4x4 ViewProjection; + float4x4 Projection; + float2 extents; + float radius; + float bias0; + int numSamples; +}; + +constant spvUnsafeArray _314 = spvUnsafeArray({ float3(0.0), float3(0.00039307403494603931903839111328125, 0.00020744701032526791095733642578125, 0.02340200729668140411376953125), float3(-0.001318361726589500904083251953125, -0.001457856036722660064697265625, 0.01546739041805267333984375), float3(0.0003496186691336333751678466796875, 8.4181214333511888980865478515625e-05, 0.058608897030353546142578125), float3(-0.0005043491837568581104278564453125, -0.00383304059505462646484375, 0.02929248847067356109619140625), float3(-0.00241771643050014972686767578125, 0.0057135238312184810638427734375, 0.01733645610511302947998046875), float3(-0.0007101023220457136631011962890625, 0.000413290224969387054443359375, 0.0375200845301151275634765625), float3(1.5587833331665024161338806152344e-05, -0.00011572847870411351323127746582031, 0.073567919433116912841796875), float3(0.00334032182581722736358642578125, -0.0051653436385095119476318359375, 0.050431825220584869384765625), float3(-0.0063966461457312107086181640625, 0.01290071941912174224853515625, 0.00147703452967107295989990234375), float3(0.007907788269221782684326171875, -0.0049759554676711559295654296875, 0.001991991885006427764892578125), float3(-0.0003332807100377976894378662109375, -0.00100087863393127918243408203125, 0.001031001214869320392608642578125), float3(0.00011193146201549097895622253417969, 0.00036116360570304095745086669921875, 0.010905899107456207275390625), float3(-0.00385366589762270450592041015625, -0.004629385657608509063720703125, 0.027080766856670379638671875), float3(-0.0055218120105564594268798828125, 0.0163907893002033233642578125, 0.0033264369703829288482666015625), float3(-0.00297828204929828643798828125, -0.00340225151740014553070068359375, 0.009606515057384967803955078125), float3(0.0005643319454975426197052001953125, -0.00123721174895763397216796875, 0.01142332889139652252197265625), float3(0.0042646829970180988311767578125, 0.001690786913968622684478759765625, 0.00338359293527901172637939453125), float3(0.028113491833209991455078125, -0.01881640218198299407958984375, 0.0140878893435001373291015625), float3(-0.03022454865276813507080078125, -0.000894616474397480487823486328125, 0.0849911272525787353515625), float3(-0.01961914263665676116943359375, -0.0350324176251888275146484375, 0.014081305824220180511474609375), float3(0.015496986918151378631591796875, -0.010903127491474151611328125, 0.00180752319283783435821533203125), float3(0.0196535401046276092529296875, 0.01710924692451953887939453125, 0.0142847932875156402587890625), float3(-0.02892612479627132415771484375, 0.00322483875788748264312744140625, 0.06573773920536041259765625), float3(-0.0016983882524073123931884765625, 0.0004074592725373804569244384765625, 0.00372933782637119293212890625), float3(-0.0335367508232593536376953125, 0.0591063164174556732177734375, 0.01477129198610782623291015625), float3(0.01729742996394634246826171875, 0.02095410041511058807373046875, 0.061427496373653411865234375), float3(-0.0362440533936023712158203125, -0.01097334362566471099853515625, 0.052580632269382476806640625), float3(-0.010873113758862018585205078125, 0.071666888892650604248046875, 0.07090236246585845947265625), float3(0.0404303781688213348388671875, -0.0758908092975616455078125, 0.066407024860382080078125), float3(0.006424785591661930084228515625, -0.00888848863542079925537109375, 0.00571323931217193603515625), float3(-0.0424978695809841156005859375, 0.122786454856395721435546875, 0.03013108484447002410888671875), float3(-0.012614764273166656494140625, -0.01173587143421173095703125, 0.0161450766026973724365234375), float3(0.02246730588376522064208984375, -0.023659668862819671630859375, 0.01735904999077320098876953125), float3(0.0280994363129138946533203125, -0.0286351330578327178955078125, 0.0076164784841239452362060546875), float3(0.0701790750026702880859375, -0.1532168686389923095703125, 0.0887149870395660400390625), float3(0.0073889424093067646026611328125, 0.152280390262603759765625, 0.00664083100855350494384765625), float3(0.07831905782222747802734375, -0.072104983031749725341796875, 0.094614334404468536376953125), float3(0.03289596736431121826171875, -0.0408993400633335113525390625, 0.040609411895275115966796875), float3(-0.141404449939727783203125, 0.17826557159423828125, 0.067046172916889190673828125), float3(0.108955644071102142333984375, 0.1114947497844696044921875, 0.21018303930759429931640625), float3(0.02759261615574359893798828125, 0.0139005817472934722900390625, 0.036677159368991851806640625), float3(0.05564410984516143798828125, -0.099730752408504486083984375, 0.113144241273403167724609375), float3(-0.0315654389560222625732421875, -0.22426509857177734375, 0.23739193379878997802734375), float3(-0.0474216155707836151123046875, 0.00566783733665943145751953125, 0.1736856400966644287109375), float3(0.088452465832233428955078125, 0.096331931650638580322265625, 0.083578832447528839111328125), float3(-0.0036428333260118961334228515625, 0.010955554433166980743408203125, 0.00330849713645875453948974609375), float3(-0.1911892592906951904296875, -0.18971312046051025390625, 0.1564487516880035400390625), float3(0.034361146390438079833984375, 0.0655452907085418701171875, 0.0308254323899745941162109375), float3(0.371889293193817138671875, 0.0229042805731296539306640625, 0.2982411682605743408203125), float3(-0.014679887332022190093994140625, 0.01349230110645294189453125, 0.00740495882928371429443359375), float3(-0.00653826631605625152587890625, -0.0058869807980954647064208984375, 0.005725885741412639617919921875), float3(-0.2333120405673980712890625, -0.35499393939971923828125, 0.03432808816432952880859375), float3(0.0411357469856739044189453125, -0.023320116102695465087890625, 0.01891444809734821319580078125), float3(-0.0945928990840911865234375, 0.02529100514948368072509765625, 0.092956520617008209228515625), float3(-0.0317381806671619415283203125, 0.226026356220245361328125, 0.2367977797985076904296875), float3(-0.3801217377185821533203125, 0.2481244504451751708984375, 0.47917068004608154296875), float3(0.13565014302730560302734375, 0.13791494071483612060546875, 0.4077457487583160400390625), float3(0.523879945278167724609375, -0.388758122920989990234375, 0.24387760460376739501953125), float3(-0.0520826168358325958251953125, -0.118409633636474609375, 0.095709107816219329833984375), float3(0.122609488666057586669921875, -0.4220634996891021728515625, 0.178109467029571533203125), float3(-0.2801954448223114013671875, -0.520291268825531005859375, 0.26809024810791015625), float3(-0.3271856009960174560546875, 0.23393590748310089111328125, 0.098123751580715179443359375), float3(0.3826406896114349365234375, 0.08367092907428741455078125, 0.257561206817626953125) }); + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; +}; + +struct main0_in +{ + float2 in_var_TEXCOORD0 [[user(locn0)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], texture2d PositionTexture [[texture(0)]], texture2d NormalTexture [[texture(1)]], texture2d NoiseTexture [[texture(2)]], sampler Sampler0 [[sampler(0)]], sampler Sampler1 [[sampler(1)]], sampler Sampler2 [[sampler(2)]]) +{ + main0_out out = {}; + float2 _318 = in.in_var_TEXCOORD0; + float4 _425; + do + { + _318.y = (_318.y * (-1.0)) + 1.0; + float4 _330 = PositionTexture.sample(Sampler0, _318); + float4 _331 = Uniforms.View * _330; + float3 _332 = _331.xyz; + float _333 = _331.z; + if (_333 < 0.00999999977648258209228515625) + { + _425 = float4(1.0); + break; + } + float4 _340 = NormalTexture.sample(Sampler1, _318); + float3 _341 = _340.xyz; + float4 _346 = NoiseTexture.sample(Sampler2, (_318 * float2(320.0, 180.0))); + float3 _348 = fast::normalize(_346.xyz); + float3 _352 = fast::normalize(_348 - (_341 * dot(_348, _341))); + float3x3 _355 = transpose(float3x3(_352, cross(_341, _352), _341)); + float _357; + _357 = 0.0; + float _358; + for (int _360 = 0; _360 < Uniforms.numSamples; _357 = _358, _360++) + { + float3 _374 = _332 + (((_314[_360] + float3(0.0, 0.0, 0.0500000007450580596923828125)) * _355) * Uniforms.radius); + float _377 = _374.z; + float4 _381 = Uniforms.Projection * float4(_374.xy, _377, 1.0); + float3 _388 = ((_381.xyz / float3(_381.w)).xyz * 0.5) + float3(0.5); + float4 _389 = float4(_388.x, _388.y, _388.z, _381.w); + _389.y = (_388.y * (-1.0)) + 1.0; + float4 _396 = PositionTexture.sample(Sampler0, _389.xy); + float4 _397 = Uniforms.View * _396; + float _398 = _397.z; + float _409 = _357 + (float(_398 <= (_377 - Uniforms.bias0)) * smoothstep(0.0, 1.0, Uniforms.radius / abs(_333 - _398))); + if (_377 > 30.0) + { + _358 = _409 * precise::max(0.0, 1.0 - ((_377 - 30.0) * 0.0033333334140479564666748046875)); + } + else + { + _358 = _409; + } + } + float _420 = 1.0 - (_357 / float(Uniforms.numSamples)); + _425 = float4(_420) + float4(_420 * 9.9999997473787516355514526367188e-06); + break; + } while(false); + out.out_var_SV_Target0 = _425; + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/test.vert.msl b/projects/minimal/content/_shaders/msl/test.vert.msl new file mode 100644 index 0000000..564cda3 --- /dev/null +++ b/projects/minimal/content/_shaders/msl/test.vert.msl @@ -0,0 +1,66 @@ +#include +#include + +using namespace metal; + +struct Scene +{ + float4 color; +}; + +struct type_StructuredBuffer_Scene +{ + Scene _m0[1]; +}; + +constant float2 _30 = {}; +constant float4 _31 = {}; + +struct main0_out +{ + float4 out_var_TEXCOORD0 [[user(locn0)]]; + float4 gl_Position [[position]]; +}; + +vertex main0_out main0(const device type_StructuredBuffer_Scene& test [[buffer(0)]], uint gl_VertexIndex [[vertex_id]]) +{ + main0_out out = {}; + float4 _58; + float2 _59; + if (gl_VertexIndex == 0u) + { + _58 = test._m0[0u].color; + _59 = float2(-1.0); + } + else + { + float4 _56; + float2 _57; + if (gl_VertexIndex == 1u) + { + _56 = test._m0[1u].color; + _57 = float2(1.0, -1.0); + } + else + { + bool _48 = gl_VertexIndex == 2u; + float4 _53; + if (_48) + { + _53 = test._m0[2u].color; + } + else + { + _53 = _31; + } + _56 = _53; + _57 = select(_30, float2(0.0, 1.0), bool2(_48)); + } + _58 = _56; + _59 = _57; + } + out.out_var_TEXCOORD0 = _58; + out.gl_Position = float4(_59, 0.0, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/text.frag.msl b/projects/minimal/content/_shaders/msl/text.frag.msl new file mode 100644 index 0000000..2aec7dc --- /dev/null +++ b/projects/minimal/content/_shaders/msl/text.frag.msl @@ -0,0 +1,100 @@ +#include +#include + +using namespace metal; + +struct FontInfo +{ + float2 position; + float size; + uint isSdf; + uint pad0; + packed_float2 pad2; + char _m0_final_padding[4]; +}; + +struct type_StructuredBuffer_FontInfo +{ + FontInfo _m0[1]; +}; + +struct main0_out +{ + float4 out_var_SV_Target0 [[color(0)]]; +}; + +struct main0_in +{ + float4 in_var_TEXCOORD0 [[user(locn0)]]; + float2 in_var_TEXCOORD1 [[user(locn1)]]; + float2 in_var_TEXCOORD2 [[user(locn2)]]; + uint in_var_TEXCOORD3 [[user(locn3)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], const device type_StructuredBuffer_FontInfo& fontBuffer [[buffer(4294967295)]], texture2d Texture0 [[texture(0)]], sampler Sampler0 [[sampler(0)]]) +{ + main0_out out = {}; + float4 _64 = Texture0.sample(Sampler0, in.in_var_TEXCOORD1); + bool _99; + do + { + bool _81; + if (in.in_var_TEXCOORD2.x >= fontBuffer._m0[in.in_var_TEXCOORD3].position.x) + { + _81 = in.in_var_TEXCOORD2.x <= (fontBuffer._m0[in.in_var_TEXCOORD3].position.x + fontBuffer._m0[in.in_var_TEXCOORD3].size); + } + else + { + _81 = false; + } + bool _88; + if (_81) + { + _88 = in.in_var_TEXCOORD2.y >= fontBuffer._m0[in.in_var_TEXCOORD3].position.y; + } + else + { + _88 = false; + } + bool _96; + if (_88) + { + _96 = in.in_var_TEXCOORD2.y <= (fontBuffer._m0[in.in_var_TEXCOORD3].position.y + fontBuffer._m0[in.in_var_TEXCOORD3].size); + } + else + { + _96 = false; + } + if (_96) + { + _99 = true; + break; + } + _99 = false; + break; + } while(false); + if (!_99) + { + discard_fragment(); + } + float4 _170; + if (fontBuffer._m0[in.in_var_TEXCOORD3].isSdf == 1u) + { + float _107 = _64.x; + float _108 = fwidth(_107); + float _109 = 0.529411792755126953125 - _108; + float _110 = 0.529411792755126953125 + _108; + float2 _116 = (dfdx(in.in_var_TEXCOORD1) + dfdy(in.in_var_TEXCOORD1)) * 0.3540000021457672119140625; + float4 _123 = float4(in.in_var_TEXCOORD1 - _116, in.in_var_TEXCOORD1 + _116); + float4 _157 = float4(in.in_var_TEXCOORD0.xyz, (fast::clamp(smoothstep(_109, _110, _107), 0.0, 1.0) + (0.5 * (((fast::clamp(smoothstep(_109, _110, Texture0.sample(Sampler0, _123.xy).x), 0.0, 1.0) + fast::clamp(smoothstep(_109, _110, Texture0.sample(Sampler0, _123.zw).x), 0.0, 1.0)) + fast::clamp(smoothstep(_109, _110, Texture0.sample(Sampler0, _123.xw).x), 0.0, 1.0)) + fast::clamp(smoothstep(_109, _110, Texture0.sample(Sampler0, _123.zy).x), 0.0, 1.0)))) * 0.3333333432674407958984375); + float3 _159 = powr(_157.xyz, float3(2.2000000476837158203125)); + _170 = float4(_159.x, _159.y, _159.z, _157.w); + } + else + { + _170 = float4(in.in_var_TEXCOORD0.xyz, powr(_64.x / dot(in.in_var_TEXCOORD0.xyz, float3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875)), 0.4545454680919647216796875)); + } + out.out_var_SV_Target0 = _170; + return out; +} + diff --git a/projects/minimal/content/_shaders/msl/text.vert.msl b/projects/minimal/content/_shaders/msl/text.vert.msl new file mode 100644 index 0000000..090e1cc --- /dev/null +++ b/projects/minimal/content/_shaders/msl/text.vert.msl @@ -0,0 +1,53 @@ +#include +#include + +using namespace metal; + +struct FontInfo +{ + float2 position; + float size; + uint isSdf; + uint pad0; + packed_float2 pad2; + char _m0_final_padding[4]; +}; + +struct type_StructuredBuffer_FontInfo +{ + FontInfo _m0[1]; +}; + +struct type_Uniforms +{ + float2 Extents; +}; + +struct main0_out +{ + float4 out_var_TEXCOORD0 [[user(locn0)]]; + float2 out_var_TEXCOORD1 [[user(locn1)]]; + float2 out_var_TEXCOORD2 [[user(locn2)]]; + uint out_var_TEXCOORD3 [[user(locn3)]]; + float4 gl_Position [[position]]; +}; + +struct main0_in +{ + float3 in_var_TEXCOORD0 [[attribute(0)]]; + float4 in_var_TEXCOORD2 [[attribute(2)]]; + float2 in_var_TEXCOORD3 [[attribute(3)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], const device type_StructuredBuffer_FontInfo& fontBuffer [[buffer(1)]], uint gl_InstanceIndex [[instance_id]]) +{ + main0_out out = {}; + float2 _51 = in.in_var_TEXCOORD0.xy + fontBuffer._m0[gl_InstanceIndex].position; + out.out_var_TEXCOORD0 = in.in_var_TEXCOORD2; + out.out_var_TEXCOORD1 = in.in_var_TEXCOORD3; + out.out_var_TEXCOORD2 = _51; + out.out_var_TEXCOORD3 = gl_InstanceIndex; + out.gl_Position = float4(((_51 / Uniforms.Extents) * 2.0) + float2(-1.0), in.in_var_TEXCOORD0.z, 1.0); + return out; +} + diff --git a/projects/minimal/content/_shaders/spv/debug.frag.spv b/projects/minimal/content/_shaders/spv/debug.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..103f69a42fc67a069402adca8cb4619abef8cdc4 GIT binary patch literal 604 zcmZXRNlOD!5QN)FqH)V&Ty7HaCp$g6Ym)BV#-rYY8^Xb#$4Anh-|7m@->Yp4}VBfLL@e%9$ z8|x)D<7Ud&rQc)Ltn-|R_p=gv5Af+0dY#T0J-gsVsy_1SOH_5=p}tIYR=z{B73vPm zD%Jidd6-!rak=AOiS-j7;O?HYKKgv(+n^q^YmO#IzYk``t;Bh+8#wc|6Hoc!))J?8 iIoC;?e%E{l@3GEt-+6WapA*uVPtD%E_Fp7DXPaHNN>1{JFlE zc)spw=)@+q)phE0^{JW;%|@?dcE-$R?TLO_^VX=5ri;nW*}0Sb(SAN5Xvko+WNo)^ zI=`nxTl^Ve)z5EPx?7dgQ8g{IgSXT1I4jfLQ8vlMX_+oJADQ@V7YnkT;vhSe4;UIY zi^HOn=iFKOV^@WE#;J36eV*jwqC7fwXFIiOvoCq}V^|hnvr&~7Qs36!d2u4TkdEsq zpQPXS%kviDL zFK3sPpO=TjJuCXXA`j-jfuBjhR#lt+(YdBQeGw;OFUX@0j2wD7NA9XTIWX>Al;=)n zLVigeJ>c}W>~Q@!-;%DN*YmF_<}7^9U$0|yFX*Nl@?9}*%Cm>FDvySsiT6d!nHS2V zpLYdDjAq_Zh|$O%o#fGkh7hBPnSqf#dq9@qJS7|bTEF>n_B(%&mh Rh?$dT&%C+ouNco|{{X%AQThM? literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/spv/depthOnly.frag.spv b/projects/minimal/content/_shaders/spv/depthOnly.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..7e413c373689c1a6dac6ff05d95c15ea0e8751fe GIT binary patch literal 320 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 literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/spv/postProc.frag.spv b/projects/minimal/content/_shaders/spv/postProc.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..1fa98d90aa316bc25acff6edecef107be0a5c7dc GIT binary patch literal 3956 zcmZ9OS#woY5QPtc5G5E05FmgWj5FaPNJtnGqJVLT21pDz!qr?uB$r?Y1jitPIN>}` zC=SoQT4nj>lRono`~zBQl~sP<$?0(F?yAM^UaR*$y?gh*VRlt>O_Iz?lB6#AfqxzK zNma_!CUeudyQi6KXVZ&fyxLh16;mglu-Z45dI@Vu0J~25ao$~IH#*Y`vM@LFy(|mPu8AjhU zmFDIim&5HU508%zA1lQ+)$B6wQtbLzUn@6W9L>kgzZAD&I<6)?)9{hPvEo>vf7kvU zy}f&PX5X7W|LEjID)tQ==r4{9l_pTDsY1Rk)l}jNHq4!4=J4IbTDPnGAVc38=6!2( z4RB9&{nfysZ!Pk=eqOgOd0k)K+jqV7$?N)g-CE^!ef28fdh3?g^+R9E>FV&Cz#3w; z7l0(0`lSJXAyyNZ1=RKHbH4G50P)*n{o>S5l4Zm%!8XPkwon=U24GAe)-8ow_tPJp z5w{FqE)a3c;eP+Erz8AE{GZ#-wCbDR3gC!+R$`lDAl9vd`}M@3&RBOPzWpEi^c^>K zd5){$J%=@Iq?3))w=Qxq^c_vCX-ci>Jy#IrTajO#@!@+nvw+|5Tg}YwZJ!x`EwlBL zU(7z&F|UTXo>_Y(w*6~POVDp%-paZrW_!`0?|1DzN9gvNBXoPq5xTwP2;JUs=$p5B znY+GunzLNg@J8%;7n`@mUEG8(7l^o<;gV!(OADv44r_p%h?o}ac^5Ct?6nqOE)a1A zIL6l4YaNc9h!}nb%&Q~v@`pz*u!%gZZQQN3{u|F9o(@iFj<*8Ox`$ZrYh%V)kJA~~ zn(@A=lNq-OTi$-$%MH0#8<2NT*ZU3cvmJPc`u59a;2jR2dgoh!G4lI}v`4lAdG~bm zvch+_4X6o+-|>9rs@?&N@s7+@t`qov)FN&>wsC3^*M)7I{Ml^nZP>l;<~jmKGcVB3#z)}7e)W1MvtwlVT?);qA}E6>^urzRY6)^k~IcfuL73j9MA?qc?S zo&U^oy&Ky&@BALn1JwMDxfgf_wflhDkL>N+>jmomp8UnV?PgYY{EM%?2gv(PZFAV0 z`OcAp-!%_o`anO39PY<92ekp97CG$0R*xL^XF5}wgSzqZ=Ab=FZuap5!2C~f9{mS1 z&fmj`c?jG6cN1g(J`9YLw@>6A0rI{-`$Xyw`(p^2R%&hl|(;Gce8E zYxL%0aK@|$(VLHBTSqm|WFCW{GLI5mWgbt!$s6y8Jch8hQHLk7eSc~ZcNklK5%7B> z%zn=~da#V$0Nnow7zNRTN3rcewWoku^xzn_di3CUrZc5Is6GMY{ie1#OlH1wX%IOa$2JGG6F@C;cm`WNa(Fh=nbI88jh8nE?db96u+2Z-!SmR1`FHRFzWc{J zcoEw;`FICY*z#*Yyn~b2ZD0z-@83(v|4w7eyPqTa^9;6{ za8&l^D{#iF1<@a8v8}UOypvb4BhSd=HMq(=UWb!6-Vu4cfvqMSm3h1gXG}g1@7G+^ zqUXI=>l{5FJ>tFDGxnYL=NxP7NAEAz*we6b ztz&)%s5#tI?p@Fb)U2)Cd%!oQ7Hi+f_WO=l`vJDR@sZDm*zI65h4^Kfd8_~zHx z=5`)LZr@;=n_9$Oz&1a%sNc8P*3X^_?z@buV&2W)>SpHef$NP|ckfRA=Qf8~?LT&C G2mb?0-9n21 literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/spv/postProc.vert.spv b/projects/minimal/content/_shaders/spv/postProc.vert.spv new file mode 100644 index 0000000000000000000000000000000000000000..30bf6dbc24d8af1d4cb718ea47f8a34878d22961 GIT binary patch literal 656 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 Jr`>K!{s&D*%S-?O literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/spv/sample.frag.spv b/projects/minimal/content/_shaders/spv/sample.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..5f4c638e23641db1efc4f15b1ccafccbe170a4fc GIT binary patch literal 372 zcmYk0&kF%@5XHx?wSMJCiknvMo0F8dAjd5vH|;^%14{VYU6jw;wPk9)Gw;25Ghf#k z`ep?)YgnCE(KhGDxG9#}G~bF;^_MugN^nR`w0Om{h|V>SdO-AGG?QGzS9}k5tHUCS zHp>xIs>yqMK2mYJKknlD`Sd{bxb%N#4c4B%jD)bfIqrh=w}9-?>ArBr6|F?Cec}Vy z?4KF#u(=FBU`K_je#(qIx+$MW(nDs{%J?$k*6=j@e7_=96YegO|x B72yB? literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/spv/sample.vert.spv b/projects/minimal/content/_shaders/spv/sample.vert.spv new file mode 100644 index 0000000000000000000000000000000000000000..8e1453ee4a2459f9368105a056a570033ddb7d41 GIT binary patch literal 1848 zcmZ9MX-`v85QYzwsRqOY7^emTzUYj;!bCZIxL2I|f~c)a_Hc=xJr2(>>K(0XAl)IpmzI+e8yQR-XtbJN*5dR*yG45%CuGCLK#+WB!dXe>soPEfi zi0MZbGtRsNaPzkITgvt$HUtv;x`6B+)GNdc!mS~u?yl_9dChqSZcgt|`&qd8#e0c7 z2OkDG4_EF38-nZW9h=)8rqQkCU5lw(OWAtrk=y*Cx8ArurEE_ZGyhUnzk(dQ7)Ew? zl6{ZB?Zf<&OlNP_@!0DxETixle4X_Yr0+L;jk}y<-uX{zUx9o6;IC~Ax(b;`d4b8C z_ZsAkz9nPj)^G=Y587W+!<~-j80-L>$T52jzZ*Gbe;Z_X_f^Pv{k8iBe$$J6+LOJ- zEH{yz&o}5SezzWH(RLfU0~x0rv)o0FS&S{tat~d5^mrdx%oErovRHAJ2RT-pWeUuA z{k6v|_GwS{7PCA=b{4-4XL$toIE%JvNX$6pnB_5Y%wlYDmKk*I(f2H}m?y9~WU=Bb z^EpWC3=$o$nS6wxdJ(#arV2x+Zcf_LCzz6th8RJe?*Ixhs?{%6M3-u9WhKw;4v#npwv?*9*+zeaa*lq55adP54efAi> zVv0D+O`1_t(!C(-`e6?o7OX6rQUs?Wx)m*UB%rL^!@`n_v%otZv;!~f`klbyXq(?J z+WqrZaGngJKr#AJr;q*a*^eMnXz^R}slNG_KtJa62fgrHKkCMc$pX%4M`7nQ=>>88 z(LYZ5S-!Fv7nggY8Y6b5u;=~sBd_)0=-uAl{(HL%IA-k+5=%A@zqb6S6C`5c*uj6? z6S&epJ3~7mt=&gD-$}L-(~y>(uF5#X)Xc}!A?8cMv%@tRyLWL-cMdT-%k#u}o*lqb z7d^4#KdF1S!@6)zLrO5}%}ak7DPxA*N^c&mpEy_RU*j`l2qq5z_}f zfw`FPpK6M>zq^W=;hsEo(eLQH(Wl!feP1i$fAdlb=Dsf@4{OAIiY<_B-qAQO1*l{k+no?1h*+J4AD%YR_eV0Kx2GR{#J2 literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/spv/skybox.vert.spv b/projects/minimal/content/_shaders/spv/skybox.vert.spv new file mode 100644 index 0000000000000000000000000000000000000000..ca2947a54b9a88c26d64fe80b02695989c34e437 GIT binary patch literal 880 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 literal 0 HcmV?d00001 diff --git a/projects/minimal/content/_shaders/spv/text.frag.spv b/projects/minimal/content/_shaders/spv/text.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..ecf737d7bdf8c1eeabeedd01649b717d68e0da42 GIT binary patch literal 4432 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