diff --git a/modules/shader_compiler/src/vkcv/shader/SlangCompiler.cpp b/modules/shader_compiler/src/vkcv/shader/SlangCompiler.cpp
index a54d17bd9cdbd95f752b27ed81d48a58177ad86f..4879ede9b4cf6940ce4e5d87e910c85828e47037 100644
--- a/modules/shader_compiler/src/vkcv/shader/SlangCompiler.cpp
+++ b/modules/shader_compiler/src/vkcv/shader/SlangCompiler.cpp
@@ -107,6 +107,21 @@ namespace vkcv::shader {
 		sessionDesc.searchPaths = &searchPath;
 		sessionDesc.searchPathCount = 1;
 
+		std::vector<slang::PreprocessorMacroDesc> macros;
+		macros.reserve(m_defines.size());
+
+		for (const auto& define : m_defines) {
+			const slang::PreprocessorMacroDesc macro = {
+				define.first.c_str(),
+				define.second.c_str()
+			};
+
+			macros.push_back(macro);
+		}
+
+		sessionDesc.preprocessorMacros = macros.data();
+		sessionDesc.preprocessorMacroCount = macros.size();
+
 		Slang::ComPtr<slang::ISession> session;
 		if (SLANG_FAILED(s_GlobalSession->createSession(sessionDesc, session.writeRef()))) {
 			vkcv_log(LogLevel::ERROR, "Compiler session could not be created");