From d45ba6696f6b24857537d208bf7e7739ffe581d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 9 Mar 2022 12:30:34 +0100 Subject: [PATCH] Shader: Rename VariableExpression to VariableValueExpression --- include/Nazara/Shader/Ast/AstCloner.hpp | 2 +- include/Nazara/Shader/Ast/AstCompare.hpp | 2 +- include/Nazara/Shader/Ast/AstCompare.inl | 2 +- include/Nazara/Shader/Ast/AstNodeList.hpp | 2 +- .../Nazara/Shader/Ast/AstRecursiveVisitor.hpp | 2 +- include/Nazara/Shader/Ast/AstSerializer.hpp | 2 +- include/Nazara/Shader/Ast/AstUtils.hpp | 2 +- .../Shader/Ast/DependencyCheckerVisitor.hpp | 2 +- .../Shader/Ast/IndexRemapperVisitor.hpp | 2 +- include/Nazara/Shader/Ast/Nodes.hpp | 1 + include/Nazara/Shader/Ast/SanitizeVisitor.hpp | 4 +- include/Nazara/Shader/GlslWriter.hpp | 2 +- include/Nazara/Shader/LangWriter.hpp | 2 +- include/Nazara/Shader/ShaderBuilder.hpp | 94 +++++++++--------- include/Nazara/Shader/ShaderBuilder.inl | 96 +++++++++---------- include/Nazara/Shader/SpirvAstVisitor.hpp | 1 - include/Nazara/Shader/SpirvExpressionLoad.hpp | 2 +- .../Nazara/Shader/SpirvExpressionStore.hpp | 2 +- src/Nazara/Shader/Ast/AstCloner.cpp | 4 +- src/Nazara/Shader/Ast/AstRecursiveVisitor.cpp | 2 +- src/Nazara/Shader/Ast/AstSerializer.cpp | 2 +- src/Nazara/Shader/Ast/AstUtils.cpp | 2 +- .../Shader/Ast/DependencyCheckerVisitor.cpp | 2 +- .../Shader/Ast/IndexRemapperVisitor.cpp | 4 +- src/Nazara/Shader/Ast/SanitizeVisitor.cpp | 10 +- src/Nazara/Shader/GlslWriter.cpp | 2 +- src/Nazara/Shader/LangWriter.cpp | 18 ++-- src/Nazara/Shader/SpirvAstVisitor.cpp | 2 +- src/Nazara/Shader/SpirvExpressionLoad.cpp | 2 +- src/Nazara/Shader/SpirvExpressionStore.cpp | 2 +- 30 files changed, 137 insertions(+), 137 deletions(-) diff --git a/include/Nazara/Shader/Ast/AstCloner.hpp b/include/Nazara/Shader/Ast/AstCloner.hpp index bf1eed77f..a1076c8da 100644 --- a/include/Nazara/Shader/Ast/AstCloner.hpp +++ b/include/Nazara/Shader/Ast/AstCloner.hpp @@ -56,7 +56,7 @@ namespace Nz::ShaderAst virtual ExpressionPtr Clone(IntrinsicFunctionExpression& node); virtual ExpressionPtr Clone(StructTypeExpression& node); virtual ExpressionPtr Clone(SwizzleExpression& node); - virtual ExpressionPtr Clone(VariableExpression& node); + virtual ExpressionPtr Clone(VariableValueExpression& node); virtual ExpressionPtr Clone(UnaryExpression& node); virtual StatementPtr Clone(BranchStatement& node); diff --git a/include/Nazara/Shader/Ast/AstCompare.hpp b/include/Nazara/Shader/Ast/AstCompare.hpp index 8f73dd91f..ec198d0a4 100644 --- a/include/Nazara/Shader/Ast/AstCompare.hpp +++ b/include/Nazara/Shader/Ast/AstCompare.hpp @@ -48,7 +48,7 @@ namespace Nz::ShaderAst inline bool Compare(const IntrinsicFunctionExpression& lhs, const IntrinsicFunctionExpression& rhs); inline bool Compare(const StructTypeExpression& lhs, const StructTypeExpression& rhs); inline bool Compare(const SwizzleExpression& lhs, const SwizzleExpression& rhs); - inline bool Compare(const VariableExpression& lhs, const VariableExpression& rhs); + inline bool Compare(const VariableValueExpression& lhs, const VariableValueExpression& rhs); inline bool Compare(const UnaryExpression& lhs, const UnaryExpression& rhs); inline bool Compare(const BranchStatement& lhs, const BranchStatement& rhs); diff --git a/include/Nazara/Shader/Ast/AstCompare.inl b/include/Nazara/Shader/Ast/AstCompare.inl index d8e3aad4c..30fa13245 100644 --- a/include/Nazara/Shader/Ast/AstCompare.inl +++ b/include/Nazara/Shader/Ast/AstCompare.inl @@ -399,7 +399,7 @@ namespace Nz::ShaderAst return true; } - inline bool Compare(const VariableExpression& lhs, const VariableExpression& rhs) + inline bool Compare(const VariableValueExpression& lhs, const VariableValueExpression& rhs) { if (!Compare(lhs.variableId, rhs.variableId)) return false; diff --git a/include/Nazara/Shader/Ast/AstNodeList.hpp b/include/Nazara/Shader/Ast/AstNodeList.hpp index 442b5d96d..505657722 100644 --- a/include/Nazara/Shader/Ast/AstNodeList.hpp +++ b/include/Nazara/Shader/Ast/AstNodeList.hpp @@ -44,7 +44,7 @@ NAZARA_SHADERAST_EXPRESSION(IntrinsicExpression) NAZARA_SHADERAST_EXPRESSION(IntrinsicFunctionExpression) NAZARA_SHADERAST_EXPRESSION(StructTypeExpression) NAZARA_SHADERAST_EXPRESSION(SwizzleExpression) -NAZARA_SHADERAST_EXPRESSION(VariableExpression) +NAZARA_SHADERAST_EXPRESSION(VariableValueExpression) NAZARA_SHADERAST_EXPRESSION(UnaryExpression) NAZARA_SHADERAST_STATEMENT(BranchStatement) NAZARA_SHADERAST_STATEMENT(ConditionalStatement) diff --git a/include/Nazara/Shader/Ast/AstRecursiveVisitor.hpp b/include/Nazara/Shader/Ast/AstRecursiveVisitor.hpp index 05c92d7de..55106b67a 100644 --- a/include/Nazara/Shader/Ast/AstRecursiveVisitor.hpp +++ b/include/Nazara/Shader/Ast/AstRecursiveVisitor.hpp @@ -36,7 +36,7 @@ namespace Nz::ShaderAst void Visit(IntrinsicFunctionExpression& node) override; void Visit(StructTypeExpression& node) override; void Visit(SwizzleExpression& node) override; - void Visit(VariableExpression& node) override; + void Visit(VariableValueExpression& node) override; void Visit(UnaryExpression& node) override; void Visit(BranchStatement& node) override; diff --git a/include/Nazara/Shader/Ast/AstSerializer.hpp b/include/Nazara/Shader/Ast/AstSerializer.hpp index 1569182b3..a6d683125 100644 --- a/include/Nazara/Shader/Ast/AstSerializer.hpp +++ b/include/Nazara/Shader/Ast/AstSerializer.hpp @@ -39,7 +39,7 @@ namespace Nz::ShaderAst void Serialize(IntrinsicFunctionExpression& node); void Serialize(StructTypeExpression& node); void Serialize(SwizzleExpression& node); - void Serialize(VariableExpression& node); + void Serialize(VariableValueExpression& node); void Serialize(UnaryExpression& node); void Serialize(BranchStatement& node); diff --git a/include/Nazara/Shader/Ast/AstUtils.hpp b/include/Nazara/Shader/Ast/AstUtils.hpp index 4b2798515..7134eb230 100644 --- a/include/Nazara/Shader/Ast/AstUtils.hpp +++ b/include/Nazara/Shader/Ast/AstUtils.hpp @@ -47,7 +47,7 @@ namespace Nz::ShaderAst void Visit(IntrinsicFunctionExpression& node) override; void Visit(StructTypeExpression& node) override; void Visit(SwizzleExpression& node) override; - void Visit(VariableExpression& node) override; + void Visit(VariableValueExpression& node) override; void Visit(UnaryExpression& node) override; ExpressionCategory m_expressionCategory; diff --git a/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp b/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp index ad72e8ee4..06962beac 100644 --- a/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp +++ b/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp @@ -55,7 +55,7 @@ namespace Nz::ShaderAst using AstRecursiveVisitor::Visit; void Visit(CallFunctionExpression& node) override; - void Visit(VariableExpression& node) override; + void Visit(VariableValueExpression& node) override; void Visit(DeclareExternalStatement& node) override; void Visit(DeclareFunctionStatement& node) override; diff --git a/include/Nazara/Shader/Ast/IndexRemapperVisitor.hpp b/include/Nazara/Shader/Ast/IndexRemapperVisitor.hpp index 24d2e362a..09cf34beb 100644 --- a/include/Nazara/Shader/Ast/IndexRemapperVisitor.hpp +++ b/include/Nazara/Shader/Ast/IndexRemapperVisitor.hpp @@ -47,7 +47,7 @@ namespace Nz::ShaderAst ExpressionPtr Clone(FunctionExpression& node) override; ExpressionPtr Clone(StructTypeExpression& node) override; - ExpressionPtr Clone(VariableExpression& node) override; + ExpressionPtr Clone(VariableValueExpression& node) override; void HandleType(ExpressionValue& exprType); diff --git a/include/Nazara/Shader/Ast/Nodes.hpp b/include/Nazara/Shader/Ast/Nodes.hpp index aff06c1f6..09c21f85b 100644 --- a/include/Nazara/Shader/Ast/Nodes.hpp +++ b/include/Nazara/Shader/Ast/Nodes.hpp @@ -208,6 +208,7 @@ namespace Nz::ShaderAst }; struct NAZARA_SHADER_API VariableExpression : Expression + struct NAZARA_SHADER_API VariableValueExpression : Expression { NodeType GetType() const override; void Visit(AstExpressionVisitor& visitor) override; diff --git a/include/Nazara/Shader/Ast/SanitizeVisitor.hpp b/include/Nazara/Shader/Ast/SanitizeVisitor.hpp index ef1118931..9810dd2c5 100644 --- a/include/Nazara/Shader/Ast/SanitizeVisitor.hpp +++ b/include/Nazara/Shader/Ast/SanitizeVisitor.hpp @@ -82,7 +82,7 @@ namespace Nz::ShaderAst ExpressionPtr Clone(IntrinsicExpression& node) override; ExpressionPtr Clone(SwizzleExpression& node) override; ExpressionPtr Clone(UnaryExpression& node) override; - ExpressionPtr Clone(VariableExpression& node) override; + ExpressionPtr Clone(VariableValueExpression& node) override; StatementPtr Clone(BranchStatement& node) override; StatementPtr Clone(ConditionalStatement& node) override; @@ -166,7 +166,7 @@ namespace Nz::ShaderAst void Validate(IntrinsicExpression& node); void Validate(SwizzleExpression& node); void Validate(UnaryExpression& node); - void Validate(VariableExpression& node); + void Validate(VariableValueExpression& node); ExpressionType ValidateBinaryOp(BinaryType op, const ExpressionPtr& leftExpr, const ExpressionPtr& rightExpr); enum class IdentifierCategory diff --git a/include/Nazara/Shader/GlslWriter.hpp b/include/Nazara/Shader/GlslWriter.hpp index fe03238cc..8a5446985 100644 --- a/include/Nazara/Shader/GlslWriter.hpp +++ b/include/Nazara/Shader/GlslWriter.hpp @@ -101,7 +101,7 @@ namespace Nz void Visit(ShaderAst::ConstantValueExpression& node) override; void Visit(ShaderAst::IntrinsicExpression& node) override; void Visit(ShaderAst::SwizzleExpression& node) override; - void Visit(ShaderAst::VariableExpression& node) override; + void Visit(ShaderAst::VariableValueExpression& node) override; void Visit(ShaderAst::UnaryExpression& node) override; void Visit(ShaderAst::BranchStatement& node) override; diff --git a/include/Nazara/Shader/LangWriter.hpp b/include/Nazara/Shader/LangWriter.hpp index 453c2310f..4a4b957cd 100644 --- a/include/Nazara/Shader/LangWriter.hpp +++ b/include/Nazara/Shader/LangWriter.hpp @@ -111,7 +111,7 @@ namespace Nz void Visit(ShaderAst::IntrinsicExpression& node) override; void Visit(ShaderAst::StructTypeExpression& node) override; void Visit(ShaderAst::SwizzleExpression& node) override; - void Visit(ShaderAst::VariableExpression& node) override; + void Visit(ShaderAst::VariableValueExpression& node) override; void Visit(ShaderAst::UnaryExpression& node) override; void Visit(ShaderAst::BranchStatement& node) override; diff --git a/include/Nazara/Shader/ShaderBuilder.hpp b/include/Nazara/Shader/ShaderBuilder.hpp index 240504c46..db39b9a33 100644 --- a/include/Nazara/Shader/ShaderBuilder.hpp +++ b/include/Nazara/Shader/ShaderBuilder.hpp @@ -19,142 +19,142 @@ namespace Nz::ShaderBuilder { struct AccessIndex { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expr, Int32 index) const; - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expr, const std::vector& indexConstants) const; - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expr, ShaderAst::ExpressionPtr indexExpression) const; - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expr, std::vector indexExpressions) const; + inline ShaderAst::AccessIndexExpressionPtr operator()(ShaderAst::ExpressionPtr expr, Int32 index) const; + inline ShaderAst::AccessIndexExpressionPtr operator()(ShaderAst::ExpressionPtr expr, const std::vector& indexConstants) const; + inline ShaderAst::AccessIndexExpressionPtr operator()(ShaderAst::ExpressionPtr expr, ShaderAst::ExpressionPtr indexExpression) const; + inline ShaderAst::AccessIndexExpressionPtr operator()(ShaderAst::ExpressionPtr expr, std::vector indexExpressions) const; }; struct AccessMember { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expr, std::vector memberIdentifiers) const; + inline ShaderAst::AccessIdentifierExpressionPtr operator()(ShaderAst::ExpressionPtr expr, std::vector memberIdentifiers) const; }; struct Assign { - inline std::unique_ptr operator()(ShaderAst::AssignType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const; + inline ShaderAst::AssignExpressionPtr operator()(ShaderAst::AssignType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const; }; struct Binary { - inline std::unique_ptr operator()(ShaderAst::BinaryType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const; + inline ShaderAst::BinaryExpressionPtr operator()(ShaderAst::BinaryType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const; }; template struct Branch { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr truePath, ShaderAst::StatementPtr falsePath = nullptr) const; - inline std::unique_ptr operator()(std::vector condStatements, ShaderAst::StatementPtr elseStatement = nullptr) const; + inline ShaderAst::BranchStatementPtr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr truePath, ShaderAst::StatementPtr falsePath = nullptr) const; + inline ShaderAst::BranchStatementPtr operator()(std::vector condStatements, ShaderAst::StatementPtr elseStatement = nullptr) const; }; struct CallFunction { - inline std::unique_ptr operator()(std::string functionName, std::vector parameters) const; - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr functionExpr, std::vector parameters) const; + inline ShaderAst::CallFunctionExpressionPtr operator()(std::string functionName, std::vector parameters) const; + inline ShaderAst::CallFunctionExpressionPtr operator()(ShaderAst::ExpressionPtr functionExpr, std::vector parameters) const; }; struct Cast { - inline std::unique_ptr operator()(ShaderAst::ExpressionValue targetType, ShaderAst::ExpressionPtr expression) const; - inline std::unique_ptr operator()(ShaderAst::ExpressionValue targetType, std::array expressions) const; - inline std::unique_ptr operator()(ShaderAst::ExpressionValue targetType, std::vector expressions) const; + inline ShaderAst::CastExpressionPtr operator()(ShaderAst::ExpressionValue targetType, ShaderAst::ExpressionPtr expression) const; + inline ShaderAst::CastExpressionPtr operator()(ShaderAst::ExpressionValue targetType, std::array expressions) const; + inline ShaderAst::CastExpressionPtr operator()(ShaderAst::ExpressionValue targetType, std::vector expressions) const; }; struct ConditionalExpression { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::ExpressionPtr truePath, ShaderAst::ExpressionPtr falsePath) const; + inline ShaderAst::ConditionalExpressionPtr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::ExpressionPtr truePath, ShaderAst::ExpressionPtr falsePath) const; }; struct ConditionalStatement { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr statement) const; + inline ShaderAst::ConditionalStatementPtr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr statement) const; }; struct Constant { - inline std::unique_ptr operator()(ShaderAst::ConstantValue value) const; - template std::unique_ptr operator()(ShaderAst::ExpressionType type, T value) const; + inline ShaderAst::ConstantValueExpressionPtr operator()(ShaderAst::ConstantValue value) const; + template ShaderAst::ConstantValueExpressionPtr operator()(ShaderAst::ExpressionType type, T value) const; }; struct DeclareAlias { - inline std::unique_ptr operator()(std::string name, ShaderAst::ExpressionPtr expression) const; + inline ShaderAst::DeclareAliasStatementPtr operator()(std::string name, ShaderAst::ExpressionPtr expression) const; }; struct DeclareConst { - inline std::unique_ptr operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const; - inline std::unique_ptr operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue = nullptr) const; + inline ShaderAst::DeclareConstStatementPtr operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const; + inline ShaderAst::DeclareConstStatementPtr operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue = nullptr) const; }; struct DeclareFunction { - inline std::unique_ptr operator()(std::string name, ShaderAst::StatementPtr statement) const; - inline std::unique_ptr operator()(std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType = ShaderAst::ExpressionType{ ShaderAst::NoType{} }) const; - inline std::unique_ptr operator()(std::optional entryStage, std::string name, ShaderAst::StatementPtr statement) const; - inline std::unique_ptr operator()(std::optional entryStage, std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType = ShaderAst::ExpressionType{ ShaderAst::NoType{} }) const; + inline ShaderAst::DeclareFunctionStatementPtr operator()(std::string name, ShaderAst::StatementPtr statement) const; + inline ShaderAst::DeclareFunctionStatementPtr operator()(std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType = ShaderAst::ExpressionType{ ShaderAst::NoType{} }) const; + inline ShaderAst::DeclareFunctionStatementPtr operator()(std::optional entryStage, std::string name, ShaderAst::StatementPtr statement) const; + inline ShaderAst::DeclareFunctionStatementPtr operator()(std::optional entryStage, std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType = ShaderAst::ExpressionType{ ShaderAst::NoType{} }) const; }; struct DeclareOption { - inline std::unique_ptr operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue = nullptr) const; + inline ShaderAst::DeclareOptionStatementPtr operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue = nullptr) const; }; struct DeclareStruct { - inline std::unique_ptr operator()(ShaderAst::StructDescription description, ShaderAst::ExpressionValue isExported) const; + inline ShaderAst::DeclareStructStatementPtr operator()(ShaderAst::StructDescription description, ShaderAst::ExpressionValue isExported) const; }; struct DeclareVariable { - inline std::unique_ptr operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const; - inline std::unique_ptr operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue = nullptr) const; + inline ShaderAst::DeclareVariableStatementPtr operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const; + inline ShaderAst::DeclareVariableStatementPtr operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue = nullptr) const; }; struct ExpressionStatement { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expression) const; + inline ShaderAst::ExpressionStatementPtr operator()(ShaderAst::ExpressionPtr expression) const; }; struct For { - inline std::unique_ptr operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::StatementPtr statement) const; - inline std::unique_ptr operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::ExpressionPtr stepExpression, ShaderAst::StatementPtr statement) const; + inline ShaderAst::ForStatementPtr operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::StatementPtr statement) const; + inline ShaderAst::ForStatementPtr operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::ExpressionPtr stepExpression, ShaderAst::StatementPtr statement) const; }; struct ForEach { - inline std::unique_ptr operator()(std::string varName, ShaderAst::ExpressionPtr expression, ShaderAst::StatementPtr statement) const; + inline ShaderAst::ForEachStatementPtr operator()(std::string varName, ShaderAst::ExpressionPtr expression, ShaderAst::StatementPtr statement) const; }; struct Function { - inline std::unique_ptr operator()(std::size_t funcId) const; + inline ShaderAst::FunctionExpressionPtr operator()(std::size_t funcId) const; }; struct Identifier { - inline std::unique_ptr operator()(std::string name) const; + inline ShaderAst::IdentifierExpressionPtr operator()(std::string name) const; }; struct Import { - inline std::unique_ptr operator()(std::vector modulePath) const; + inline ShaderAst::ImportStatementPtr operator()(std::vector modulePath) const; }; struct Intrinsic { - inline std::unique_ptr operator()(ShaderAst::IntrinsicType intrinsicType, std::vector parameters) const; + inline ShaderAst::IntrinsicExpressionPtr operator()(ShaderAst::IntrinsicType intrinsicType, std::vector parameters) const; }; struct IntrinsicFunction { - inline std::unique_ptr operator()(std::size_t intrinsicFunctionId, ShaderAst::IntrinsicType intrinsicType) const; + inline ShaderAst::IntrinsicFunctionExpressionPtr operator()(std::size_t intrinsicFunctionId, ShaderAst::IntrinsicType intrinsicType) const; }; struct Multi { - inline std::unique_ptr operator()(std::vector statements = {}) const; + inline ShaderAst::MultiStatementPtr operator()(std::vector statements = {}) const; }; template @@ -165,38 +165,38 @@ namespace Nz::ShaderBuilder struct Return { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expr = nullptr) const; + inline ShaderAst::ReturnStatementPtr operator()(ShaderAst::ExpressionPtr expr = nullptr) const; }; struct Scoped { - inline std::unique_ptr operator()(ShaderAst::StatementPtr statement) const; + inline ShaderAst::ScopedStatementPtr operator()(ShaderAst::StatementPtr statement) const; }; struct StructType { - inline std::unique_ptr operator()(std::size_t structTypeId) const; + inline ShaderAst::StructTypeExpressionPtr operator()(std::size_t structTypeId) const; }; struct Swizzle { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expression, std::array swizzleComponents, std::size_t componentCount) const; - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr expression, std::vector swizzleComponents) const; + inline ShaderAst::SwizzleExpressionPtr operator()(ShaderAst::ExpressionPtr expression, std::array swizzleComponents, std::size_t componentCount) const; + inline ShaderAst::SwizzleExpressionPtr operator()(ShaderAst::ExpressionPtr expression, std::vector swizzleComponents) const; }; struct Unary { - inline std::unique_ptr operator()(ShaderAst::UnaryType op, ShaderAst::ExpressionPtr expression) const; + inline ShaderAst::UnaryExpressionPtr operator()(ShaderAst::UnaryType op, ShaderAst::ExpressionPtr expression) const; }; struct Variable { - inline std::unique_ptr operator()(std::size_t variableId, ShaderAst::ExpressionType expressionType) const; + inline ShaderAst::VariableValueExpressionPtr operator()(std::size_t variableId, ShaderAst::ExpressionType expressionType) const; }; struct While { - inline std::unique_ptr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr body) const; + inline ShaderAst::WhileStatementPtr operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr body) const; }; } diff --git a/include/Nazara/Shader/ShaderBuilder.inl b/include/Nazara/Shader/ShaderBuilder.inl index 7936545c6..591394f56 100644 --- a/include/Nazara/Shader/ShaderBuilder.inl +++ b/include/Nazara/Shader/ShaderBuilder.inl @@ -8,7 +8,7 @@ namespace Nz::ShaderBuilder { - inline std::unique_ptr Impl::AccessMember::operator()(ShaderAst::ExpressionPtr expr, std::vector memberIdentifiers) const + inline ShaderAst::AccessIdentifierExpressionPtr Impl::AccessMember::operator()(ShaderAst::ExpressionPtr expr, std::vector memberIdentifiers) const { auto accessMemberNode = std::make_unique(); accessMemberNode->expr = std::move(expr); @@ -17,7 +17,7 @@ namespace Nz::ShaderBuilder return accessMemberNode; } - inline std::unique_ptr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, Int32 index) const + inline ShaderAst::AccessIndexExpressionPtr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, Int32 index) const { auto accessMemberNode = std::make_unique(); accessMemberNode->expr = std::move(expr); @@ -26,7 +26,7 @@ namespace Nz::ShaderBuilder return accessMemberNode; } - inline std::unique_ptr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, const std::vector& indexConstants) const + inline ShaderAst::AccessIndexExpressionPtr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, const std::vector& indexConstants) const { auto accessMemberNode = std::make_unique(); accessMemberNode->expr = std::move(expr); @@ -38,7 +38,7 @@ namespace Nz::ShaderBuilder return accessMemberNode; } - inline std::unique_ptr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, ShaderAst::ExpressionPtr indexExpression) const + inline ShaderAst::AccessIndexExpressionPtr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, ShaderAst::ExpressionPtr indexExpression) const { auto accessMemberNode = std::make_unique(); accessMemberNode->expr = std::move(expr); @@ -47,7 +47,7 @@ namespace Nz::ShaderBuilder return accessMemberNode; } - inline std::unique_ptr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, std::vector indexExpressions) const + inline ShaderAst::AccessIndexExpressionPtr Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr expr, std::vector indexExpressions) const { auto accessMemberNode = std::make_unique(); accessMemberNode->expr = std::move(expr); @@ -56,7 +56,7 @@ namespace Nz::ShaderBuilder return accessMemberNode; } - inline std::unique_ptr Impl::Assign::operator()(ShaderAst::AssignType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const + inline ShaderAst::AssignExpressionPtr Impl::Assign::operator()(ShaderAst::AssignType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const { auto assignNode = std::make_unique(); assignNode->op = op; @@ -66,7 +66,7 @@ namespace Nz::ShaderBuilder return assignNode; } - inline std::unique_ptr Impl::Binary::operator()(ShaderAst::BinaryType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const + inline ShaderAst::BinaryExpressionPtr Impl::Binary::operator()(ShaderAst::BinaryType op, ShaderAst::ExpressionPtr left, ShaderAst::ExpressionPtr right) const { auto binaryNode = std::make_unique(); binaryNode->op = op; @@ -77,7 +77,7 @@ namespace Nz::ShaderBuilder } template - std::unique_ptr Impl::Branch::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr truePath, ShaderAst::StatementPtr falsePath) const + ShaderAst::BranchStatementPtr Impl::Branch::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr truePath, ShaderAst::StatementPtr falsePath) const { auto branchNode = std::make_unique(); @@ -92,7 +92,7 @@ namespace Nz::ShaderBuilder } template - std::unique_ptr Impl::Branch::operator()(std::vector condStatements, ShaderAst::StatementPtr elseStatement) const + ShaderAst::BranchStatementPtr Impl::Branch::operator()(std::vector condStatements, ShaderAst::StatementPtr elseStatement) const { auto branchNode = std::make_unique(); branchNode->condStatements = std::move(condStatements); @@ -102,7 +102,7 @@ namespace Nz::ShaderBuilder return branchNode; } - inline std::unique_ptr Impl::CallFunction::operator()(std::string functionName, std::vector parameters) const + inline ShaderAst::CallFunctionExpressionPtr Impl::CallFunction::operator()(std::string functionName, std::vector parameters) const { auto callFunctionExpression = std::make_unique(); callFunctionExpression->targetFunction = ShaderBuilder::Identifier(std::move(functionName)); @@ -111,7 +111,7 @@ namespace Nz::ShaderBuilder return callFunctionExpression; } - inline std::unique_ptr Impl::CallFunction::operator()(ShaderAst::ExpressionPtr functionExpr, std::vector parameters) const + inline ShaderAst::CallFunctionExpressionPtr Impl::CallFunction::operator()(ShaderAst::ExpressionPtr functionExpr, std::vector parameters) const { auto callFunctionExpression = std::make_unique(); callFunctionExpression->targetFunction = std::move(functionExpr); @@ -120,7 +120,7 @@ namespace Nz::ShaderBuilder return callFunctionExpression; } - inline std::unique_ptr Impl::Cast::operator()(ShaderAst::ExpressionValue targetType, ShaderAst::ExpressionPtr expression) const + inline ShaderAst::CastExpressionPtr Impl::Cast::operator()(ShaderAst::ExpressionValue targetType, ShaderAst::ExpressionPtr expression) const { auto castNode = std::make_unique(); castNode->targetType = std::move(targetType); @@ -129,7 +129,7 @@ namespace Nz::ShaderBuilder return castNode; } - inline std::unique_ptr Impl::Cast::operator()(ShaderAst::ExpressionValue targetType, std::array expressions) const + inline ShaderAst::CastExpressionPtr Impl::Cast::operator()(ShaderAst::ExpressionValue targetType, std::array expressions) const { auto castNode = std::make_unique(); castNode->expressions = std::move(expressions); @@ -138,7 +138,7 @@ namespace Nz::ShaderBuilder return castNode; } - inline std::unique_ptr Impl::Cast::operator()(ShaderAst::ExpressionValue targetType, std::vector expressions) const + inline ShaderAst::CastExpressionPtr Impl::Cast::operator()(ShaderAst::ExpressionValue targetType, std::vector expressions) const { auto castNode = std::make_unique(); castNode->targetType = std::move(targetType); @@ -150,7 +150,7 @@ namespace Nz::ShaderBuilder return castNode; } - inline std::unique_ptr Impl::ConditionalExpression::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::ExpressionPtr truePath, ShaderAst::ExpressionPtr falsePath) const + inline ShaderAst::ConditionalExpressionPtr Impl::ConditionalExpression::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::ExpressionPtr truePath, ShaderAst::ExpressionPtr falsePath) const { auto condExprNode = std::make_unique(); condExprNode->condition = std::move(condition); @@ -160,7 +160,7 @@ namespace Nz::ShaderBuilder return condExprNode; } - inline std::unique_ptr Impl::ConditionalStatement::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr statement) const + inline ShaderAst::ConditionalStatementPtr Impl::ConditionalStatement::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr statement) const { auto condStatementNode = std::make_unique(); condStatementNode->condition = std::move(condition); @@ -169,7 +169,7 @@ namespace Nz::ShaderBuilder return condStatementNode; } - inline std::unique_ptr Impl::Constant::operator()(ShaderAst::ConstantValue value) const + inline ShaderAst::ConstantValueExpressionPtr Impl::Constant::operator()(ShaderAst::ConstantValue value) const { auto constantNode = std::make_unique(); constantNode->value = std::move(value); @@ -179,7 +179,7 @@ namespace Nz::ShaderBuilder } template - std::unique_ptr Impl::Constant::operator()(ShaderAst::ExpressionType type, T value) const + ShaderAst::ConstantValueExpressionPtr Impl::Constant::operator()(ShaderAst::ExpressionType type, T value) const { assert(IsPrimitiveType(type)); @@ -195,7 +195,7 @@ namespace Nz::ShaderBuilder throw std::runtime_error("unexpected primitive type"); } - inline std::unique_ptr Impl::DeclareAlias::operator()(std::string name, ShaderAst::ExpressionPtr expression) const + inline ShaderAst::DeclareAliasStatementPtr Impl::DeclareAlias::operator()(std::string name, ShaderAst::ExpressionPtr expression) const { auto declareAliasNode = std::make_unique(); declareAliasNode->name = std::move(name); @@ -204,7 +204,7 @@ namespace Nz::ShaderBuilder return declareAliasNode; } - inline std::unique_ptr Impl::DeclareConst::operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const + inline ShaderAst::DeclareConstStatementPtr Impl::DeclareConst::operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const { auto declareConstNode = std::make_unique(); declareConstNode->name = std::move(name); @@ -213,7 +213,7 @@ namespace Nz::ShaderBuilder return declareConstNode; } - inline std::unique_ptr Impl::DeclareConst::operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue) const + inline ShaderAst::DeclareConstStatementPtr Impl::DeclareConst::operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue) const { auto declareConstNode = std::make_unique(); declareConstNode->name = std::move(name); @@ -223,7 +223,7 @@ namespace Nz::ShaderBuilder return declareConstNode; } - inline std::unique_ptr Impl::DeclareFunction::operator()(std::string name, ShaderAst::StatementPtr statement) const + inline ShaderAst::DeclareFunctionStatementPtr Impl::DeclareFunction::operator()(std::string name, ShaderAst::StatementPtr statement) const { auto declareFunctionNode = std::make_unique(); declareFunctionNode->name = std::move(name); @@ -232,7 +232,7 @@ namespace Nz::ShaderBuilder return declareFunctionNode; } - inline std::unique_ptr Impl::DeclareFunction::operator()(std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType) const + inline ShaderAst::DeclareFunctionStatementPtr Impl::DeclareFunction::operator()(std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType) const { auto declareFunctionNode = std::make_unique(); declareFunctionNode->name = std::move(name); @@ -243,7 +243,7 @@ namespace Nz::ShaderBuilder return declareFunctionNode; } - inline std::unique_ptr Impl::DeclareFunction::operator()(std::optional entryStage, std::string name, ShaderAst::StatementPtr statement) const + inline ShaderAst::DeclareFunctionStatementPtr Impl::DeclareFunction::operator()(std::optional entryStage, std::string name, ShaderAst::StatementPtr statement) const { auto declareFunctionNode = std::make_unique(); declareFunctionNode->name = std::move(name); @@ -255,7 +255,7 @@ namespace Nz::ShaderBuilder return declareFunctionNode; } - inline std::unique_ptr Impl::DeclareFunction::operator()(std::optional entryStage, std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType) const + inline ShaderAst::DeclareFunctionStatementPtr Impl::DeclareFunction::operator()(std::optional entryStage, std::string name, std::vector parameters, std::vector statements, ShaderAst::ExpressionValue returnType) const { auto declareFunctionNode = std::make_unique(); declareFunctionNode->name = std::move(name); @@ -269,7 +269,7 @@ namespace Nz::ShaderBuilder return declareFunctionNode; } - inline std::unique_ptr Impl::DeclareOption::operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue) const + inline ShaderAst::DeclareOptionStatementPtr Impl::DeclareOption::operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue) const { auto declareOptionNode = std::make_unique(); declareOptionNode->optName = std::move(name); @@ -279,7 +279,7 @@ namespace Nz::ShaderBuilder return declareOptionNode; } - inline std::unique_ptr Impl::DeclareStruct::operator()(ShaderAst::StructDescription description, ShaderAst::ExpressionValue isExported) const + inline ShaderAst::DeclareStructStatementPtr Impl::DeclareStruct::operator()(ShaderAst::StructDescription description, ShaderAst::ExpressionValue isExported) const { auto declareStructNode = std::make_unique(); declareStructNode->description = std::move(description); @@ -288,7 +288,7 @@ namespace Nz::ShaderBuilder return declareStructNode; } - inline std::unique_ptr Impl::DeclareVariable::operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const + inline ShaderAst::DeclareVariableStatementPtr Impl::DeclareVariable::operator()(std::string name, ShaderAst::ExpressionPtr initialValue) const { auto declareVariableNode = std::make_unique(); declareVariableNode->varName = std::move(name); @@ -297,7 +297,7 @@ namespace Nz::ShaderBuilder return declareVariableNode; } - inline std::unique_ptr Impl::DeclareVariable::operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue) const + inline ShaderAst::DeclareVariableStatementPtr Impl::DeclareVariable::operator()(std::string name, ShaderAst::ExpressionValue type, ShaderAst::ExpressionPtr initialValue) const { auto declareVariableNode = std::make_unique(); declareVariableNode->varName = std::move(name); @@ -307,7 +307,7 @@ namespace Nz::ShaderBuilder return declareVariableNode; } - inline std::unique_ptr Impl::ExpressionStatement::operator()(ShaderAst::ExpressionPtr expression) const + inline ShaderAst::ExpressionStatementPtr Impl::ExpressionStatement::operator()(ShaderAst::ExpressionPtr expression) const { auto expressionStatementNode = std::make_unique(); expressionStatementNode->expression = std::move(expression); @@ -315,7 +315,7 @@ namespace Nz::ShaderBuilder return expressionStatementNode; } - inline std::unique_ptr Impl::For::operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::StatementPtr statement) const + inline ShaderAst::ForStatementPtr Impl::For::operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::StatementPtr statement) const { auto forNode = std::make_unique(); forNode->fromExpr = std::move(fromExpression); @@ -326,7 +326,7 @@ namespace Nz::ShaderBuilder return forNode; } - inline std::unique_ptr Impl::For::operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::ExpressionPtr stepExpression, ShaderAst::StatementPtr statement) const + inline ShaderAst::ForStatementPtr Impl::For::operator()(std::string varName, ShaderAst::ExpressionPtr fromExpression, ShaderAst::ExpressionPtr toExpression, ShaderAst::ExpressionPtr stepExpression, ShaderAst::StatementPtr statement) const { auto forNode = std::make_unique(); forNode->fromExpr = std::move(fromExpression); @@ -338,7 +338,7 @@ namespace Nz::ShaderBuilder return forNode; } - std::unique_ptr Impl::ForEach::operator()(std::string varName, ShaderAst::ExpressionPtr expression, ShaderAst::StatementPtr statement) const + ShaderAst::ForEachStatementPtr Impl::ForEach::operator()(std::string varName, ShaderAst::ExpressionPtr expression, ShaderAst::StatementPtr statement) const { auto forEachNode = std::make_unique(); forEachNode->expression = std::move(expression); @@ -348,7 +348,7 @@ namespace Nz::ShaderBuilder return forEachNode; } - inline std::unique_ptr Impl::Function::operator()(std::size_t funcId) const + inline ShaderAst::FunctionExpressionPtr Impl::Function::operator()(std::size_t funcId) const { auto intrinsicTypeExpr = std::make_unique(); intrinsicTypeExpr->cachedExpressionType = ShaderAst::FunctionType{ funcId }; @@ -357,7 +357,7 @@ namespace Nz::ShaderBuilder return intrinsicTypeExpr; } - inline std::unique_ptr Impl::Identifier::operator()(std::string name) const + inline ShaderAst::IdentifierExpressionPtr Impl::Identifier::operator()(std::string name) const { auto identifierNode = std::make_unique(); identifierNode->identifier = std::move(name); @@ -365,7 +365,7 @@ namespace Nz::ShaderBuilder return identifierNode; } - inline std::unique_ptr Impl::Import::operator()(std::vector modulePath) const + inline ShaderAst::ImportStatementPtr Impl::Import::operator()(std::vector modulePath) const { auto importNode = std::make_unique(); importNode->modulePath = std::move(modulePath); @@ -373,7 +373,7 @@ namespace Nz::ShaderBuilder return importNode; } - inline std::unique_ptr Impl::Intrinsic::operator()(ShaderAst::IntrinsicType intrinsicType, std::vector parameters) const + inline ShaderAst::IntrinsicExpressionPtr Impl::Intrinsic::operator()(ShaderAst::IntrinsicType intrinsicType, std::vector parameters) const { auto intrinsicExpression = std::make_unique(); intrinsicExpression->intrinsic = intrinsicType; @@ -382,7 +382,7 @@ namespace Nz::ShaderBuilder return intrinsicExpression; } - inline std::unique_ptr Impl::IntrinsicFunction::operator()(std::size_t intrinsicFunctionId, ShaderAst::IntrinsicType intrinsicType) const + inline ShaderAst::IntrinsicFunctionExpressionPtr Impl::IntrinsicFunction::operator()(std::size_t intrinsicFunctionId, ShaderAst::IntrinsicType intrinsicType) const { auto intrinsicTypeExpr = std::make_unique(); intrinsicTypeExpr->cachedExpressionType = ShaderAst::IntrinsicFunctionType{ intrinsicType }; @@ -391,7 +391,7 @@ namespace Nz::ShaderBuilder return intrinsicTypeExpr; } - inline std::unique_ptr Impl::Multi::operator()(std::vector statements) const + inline ShaderAst::MultiStatementPtr Impl::Multi::operator()(std::vector statements) const { auto multiStatement = std::make_unique(); multiStatement->statements = std::move(statements); @@ -405,7 +405,7 @@ namespace Nz::ShaderBuilder return std::make_unique(); } - inline std::unique_ptr Impl::Return::operator()(ShaderAst::ExpressionPtr expr) const + inline ShaderAst::ReturnStatementPtr Impl::Return::operator()(ShaderAst::ExpressionPtr expr) const { auto returnNode = std::make_unique(); returnNode->returnExpr = std::move(expr); @@ -413,7 +413,7 @@ namespace Nz::ShaderBuilder return returnNode; } - inline std::unique_ptr Impl::Scoped::operator()(ShaderAst::StatementPtr statement) const + inline ShaderAst::ScopedStatementPtr Impl::Scoped::operator()(ShaderAst::StatementPtr statement) const { auto scopedNode = std::make_unique(); scopedNode->statement = std::move(statement); @@ -421,7 +421,7 @@ namespace Nz::ShaderBuilder return scopedNode; } - inline std::unique_ptr Impl::StructType::operator()(std::size_t structTypeId) const + inline ShaderAst::StructTypeExpressionPtr Impl::StructType::operator()(std::size_t structTypeId) const { auto structTypeExpr = std::make_unique(); structTypeExpr->cachedExpressionType = ShaderAst::StructType{ structTypeId }; @@ -430,7 +430,7 @@ namespace Nz::ShaderBuilder return structTypeExpr; } - inline std::unique_ptr Impl::Swizzle::operator()(ShaderAst::ExpressionPtr expression, std::array swizzleComponents, std::size_t componentCount) const + inline ShaderAst::SwizzleExpressionPtr Impl::Swizzle::operator()(ShaderAst::ExpressionPtr expression, std::array swizzleComponents, std::size_t componentCount) const { assert(componentCount > 0); assert(componentCount <= 4); @@ -443,7 +443,7 @@ namespace Nz::ShaderBuilder return swizzleNode; } - inline std::unique_ptr Impl::Swizzle::operator()(ShaderAst::ExpressionPtr expression, std::vector swizzleComponents) const + inline ShaderAst::SwizzleExpressionPtr Impl::Swizzle::operator()(ShaderAst::ExpressionPtr expression, std::vector swizzleComponents) const { auto swizzleNode = std::make_unique(); swizzleNode->expression = std::move(expression); @@ -459,7 +459,7 @@ namespace Nz::ShaderBuilder return swizzleNode; } - inline std::unique_ptr Impl::Unary::operator()(ShaderAst::UnaryType op, ShaderAst::ExpressionPtr expression) const + inline ShaderAst::UnaryExpressionPtr Impl::Unary::operator()(ShaderAst::UnaryType op, ShaderAst::ExpressionPtr expression) const { auto unaryNode = std::make_unique(); unaryNode->expression = std::move(expression); @@ -468,16 +468,16 @@ namespace Nz::ShaderBuilder return unaryNode; } - inline std::unique_ptr Impl::Variable::operator()(std::size_t variableId, ShaderAst::ExpressionType expressionType) const + inline ShaderAst::VariableValueExpressionPtr Impl::Variable::operator()(std::size_t variableId, ShaderAst::ExpressionType expressionType) const { - auto varNode = std::make_unique(); + auto varNode = std::make_unique(); varNode->variableId = variableId; varNode->cachedExpressionType = std::move(expressionType); return varNode; } - inline std::unique_ptr Impl::While::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr body) const + inline ShaderAst::WhileStatementPtr Impl::While::operator()(ShaderAst::ExpressionPtr condition, ShaderAst::StatementPtr body) const { auto whileNode = std::make_unique(); whileNode->condition = std::move(condition); diff --git a/include/Nazara/Shader/SpirvAstVisitor.hpp b/include/Nazara/Shader/SpirvAstVisitor.hpp index d5a174dac..82f04a035 100644 --- a/include/Nazara/Shader/SpirvAstVisitor.hpp +++ b/include/Nazara/Shader/SpirvAstVisitor.hpp @@ -57,7 +57,6 @@ namespace Nz void Visit(ShaderAst::DeclareVariableStatement& node) override; void Visit(ShaderAst::DiscardStatement& node) override; void Visit(ShaderAst::ExpressionStatement& node) override; - void Visit(ShaderAst::ImportStatement& node) override; void Visit(ShaderAst::IntrinsicExpression& node) override; void Visit(ShaderAst::MultiStatement& node) override; void Visit(ShaderAst::NoOpStatement& node) override; diff --git a/include/Nazara/Shader/SpirvExpressionLoad.hpp b/include/Nazara/Shader/SpirvExpressionLoad.hpp index 2ff279f98..bd1a1b205 100644 --- a/include/Nazara/Shader/SpirvExpressionLoad.hpp +++ b/include/Nazara/Shader/SpirvExpressionLoad.hpp @@ -31,7 +31,7 @@ namespace Nz using AstExpressionVisitorExcept::Visit; void Visit(ShaderAst::AccessIndexExpression& node) override; - void Visit(ShaderAst::VariableExpression& node) override; + void Visit(ShaderAst::VariableValueExpression& node) override; SpirvExpressionLoad& operator=(const SpirvExpressionLoad&) = delete; SpirvExpressionLoad& operator=(SpirvExpressionLoad&&) = delete; diff --git a/include/Nazara/Shader/SpirvExpressionStore.hpp b/include/Nazara/Shader/SpirvExpressionStore.hpp index 43a58fcb1..a052e0ecd 100644 --- a/include/Nazara/Shader/SpirvExpressionStore.hpp +++ b/include/Nazara/Shader/SpirvExpressionStore.hpp @@ -32,7 +32,7 @@ namespace Nz using AstExpressionVisitorExcept::Visit; void Visit(ShaderAst::AccessIndexExpression& node) override; void Visit(ShaderAst::SwizzleExpression& node) override; - void Visit(ShaderAst::VariableExpression& node) override; + void Visit(ShaderAst::VariableValueExpression& node) override; SpirvExpressionStore& operator=(const SpirvExpressionStore&) = delete; SpirvExpressionStore& operator=(SpirvExpressionStore&&) = delete; diff --git a/src/Nazara/Shader/Ast/AstCloner.cpp b/src/Nazara/Shader/Ast/AstCloner.cpp index 10157d21e..5c255ffa6 100644 --- a/src/Nazara/Shader/Ast/AstCloner.cpp +++ b/src/Nazara/Shader/Ast/AstCloner.cpp @@ -471,9 +471,9 @@ namespace Nz::ShaderAst return clone; } - ExpressionPtr AstCloner::Clone(VariableExpression& node) + ExpressionPtr AstCloner::Clone(VariableValueExpression& node) { - auto clone = std::make_unique(); + auto clone = std::make_unique(); clone->variableId = node.variableId; clone->cachedExpressionType = node.cachedExpressionType; diff --git a/src/Nazara/Shader/Ast/AstRecursiveVisitor.cpp b/src/Nazara/Shader/Ast/AstRecursiveVisitor.cpp index 06eb211c7..e6aa679c8 100644 --- a/src/Nazara/Shader/Ast/AstRecursiveVisitor.cpp +++ b/src/Nazara/Shader/Ast/AstRecursiveVisitor.cpp @@ -104,7 +104,7 @@ namespace Nz::ShaderAst node.expression->Visit(*this); } - void AstRecursiveVisitor::Visit(VariableExpression& /*node*/) + void AstRecursiveVisitor::Visit(VariableValueExpression& /*node*/) { /* Nothing to do */ } diff --git a/src/Nazara/Shader/Ast/AstSerializer.cpp b/src/Nazara/Shader/Ast/AstSerializer.cpp index b1a1cd04e..e3a6b376c 100644 --- a/src/Nazara/Shader/Ast/AstSerializer.cpp +++ b/src/Nazara/Shader/Ast/AstSerializer.cpp @@ -177,7 +177,7 @@ namespace Nz::ShaderAst Enum(node.components[i]); } - void AstSerializerBase::Serialize(VariableExpression& node) + void AstSerializerBase::Serialize(VariableValueExpression& node) { SizeT(node.variableId); } diff --git a/src/Nazara/Shader/Ast/AstUtils.cpp b/src/Nazara/Shader/Ast/AstUtils.cpp index 96006b552..8ae24f721 100644 --- a/src/Nazara/Shader/Ast/AstUtils.cpp +++ b/src/Nazara/Shader/Ast/AstUtils.cpp @@ -128,7 +128,7 @@ namespace Nz::ShaderAst } } - void ShaderAstValueCategory::Visit(VariableExpression& /*node*/) + void ShaderAstValueCategory::Visit(VariableValueExpression& /*node*/) { m_expressionCategory = ExpressionCategory::LValue; } diff --git a/src/Nazara/Shader/Ast/DependencyCheckerVisitor.cpp b/src/Nazara/Shader/Ast/DependencyCheckerVisitor.cpp index 3eb46e111..6fe69ce69 100644 --- a/src/Nazara/Shader/Ast/DependencyCheckerVisitor.cpp +++ b/src/Nazara/Shader/Ast/DependencyCheckerVisitor.cpp @@ -161,7 +161,7 @@ namespace Nz::ShaderAst m_currentVariableDeclIndex = {}; } - void DependencyCheckerVisitor::Visit(VariableExpression& node) + void DependencyCheckerVisitor::Visit(VariableValueExpression& node) { assert(m_currentFunctionIndex); if (m_currentVariableDeclIndex) diff --git a/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp b/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp index 86ae274e7..89c638e02 100644 --- a/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp +++ b/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp @@ -157,9 +157,9 @@ namespace Nz::ShaderAst return clone; } - ExpressionPtr IndexRemapperVisitor::Clone(VariableExpression& node) + ExpressionPtr IndexRemapperVisitor::Clone(VariableValueExpression& node) { - VariableExpressionPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + VariableValueExpressionPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); assert(clone->variableId); clone->variableId = Retrieve(m_context->newVarIndices, clone->variableId); diff --git a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp index 86dace007..ceba36f4c 100644 --- a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp +++ b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp @@ -684,9 +684,9 @@ namespace Nz::ShaderAst return clone; } - ExpressionPtr SanitizeVisitor::Clone(VariableExpression& node) + ExpressionPtr SanitizeVisitor::Clone(VariableValueExpression& node) { - auto clone = static_unique_pointer_cast(AstCloner::Clone(node)); + auto clone = static_unique_pointer_cast(AstCloner::Clone(node)); Validate(*clone); return clone; @@ -1678,7 +1678,7 @@ namespace Nz::ShaderAst case IdentifierCategory::Variable: { // Replace IdentifierExpression by VariableExpression - auto varExpr = std::make_unique(); + auto varExpr = std::make_unique(); varExpr->cachedExpressionType = m_context->variableTypes.Retrieve(identifierData->index); varExpr->variableId = identifierData->index; @@ -1731,7 +1731,7 @@ namespace Nz::ShaderAst auto variableDeclaration = ShaderBuilder::DeclareVariable("cachedResult", std::move(expression)); //< Validation will prevent name-clash if required Validate(*variableDeclaration); - auto varExpr = std::make_unique(); + auto varExpr = std::make_unique(); varExpr->variableId = *variableDeclaration->varIndex; m_context->currentStatementList->push_back(std::move(variableDeclaration)); @@ -2903,7 +2903,7 @@ namespace Nz::ShaderAst node.cachedExpressionType = exprType; } - void SanitizeVisitor::Validate(VariableExpression& node) + void SanitizeVisitor::Validate(VariableValueExpression& node) { node.cachedExpressionType = m_context->variableTypes.Retrieve(node.variableId); } diff --git a/src/Nazara/Shader/GlslWriter.cpp b/src/Nazara/Shader/GlslWriter.cpp index cea23cb6b..2c69a9814 100644 --- a/src/Nazara/Shader/GlslWriter.cpp +++ b/src/Nazara/Shader/GlslWriter.cpp @@ -1002,7 +1002,7 @@ namespace Nz Visit(node.expression); } - void GlslWriter::Visit(ShaderAst::VariableExpression& node) + void GlslWriter::Visit(ShaderAst::VariableValueExpression& node) { const std::string& varName = Retrieve(m_currentState->variableNames, node.variableId); Append(varName); diff --git a/src/Nazara/Shader/LangWriter.cpp b/src/Nazara/Shader/LangWriter.cpp index 93ba2c960..05b6d5421 100644 --- a/src/Nazara/Shader/LangWriter.cpp +++ b/src/Nazara/Shader/LangWriter.cpp @@ -116,9 +116,9 @@ namespace Nz ShaderAst::Module* module; std::size_t currentModuleIndex; std::stringstream stream; - std::unordered_map constantNames; + std::unordered_map constants; std::unordered_map structs; - std::unordered_map variableNames; + std::unordered_map variables; std::vector moduleNames; bool isInEntryPoint = false; unsigned int indentLevel = 0; @@ -661,8 +661,8 @@ namespace Nz identifier.moduleIndex = m_currentState->currentModuleIndex; identifier.name = std::move(constantName); - assert(m_currentState->constantNames.find(constantIndex) == m_currentState->constantNames.end()); - m_currentState->constantNames.emplace(constantIndex, std::move(identifier)); + assert(m_currentState->constants.find(constantIndex) == m_currentState->constants.end()); + m_currentState->constants.emplace(constantIndex, std::move(identifier)); } void LangWriter::RegisterStruct(std::size_t structIndex, std::string structName) @@ -681,8 +681,8 @@ namespace Nz identifier.moduleIndex = m_currentState->currentModuleIndex; identifier.name = std::move(varName); - assert(m_currentState->variableNames.find(varIndex) == m_currentState->variableNames.end()); - m_currentState->variableNames.emplace(varIndex, std::move(identifier)); + assert(m_currentState->variables.find(varIndex) == m_currentState->variables.end()); + m_currentState->variables.emplace(varIndex, std::move(identifier)); } void LangWriter::ScopeVisit(ShaderAst::Statement& node) @@ -911,7 +911,7 @@ namespace Nz void LangWriter::Visit(ShaderAst::ConstantExpression& node) { - AppendIdentifier(m_currentState->constantNames, node.constantId); + AppendIdentifier(m_currentState->constants, node.constantId); } void LangWriter::Visit(ShaderAst::DeclareExternalStatement& node) @@ -1201,9 +1201,9 @@ namespace Nz Append(componentStr[node.components[i]]); } - void LangWriter::Visit(ShaderAst::VariableExpression& node) + void LangWriter::Visit(ShaderAst::VariableValueExpression& node) { - AppendIdentifier(m_currentState->variableNames, node.variableId); + AppendIdentifier(m_currentState->variables, node.variableId); } void LangWriter::Visit(ShaderAst::UnaryExpression& node) diff --git a/src/Nazara/Shader/SpirvAstVisitor.cpp b/src/Nazara/Shader/SpirvAstVisitor.cpp index be89238b9..ff658154b 100644 --- a/src/Nazara/Shader/SpirvAstVisitor.cpp +++ b/src/Nazara/Shader/SpirvAstVisitor.cpp @@ -1106,7 +1106,7 @@ namespace Nz PushResultId(resultId); } - void SpirvAstVisitor::Visit(ShaderAst::VariableExpression& node) + void SpirvAstVisitor::Visit(ShaderAst::VariableValueExpression& node) { SpirvExpressionLoad loadVisitor(m_writer, *this, *m_currentBlock); PushResultId(loadVisitor.Evaluate(node)); diff --git a/src/Nazara/Shader/SpirvExpressionLoad.cpp b/src/Nazara/Shader/SpirvExpressionLoad.cpp index e234d64bd..b17207880 100644 --- a/src/Nazara/Shader/SpirvExpressionLoad.cpp +++ b/src/Nazara/Shader/SpirvExpressionLoad.cpp @@ -128,7 +128,7 @@ namespace Nz }, m_value); } - void SpirvExpressionLoad::Visit(ShaderAst::VariableExpression& node) + void SpirvExpressionLoad::Visit(ShaderAst::VariableValueExpression& node) { const auto& var = m_visitor.GetVariable(node.variableId); m_value = Pointer{ var.storage, var.pointerId, var.pointedTypeId }; diff --git a/src/Nazara/Shader/SpirvExpressionStore.cpp b/src/Nazara/Shader/SpirvExpressionStore.cpp index 571b01ef4..6314cee27 100644 --- a/src/Nazara/Shader/SpirvExpressionStore.cpp +++ b/src/Nazara/Shader/SpirvExpressionStore.cpp @@ -156,7 +156,7 @@ namespace Nz }, m_value); } - void SpirvExpressionStore::Visit(ShaderAst::VariableExpression& node) + void SpirvExpressionStore::Visit(ShaderAst::VariableValueExpression& node) { const auto& var = m_visitor.GetVariable(node.variableId); m_value = Pointer{ var.storage, var.pointerId };