From aca8d1ab4d7fce3dd0dce4fce1fb390984357612 Mon Sep 17 00:00:00 2001 From: emil28092005 Date: Thu, 18 Jun 2026 12:47:20 +0300 Subject: [PATCH] fix: correct matrix order (proj*view) + Z depth range for Vulkan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - VP matrix order: proj*view (GLSL column-vector convention) - Z correction in vertex shader: gl_Position.z = (z+w)*0.5 (OpenGL [-1,1] → Vulkan [0,1]) - Depth test temporarily disabled for debugging --- .../Shaders/triangle.vert | 1 + .../Shaders/triangle.vert.spv | Bin 1880 -> 2100 bytes src/Engine.Graphics.Vulkan/VulkanPipeline.cs | 4 ++-- src/Engine.Graphics.Vulkan/VulkanRenderer.cs | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.vert b/src/Engine.Graphics.Vulkan/Shaders/triangle.vert index 9b81756..56154c8 100644 --- a/src/Engine.Graphics.Vulkan/Shaders/triangle.vert +++ b/src/Engine.Graphics.Vulkan/Shaders/triangle.vert @@ -17,6 +17,7 @@ layout(row_major, push_constant) uniform PC { void main() { gl_Position = vp * pc.model * vec4(inPosition, 1.0); + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; fragColor = inColor; fragNormal = mat3(pc.model) * inNormal; } diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.vert.spv b/src/Engine.Graphics.Vulkan/Shaders/triangle.vert.spv index b9f3c50d5f35dfe6c62faf446604e4d07c99808d..2c16878cb7dddf4544df23f17093c38aa3ad3c30 100644 GIT binary patch delta 693 zcmYk3+e$(~6ozNqZ8Kt5;)P*Yfkcqm`JkESU0zy`;7uY#g4cm`(F4f7>?y=vp?BzI zg8nb}Km$Ls*1!IBn)zP)+z7lxVc8gKR!z!ur$H~cGR9mB6(O7r3w96YY1|)lM$efcrZQ1aELpJdTEzK);1o|`uv~Ght*`YAie9Uq$poM2Ez6Mg?)(8S?3aAyg-f+#w&P- zTqfZAk{Ph!(XU>;s;;h|-NjDmd)0!Ovu)e5yJ^@D&&}*Yh=h1PthyS?`}pnSY4kZ7 ziwCx`aty!LN+2al=C0`C^w*ubV+sxg&U0oac3B)HORtok_}}jJNa-`lzJR5d#k4>p zKGe-bl;?S-BfqD7LpQbm{c$=7Dz0{~G^x5kiwBu#P5h{_%epU#d(KLc=I3J YipRoK^Q{+Uh8LY*v5=myRL8FH2ZGotA^-pY diff --git a/src/Engine.Graphics.Vulkan/VulkanPipeline.cs b/src/Engine.Graphics.Vulkan/VulkanPipeline.cs index c4b7544..45bf2ba 100644 --- a/src/Engine.Graphics.Vulkan/VulkanPipeline.cs +++ b/src/Engine.Graphics.Vulkan/VulkanPipeline.cs @@ -118,8 +118,8 @@ internal sealed unsafe class VulkanPipeline : IDisposable var depthStencilState = new VkPipelineDepthStencilStateCreateInfo { sType = VkStructureType.PipelineDepthStencilStateCreateInfo, - depthTestEnable = VkBool32.True, - depthWriteEnable = VkBool32.True, + depthTestEnable = VkBool32.False, + depthWriteEnable = VkBool32.False, depthCompareOp = VkCompareOp.Less, depthBoundsTestEnable = VkBool32.False, stencilTestEnable = VkBool32.False, diff --git a/src/Engine.Graphics.Vulkan/VulkanRenderer.cs b/src/Engine.Graphics.Vulkan/VulkanRenderer.cs index f77e23d..8b82534 100644 --- a/src/Engine.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Engine.Graphics.Vulkan/VulkanRenderer.cs @@ -273,8 +273,8 @@ internal sealed unsafe class VulkanRenderer : IRenderer, Engine.Graphics.IScreen { var aspect = (float)_swapchain.Extent.Width / (float)_swapchain.Extent.Height; var proj = Matrix4x4.CreatePerspectiveFieldOfView(MathF.PI / 4f, aspect, 0.1f, 100f); - var view = Matrix4x4.CreateLookAt(new Vector3(0, 0, -3), Vector3.Zero, Vector3.UnitY); - return view * proj; + var view = Matrix4x4.CreateLookAt(new Vector3(0, 0, 3), Vector3.Zero, Vector3.UnitY); + return proj * view; } private static void TransitionImageLayout(VkCommandBuffer cmd, VkImage image,