diff --git a/include/Nazara/Shader/SpirvPrinter.hpp b/include/Nazara/Shader/SpirvPrinter.hpp index 101a49437..0b78fb978 100644 --- a/include/Nazara/Shader/SpirvPrinter.hpp +++ b/include/Nazara/Shader/SpirvPrinter.hpp @@ -23,7 +23,7 @@ namespace Nz SpirvPrinter(SpirvPrinter&&) = default; ~SpirvPrinter() = default; - std::string Print(const UInt32* codepoints, std::size_t count, const Settings& settings = Settings()); + std::string Print(const UInt32* codepoints, std::size_t count, const Settings& settings = {}); SpirvPrinter& operator=(const SpirvPrinter&) = default; SpirvPrinter& operator=(SpirvPrinter&&) = default; diff --git a/src/Nazara/Shader/SpirvConstantCache.cpp b/src/Nazara/Shader/SpirvConstantCache.cpp index db2bdb7ee..f885d67b8 100644 --- a/src/Nazara/Shader/SpirvConstantCache.cpp +++ b/src/Nazara/Shader/SpirvConstantCache.cpp @@ -501,14 +501,16 @@ namespace Nz if (!variable.debugName.empty()) debugInfos.Append(SpirvOp::OpName, resultId, variable.debugName); + const auto& var = variable; + constants.AppendVariadic(SpirvOp::OpVariable, [&](const auto& appender) { - appender(GetId(*variable.type)); + appender(GetId(*var.type)); appender(resultId); - appender(variable.storageClass); + appender(var.storageClass); - if (variable.initializer) - appender(GetId((*variable.initializer)->constant)); + if (var.initializer) + appender(GetId((*var.initializer)->constant)); }); } } diff --git a/src/Nazara/Shader/SpirvExpressionLoad.cpp b/src/Nazara/Shader/SpirvExpressionLoad.cpp index 00e7ad815..bd7c6cc55 100644 --- a/src/Nazara/Shader/SpirvExpressionLoad.cpp +++ b/src/Nazara/Shader/SpirvExpressionLoad.cpp @@ -22,7 +22,7 @@ namespace Nz return std::visit(overloaded { - [&](const Pointer& pointer) -> UInt32 + [this](const Pointer& pointer) -> UInt32 { UInt32 resultId = m_writer.AllocateResultId(); @@ -30,11 +30,11 @@ namespace Nz return resultId; }, - [&](const Value& value) -> UInt32 + [](const Value& value) -> UInt32 { return value.resultId; }, - [this](std::monostate) -> UInt32 + [](std::monostate) -> UInt32 { throw std::runtime_error("an internal error occurred"); }