fix: correct matrix order (proj*view) + Z depth range for Vulkan

- 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
This commit is contained in:
emil28092005
2026-06-18 12:47:20 +03:00
parent d620bd537f
commit aca8d1ab4d
4 changed files with 5 additions and 4 deletions
@@ -17,6 +17,7 @@ layout(row_major, push_constant) uniform PC {
void main() { void main() {
gl_Position = vp * pc.model * vec4(inPosition, 1.0); gl_Position = vp * pc.model * vec4(inPosition, 1.0);
gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5;
fragColor = inColor; fragColor = inColor;
fragNormal = mat3(pc.model) * inNormal; fragNormal = mat3(pc.model) * inNormal;
} }
Binary file not shown.
+2 -2
View File
@@ -118,8 +118,8 @@ internal sealed unsafe class VulkanPipeline : IDisposable
var depthStencilState = new VkPipelineDepthStencilStateCreateInfo var depthStencilState = new VkPipelineDepthStencilStateCreateInfo
{ {
sType = VkStructureType.PipelineDepthStencilStateCreateInfo, sType = VkStructureType.PipelineDepthStencilStateCreateInfo,
depthTestEnable = VkBool32.True, depthTestEnable = VkBool32.False,
depthWriteEnable = VkBool32.True, depthWriteEnable = VkBool32.False,
depthCompareOp = VkCompareOp.Less, depthCompareOp = VkCompareOp.Less,
depthBoundsTestEnable = VkBool32.False, depthBoundsTestEnable = VkBool32.False,
stencilTestEnable = VkBool32.False, stencilTestEnable = VkBool32.False,
+2 -2
View File
@@ -273,8 +273,8 @@ internal sealed unsafe class VulkanRenderer : IRenderer, Engine.Graphics.IScreen
{ {
var aspect = (float)_swapchain.Extent.Width / (float)_swapchain.Extent.Height; var aspect = (float)_swapchain.Extent.Width / (float)_swapchain.Extent.Height;
var proj = Matrix4x4.CreatePerspectiveFieldOfView(MathF.PI / 4f, aspect, 0.1f, 100f); var proj = Matrix4x4.CreatePerspectiveFieldOfView(MathF.PI / 4f, aspect, 0.1f, 100f);
var view = Matrix4x4.CreateLookAt(new Vector3(0, 0, -3), Vector3.Zero, Vector3.UnitY); var view = Matrix4x4.CreateLookAt(new Vector3(0, 0, 3), Vector3.Zero, Vector3.UnitY);
return view * proj; return proj * view;
} }
private static void TransitionImageLayout(VkCommandBuffer cmd, VkImage image, private static void TransitionImageLayout(VkCommandBuffer cmd, VkImage image,