From 801b06abfe1829eefe9717f428b7f95b67fa9b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 15 Mar 2022 18:35:02 +0100 Subject: [PATCH] Shader: Fix module overwriting --- src/Nazara/Graphics/Graphics.cpp | 10 ++++++---- .../Graphics/Resources/Shaders/PhongMaterial.nzsl | 4 ++-- .../Resources/Shaders/{blit.nzsl => TextureBlit.nzsl} | 2 +- src/Nazara/Shader/FilesystemModuleResolver.cpp | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) rename src/Nazara/Graphics/Resources/Shaders/{blit.nzsl => TextureBlit.nzsl} (97%) diff --git a/src/Nazara/Graphics/Graphics.cpp b/src/Nazara/Graphics/Graphics.cpp index 95cdb03d9..d5063d101 100644 --- a/src/Nazara/Graphics/Graphics.cpp +++ b/src/Nazara/Graphics/Graphics.cpp @@ -15,8 +15,8 @@ namespace Nz { namespace { - const UInt8 r_blitShader[] = { - #include + const UInt8 r_textureBlitShader[] = { + #include }; const UInt8 r_basicMaterialShader[] = { @@ -151,10 +151,12 @@ namespace Nz if (!m_blitPipelineLayout) throw std::runtime_error("failed to instantiate fullscreen renderpipeline layout"); + ShaderAst::ModulePtr blitShaderModule = m_shaderModuleResolver->Resolve("TextureBlit"); + ShaderWriter::States states; states.shaderModuleResolver = m_shaderModuleResolver; - auto blitShader = m_renderDevice->InstantiateShaderModule(ShaderStageType::Fragment | ShaderStageType::Vertex, ShaderLanguage::NazaraShader, r_blitShader, sizeof(r_blitShader), states); + auto blitShader = m_renderDevice->InstantiateShaderModule(ShaderStageType::Fragment | ShaderStageType::Vertex, *blitShaderModule, states); if (!blitShader) throw std::runtime_error("failed to instantiate blit shader"); @@ -238,7 +240,7 @@ namespace Nz RegisterEmbedShaderModule(r_basicMaterialShader); RegisterEmbedShaderModule(r_depthMaterialShader); RegisterEmbedShaderModule(r_phongMaterialShader); - RegisterEmbedShaderModule(r_blitShader); + RegisterEmbedShaderModule(r_textureBlitShader); RegisterEmbedShaderModule(r_instanceDataModule); RegisterEmbedShaderModule(r_lightDataModule); RegisterEmbedShaderModule(r_viewerDataModule); diff --git a/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl b/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl index 4d8f9e0c7..94919142c 100644 --- a/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl +++ b/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl @@ -210,13 +210,13 @@ fn main(input: VertToFrag) -> FragOut let output: FragOut; output.RenderTarget0 = vec4[f32](lightColor, 1.0) * diffuseColor; - return output; + return output; } else { let output: FragOut; output.RenderTarget0 = diffuseColor; - return output; + return output; } } diff --git a/src/Nazara/Graphics/Resources/Shaders/blit.nzsl b/src/Nazara/Graphics/Resources/Shaders/TextureBlit.nzsl similarity index 97% rename from src/Nazara/Graphics/Resources/Shaders/blit.nzsl rename to src/Nazara/Graphics/Resources/Shaders/TextureBlit.nzsl index 02db0c35c..e7d4077ce 100644 --- a/src/Nazara/Graphics/Resources/Shaders/blit.nzsl +++ b/src/Nazara/Graphics/Resources/Shaders/TextureBlit.nzsl @@ -1,5 +1,5 @@ [nzsl_version("1.0")] -module Blit; +module TextureBlit; external { diff --git a/src/Nazara/Shader/FilesystemModuleResolver.cpp b/src/Nazara/Shader/FilesystemModuleResolver.cpp index 5904e9702..9f253b97d 100644 --- a/src/Nazara/Shader/FilesystemModuleResolver.cpp +++ b/src/Nazara/Shader/FilesystemModuleResolver.cpp @@ -29,7 +29,7 @@ namespace Nz if (moduleName.empty()) throw std::runtime_error("cannot register anonymous module"); - m_modules.emplace(std::move(moduleName), std::move(module)); + m_modules.insert_or_assign(std::move(moduleName), std::move(module)); } void FilesystemModuleResolver::RegisterModuleDirectory(const std::filesystem::path& realPath)