diff --git a/modules/shader_compiler/config/Shady.cmake b/modules/shader_compiler/config/Shady.cmake index 92dd334df2367552822fed448528fff98f93a3c3..88e1f7b32de08c233901111fa89b371e86d1f0de 100644 --- a/modules/shader_compiler/config/Shady.cmake +++ b/modules/shader_compiler/config/Shady.cmake @@ -7,6 +7,11 @@ if (${shady_status}) add_subdirectory(${vkcv_shader_compiler_lib}/shady) - list(APPEND vkcv_shader_compiler_libraries shady) + if (vkcv_build_attribute EQUAL "SHARED") + list(APPEND vkcv_shader_compiler_libraries shady runtime) + else () + list(APPEND vkcv_shader_compiler_libraries common driver) + endif () + list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}/shady/include) endif () diff --git a/modules/shader_compiler/lib/shady b/modules/shader_compiler/lib/shady index 2e72e345035166d7fd2a0b94610cfc8fd603155b..0a92cf7ff4081d21db0724a8e66ab868b878df7d 160000 --- a/modules/shader_compiler/lib/shady +++ b/modules/shader_compiler/lib/shady @@ -1 +1 @@ -Subproject commit 2e72e345035166d7fd2a0b94610cfc8fd603155b +Subproject commit 0a92cf7ff4081d21db0724a8e66ab868b878df7d diff --git a/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp index 04435ae6b1580bfb783df67439f2810e9365fa77..c53904d402efd7117b6fc73356284624445c4f5c 100644 --- a/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp +++ b/modules/shader_compiler/src/vkcv/shader/LLVMCompiler.cpp @@ -4,7 +4,9 @@ #include <vkcv/File.hpp> #include <vkcv/Logger.hpp> -#include <shady/driver.h> +extern "C" { + #include <shady/driver.h> +} namespace vkcv::shader { @@ -87,10 +89,7 @@ namespace vkcv::shader { return false; } - bool result = shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); - - destroy_module(module); - return result; + return shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); } bool LLVMCompiler::compileSource(ShaderStage shaderStage, diff --git a/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp index 13319e2282dfd240caee4d3646edc51a15fa4f1f..6168fcfa2baa04b8a7f261db8828bfab8c2ed018 100644 --- a/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp +++ b/modules/shader_compiler/src/vkcv/shader/ShadyCompiler.cpp @@ -4,8 +4,6 @@ #include <vkcv/File.hpp> #include <vkcv/Logger.hpp> -#include <shady/driver.h> - namespace vkcv::shader { ShadyCompiler::ShadyCompiler() diff --git a/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp index 940ae7009d3426dc67a50bace829aad6e256cfcd..475d867b883d82a5c811e7ea1081b8fc45dfa0c6 100644 --- a/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp +++ b/modules/shader_compiler/src/vkcv/shader/SlimCompiler.cpp @@ -4,7 +4,9 @@ #include <vkcv/File.hpp> #include <vkcv/Logger.hpp> -#include <shady/driver.h> +extern "C" { + #include <shady/driver.h> +} namespace vkcv::shader { @@ -87,10 +89,7 @@ namespace vkcv::shader { return false; } - bool result = shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); - - destroy_module(module); - return result; + return shadyCompileModule(module, shaderStage, shaderSource, compiled, includePath); } bool SlimCompiler::compileSource(ShaderStage shaderStage, diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp index aae046da7f84bcf26017f5fe609732aa2e0e4df7..995c6aa34a359aa83e0f838cdb8e3226a3e80cfd 100644 --- a/projects/first_triangle/src/main.cpp +++ b/projects/first_triangle/src/main.cpp @@ -2,6 +2,7 @@ #include <vkcv/Core.hpp> #include <vkcv/Pass.hpp> #include <GLFW/glfw3.h> +#include <vkcv/ShaderProgram.hpp> #include <vkcv/camera/CameraManager.hpp> #include <vkcv/shader/GLSLCompiler.hpp> @@ -38,7 +39,7 @@ int main(int argc, const char** argv) { vkcv::shader::GLSLCompiler compiler; compiler.compileProgram(triangleShaderProgram, { - {vkcv::ShaderStage::VERTEX, "shaders/shader.vert"}, + { vkcv::ShaderStage::VERTEX, "shaders/shader.vert" }, { vkcv::ShaderStage::FRAGMENT, "shaders/shader.frag" } }, nullptr);