Graphics/UberShader: Hotreload shader when an imported module is modified

This commit is contained in:
SirLynix
2023-11-04 17:55:04 +01:00
parent fa54f1a3e4
commit 5382dd3ccd
2 changed files with 6 additions and 1 deletions

View File

@@ -37,7 +37,7 @@ namespace Nz
m_onShaderModuleUpdated.Connect(moduleResolver.OnModuleUpdated, [this, name = std::move(moduleName)](nzsl::ModuleResolver* resolver, const std::string& updatedModuleName)
{
if (updatedModuleName != name)
if (m_usedModules.find(updatedModuleName) == m_usedModules.end())
return;
nzsl::Ast::ModulePtr newShaderModule = resolver->Resolve(name);
@@ -120,6 +120,9 @@ namespace Nz
sanitizeOptions.moduleResolver = Graphics::Instance()->GetShaderModuleResolver();
nzsl::Ast::ModulePtr sanitizedModule = nzsl::Ast::Sanitize(module, sanitizeOptions);
m_usedModules.insert(sanitizedModule->metadata->moduleName);
for (auto&& importedModule : sanitizedModule->importedModules)
m_usedModules.insert(importedModule.module->metadata->moduleName);
nzsl::ShaderStageTypeFlags supportedStageType;