diff --git a/Assets/common/shader_datas.arm b/Assets/common/shader_datas.arm index 8c2f40eb..aa984926 100644 Binary files a/Assets/common/shader_datas.arm and b/Assets/common/shader_datas.arm differ diff --git a/Assets/creator/Scene.arm b/Assets/creator/Scene.arm index ae9ee60e..8e58aec9 100644 Binary files a/Assets/creator/Scene.arm and b/Assets/creator/Scene.arm differ diff --git a/Assets/creator/world_pass.arm b/Assets/creator/world_pass.arm index 3e08b8c4..8d36ff6c 100644 Binary files a/Assets/creator/world_pass.arm and b/Assets/creator/world_pass.arm differ diff --git a/Assets/painter/Scene.arm b/Assets/painter/Scene.arm index 31cad56c..722aba97 100644 Binary files a/Assets/painter/Scene.arm and b/Assets/painter/Scene.arm differ diff --git a/Assets/painter/metal/clear_pass.arm b/Assets/painter/metal/clear_pass.arm index 766d95f6..c85dfaab 100644 Binary files a/Assets/painter/metal/clear_pass.arm and b/Assets/painter/metal/clear_pass.arm differ diff --git a/Assets/painter/world_pass.arm b/Assets/painter/world_pass.arm index 724e0712..70d45fd3 100644 Binary files a/Assets/painter/world_pass.arm and b/Assets/painter/world_pass.arm differ diff --git a/Libraries/shaderlib/Sources/arm/node/MaterialShader.hx b/Libraries/shaderlib/Sources/arm/node/MaterialShader.hx index 8e536f65..04308162 100644 --- a/Libraries/shaderlib/Sources/arm/node/MaterialShader.hx +++ b/Libraries/shaderlib/Sources/arm/node/MaterialShader.hx @@ -43,7 +43,8 @@ class MaterialShaderContext { fragment_shader: '', vertex_shader: '', vertex_elements: Reflect.hasField(props, 'vertex_elements') ? props.vertex_elements : [ {name: "pos", data: 'short4norm'}, {name: "nor", data: 'short2norm'}], - color_attachments: props.color_attachments + color_attachments: props.color_attachments, + depth_attachment: props.depth_attachment }; if (props.color_writes_red != null) diff --git a/Sources/arm/render/RenderPathDeferred.hx b/Sources/arm/render/RenderPathDeferred.hx index d408928c..e5a26ec5 100644 --- a/Sources/arm/render/RenderPathDeferred.hx +++ b/Sources/arm/render/RenderPathDeferred.hx @@ -75,7 +75,6 @@ class RenderPathDeferred { t.height = 0; t.format = "RGBA64"; t.scale = Inc.getSuperSampling(); - t.depth_buffer = "main"; path.createRenderTarget(t); } { @@ -151,6 +150,7 @@ class RenderPathDeferred { path.loadShader("shader_datas/compositor_pass/compositor_pass"); path.loadShader("shader_datas/copy_pass/copy_pass"); path.loadShader("shader_datas/copy_pass/copyR8_pass"); + //path.loadShader("shader_datas/copy_pass/copyD32_pass"); path.loadShader("shader_datas/smaa_edge_detect/smaa_edge_detect"); path.loadShader("shader_datas/smaa_blend_weight/smaa_blend_weight"); path.loadShader("shader_datas/smaa_neighborhood_blend/smaa_neighborhood_blend"); @@ -333,9 +333,6 @@ class RenderPathDeferred { // --- // Deferred light // --- - #if (!kha_opengl) - path.setDepthFrom("tex", "gbuffer1"); // Unbind depth so we can read it - #end path.setTarget("tex"); path.bindTarget("_main", "gbufferD"); path.bindTarget("gbuffer0", "gbuffer0"); @@ -386,12 +383,16 @@ class RenderPathDeferred { #end #if (!kha_opengl) - path.setDepthFrom("tex", "gbuffer0"); // Re-bind depth + path.setDepthFrom("tex", "gbuffer0"); // Bind depth for world pass #end - path.setTarget("tex"); // Re-binds depth + path.setTarget("tex"); path.drawSkydome("world_pass/world_pass/world_pass"); + #if (!kha_opengl) + path.setDepthFrom("tex", "gbuffer1"); // Unbind depth + #end + if (Config.raw.rp_bloom != false) { if (path.renderTargets.get("bloomtex") == null) { diff --git a/Sources/arm/render/RenderPathPreview.hx b/Sources/arm/render/RenderPathPreview.hx index 777329c5..44ede059 100644 --- a/Sources/arm/render/RenderPathPreview.hx +++ b/Sources/arm/render/RenderPathPreview.hx @@ -39,7 +39,6 @@ class RenderPathPreview { t.height = RenderUtil.matPreviewSize; t.format = "RGBA64"; t.scale = Inc.getSuperSampling(); - t.depth_buffer = "mmain"; path.createRenderTarget(t); } @@ -100,9 +99,6 @@ class RenderPathPreview { // --- // Deferred light // --- - #if (!kha_opengl && !kha_direct3d12) - path.setDepthFrom("mtex", "mgbuffer1"); // Unbind depth so we can read it - #end path.setTarget("mtex"); path.bindTarget("_mmain", "gbufferD"); path.bindTarget("mgbuffer0", "gbuffer0"); @@ -113,7 +109,7 @@ class RenderPathPreview { path.drawShader("deferred_light/deferred_light/deferred_light"); #if (!kha_opengl && !kha_direct3d12) - path.setDepthFrom("mtex", "mgbuffer0"); // Re-bind depth + path.setDepthFrom("mtex", "mgbuffer0"); // Bind depth for world pass #end path.setTarget("mtex"); // Re-binds depth @@ -121,6 +117,10 @@ class RenderPathPreview { path.drawSkydome("world_pass/world_pass/world_pass"); #end + #if (!kha_opengl && !kha_direct3d12) + path.setDepthFrom("mtex", "mgbuffer1"); // Unbind depth + #end + var framebuffer = "texpreview"; var selectedMat = UIHeader.inst.worktab.position == SpaceRender ? Context.materialScene : Context.material; RenderPath.active.renderTargets.get("texpreview").image = selectedMat.image; @@ -152,9 +152,6 @@ class RenderPathPreview { // --- // Deferred light // --- - #if (!kha_opengl && !kha_direct3d12) - path.setDepthFrom("tex", "gbuffer1"); // Unbind depth so we can read it - #end path.setTarget("tex"); path.bindTarget("_main", "gbufferD"); path.bindTarget("gbuffer0", "gbuffer0"); @@ -165,12 +162,16 @@ class RenderPathPreview { path.drawShader("deferred_light/deferred_light/deferred_light"); #if (!kha_opengl && !kha_direct3d12) - path.setDepthFrom("tex", "gbuffer0"); // Re-bind depth + path.setDepthFrom("tex", "gbuffer0"); // Bind depth for world pass #end - path.setTarget("tex"); // Re-binds depth + path.setTarget("tex"); path.drawSkydome("world_pass/world_pass/world_pass"); + #if (!kha_opengl && !kha_direct3d12) + path.setDepthFrom("tex", "gbuffer1"); // Unbind depth + #end + var framebuffer = "texpreview"; RenderPath.active.renderTargets.get("texpreview").image = Context.decalImage;