From e68fe0613962d2370c60bdec944b0d9b3420e305 Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Mon, 22 Jul 2024 14:19:09 +0200 Subject: [PATCH] Allow to control depth test & write for shader --- openVulkanoCpp/Scene/Shader/Shader.hpp | 2 ++ openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/openVulkanoCpp/Scene/Shader/Shader.hpp b/openVulkanoCpp/Scene/Shader/Shader.hpp index 4bc87b3..484165d 100644 --- a/openVulkanoCpp/Scene/Shader/Shader.hpp +++ b/openVulkanoCpp/Scene/Shader/Shader.hpp @@ -78,6 +78,8 @@ namespace OpenVulkano::Scene CullMode cullMode = CullMode::BACK; ICloseable* renderShader = nullptr; bool alphaBlend = false; // TODO allow fine control over blending + bool depthTest = true; + bool depthWrite = true; Shader() = default; ~Shader() override { /*if (renderShader) Shader::Close();*/ } diff --git a/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp b/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp index 5ad6966..91fa821 100644 --- a/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp +++ b/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp @@ -80,7 +80,7 @@ namespace OpenVulkano::Vulkan vk::PipelineRasterizationStateCreateInfo rasterizer = {}; rasterizer.cullMode = static_cast(shader->cullMode); vk::PipelineMultisampleStateCreateInfo msaa = {}; - vk::PipelineDepthStencilStateCreateInfo depth = { {}, 1, 1, vk::CompareOp::eLess }; + vk::PipelineDepthStencilStateCreateInfo depth = { {}, shader->depthTest, shader->depthWrite, vk::CompareOp::eLess }; depth.maxDepthBounds = 1; vk::PipelineColorBlendAttachmentState colorBlendAttachment = {}; colorBlendAttachment.colorWriteMask = vk::ColorComponentFlagBits::eA | vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eG | vk::ColorComponentFlagBits::eR;