Shader: Fix module overwriting

This commit is contained in:
Jérôme Leclercq 2022-03-15 18:35:02 +01:00
parent 06406fc20e
commit 801b06abfe
4 changed files with 10 additions and 8 deletions

View File

@ -15,8 +15,8 @@ namespace Nz
{
namespace
{
const UInt8 r_blitShader[] = {
#include <Nazara/Graphics/Resources/Shaders/Blit.nzsl.h>
const UInt8 r_textureBlitShader[] = {
#include <Nazara/Graphics/Resources/Shaders/TextureBlit.nzsl.h>
};
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);

View File

@ -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;
}
}

View File

@ -1,5 +1,5 @@
[nzsl_version("1.0")]
module Blit;
module TextureBlit;
external
{

View File

@ -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)