From 9c5cee9205f9e30bdc25041577ef43508aafa041 Mon Sep 17 00:00:00 2001 From: Lars Hoerttrich <larshoerttrich@uni-koblenz.de> Date: Sun, 5 Sep 2021 12:50:19 +0200 Subject: [PATCH] [#92] added shader compilation, currently commented due to errors --- include/vkcv/ShaderStage.hpp | 12 ++++++------ projects/rtx/src/main.cpp | 32 +++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/include/vkcv/ShaderStage.hpp b/include/vkcv/ShaderStage.hpp index 5281dd54..368cd9ae 100644 --- a/include/vkcv/ShaderStage.hpp +++ b/include/vkcv/ShaderStage.hpp @@ -13,12 +13,12 @@ namespace vkcv { COMPUTE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCompute), TASK = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTaskNV), MESH = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMeshNV), - RAYGEN = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eRaygenKHR), - ANY_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eAnyHitKHR), - CLOSEST_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eClosestHitKHR), - MISS = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMissKHR), - INTERSECTION = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eIntersectionKHR), - CALLABLE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCallableKHR) + RAY_GEN = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eRaygenKHR), + RAY_ANY_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eAnyHitKHR), + RAY_CLOSEST_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eClosestHitKHR), + RAY_MISS = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMissKHR), + RAY_INTERSECTION = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eIntersectionKHR), + RAY_CALLABLE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCallableKHR) }; using ShaderStages = vk::Flags<ShaderStage>; diff --git a/projects/rtx/src/main.cpp b/projects/rtx/src/main.cpp index 49222028..340669ae 100644 --- a/projects/rtx/src/main.cpp +++ b/projects/rtx/src/main.cpp @@ -123,9 +123,35 @@ int main(int argc, const char** argv) { const auto& material0 = scene.getMaterial(0); - // TODO -// vkcv::DescriptorSetLayoutHandle vertexShaderDescriptorSetLayout = core.createDescriptorSetLayout(bunnyShaderProgram.getReflectedDescriptors().at(0)); -// vkcv::DescriptorSetHandle vertexShaderDescriptorSet = core.createDescriptorSet(vertexShaderDescriptorSetLayout); + /* + vkcv::ShaderProgram rayGenShaderProgram; + compiler.compile(vkcv::ShaderStage::RAY_GEN, std::filesystem::path("resources/shaders/raytrace.rgen"), + [&rayGenShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) { + rayGenShaderProgram.addShader(shaderStage, path); + }); + + vkcv::ShaderProgram rayClosestHitShaderProgram; + compiler.compile(vkcv::ShaderStage::RAY_CLOSEST_HIT, std::filesystem::path("resources/shaders/raytrace.rchit"), + [&rayClosestHitShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) { + rayClosestHitShaderProgram.addShader(shaderStage, path); + }); + + vkcv::ShaderProgram rayMissShaderProgram; + compiler.compile(vkcv::ShaderStage::RAY_MISS, std::filesystem::path("resources/shaders/raytrace.rmiss"), + [&rayMissShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) { + rayMissShaderProgram.addShader(shaderStage, path); + }); + */ + + //TODO +// vkcv::DescriptorSetLayoutHandle rayGenShaderDescriptorSetLayout = core.createDescriptorSetLayout(rayGenShaderProgram.getReflectedDescriptors().at(0)); +// vkcv::DescriptorSetHandle rayGenShaderDescriptorSet = core.createDescriptorSet(rayGenShaderDescriptorSetLayout); + +// vkcv::DescriptorSetLayoutHandle rayClosestHitShaderDescriptorSetLayout = core.createDescriptorSetLayout(rayClosestHitShaderProgram.getReflectedDescriptors().at(0)); +// vkcv::DescriptorSetHandle rayGenShaderDescriptorSet = core.createDescriptorSet(rayClosestHitShaderDescriptorSetLayout); + +// vkcv::DescriptorSetLayoutHandle rayMissShaderDescriptorSetLayout = core.createDescriptorSetLayout(rayMissShaderProgram.getReflectedDescriptors().at(0)); +// vkcv::DescriptorSetHandle rayGenShaderDescriptorSet = core.createDescriptorSet(rayMissShaderDescriptorSetLayout); const vkcv::PipelineConfig scenePipelineDefinition{ sceneShaderProgram, -- GitLab