From ba27f3c22e79b91a2573b7efd00c5a3bbdb96dbc Mon Sep 17 00:00:00 2001 From: Chuyan Zhang Date: Thu, 10 Oct 2024 16:29:06 -0700 Subject: Update shader changes --- src/shader.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/shader.cpp') diff --git a/src/shader.cpp b/src/shader.cpp index 95a7904..1bef97f 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -6,7 +6,11 @@ namespace iris { -ShaderDesc::ShaderDesc(const std::string_view path) { +ShaderDesc::ShaderDesc( + const std::string_view path, + std::vector defines, + std::vector> valued_defines) +{ // Load the shader from file std::ifstream file("example.txt"); if (!file.is_open()) { @@ -16,6 +20,7 @@ ShaderDesc::ShaderDesc(const std::string_view path) { std::ostringstream file_stream; file_stream << file.rdbuf(); this->source = file_stream.str(); + this->entry_point = "main"; file.close(); // Determine the shader type @@ -35,6 +40,13 @@ ShaderDesc::ShaderDesc(const std::string_view path) { shaderc::Compiler compiler; shaderc::CompileOptions options; options.SetTargetEnvironment(shaderc_target_env_vulkan, shaderc_env_version_vulkan_1_3); + options.SetOptimizationLevel(shaderc_optimization_level_performance); + for (const auto &define : defines) { + options.AddMacroDefinition(define); + } + for (const auto &[key, value] : valued_defines) { + options.AddMacroDefinition(key, value); + } shaderc::SpvCompilationResult result = compiler.CompileGlslToSpv( this->source, shaderc_glsl_compute_shader, path.data(), options); @@ -56,6 +68,8 @@ ShaderDesc::Type ShaderDesc::shader_type_from_string(std::string_view type) { return ShaderDesc::Type::eAnyHit; } else if (type == "rint") { return ShaderDesc::Type::eIntersection; + } else if (type == "rcall") { + return ShaderDesc::Type::eCallable; } else if (type == "comp") { return ShaderDesc::Type::eCompute; } else { -- cgit v1.2.3-70-g09d2