From 1401c46d449df3bec56471815f690e7fa75e6031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 9 Mar 2022 08:08:23 +0100 Subject: [PATCH] Shader: Better fix than 3ccec0ce --- src/Nazara/Shader/Ast/SanitizeVisitor.cpp | 6 ++---- src/Nazara/Shader/GlslWriter.cpp | 2 +- src/Nazara/Shader/SpirvWriter.cpp | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp index ed7523bdb..86dace007 100644 --- a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp +++ b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp @@ -887,11 +887,9 @@ namespace Nz::ShaderAst } if (node.returnType.HasValue()) - { clone->returnType = ResolveType(node.returnType); - if (clone->returnType.HasValue() && IsNoType(clone->returnType.GetResultingValue())) - clone->returnType.Reset(); //< handle void as no return type - } + else + clone->returnType = ExpressionType{ NoType{} }; if (node.depthWrite.HasValue()) clone->depthWrite = ComputeExprValue(node.depthWrite); diff --git a/src/Nazara/Shader/GlslWriter.cpp b/src/Nazara/Shader/GlslWriter.cpp index 79e274d7f..cea23cb6b 100644 --- a/src/Nazara/Shader/GlslWriter.cpp +++ b/src/Nazara/Shader/GlslWriter.cpp @@ -727,7 +727,7 @@ namespace Nz AppendLine(); } - if (node.returnType.HasValue()) + if (node.returnType.HasValue() && !IsNoType(node.returnType.GetResultingValue())) { assert(std::holds_alternative(node.returnType.GetResultingValue())); std::size_t outputStructIndex = std::get(node.returnType.GetResultingValue()).structIndex; diff --git a/src/Nazara/Shader/SpirvWriter.cpp b/src/Nazara/Shader/SpirvWriter.cpp index 98000f756..63c28911b 100644 --- a/src/Nazara/Shader/SpirvWriter.cpp +++ b/src/Nazara/Shader/SpirvWriter.cpp @@ -280,7 +280,7 @@ namespace Nz std::optional outputStructId; std::vector outputs; - if (node.returnType.HasValue()) + if (node.returnType.HasValue() && !IsNoType(node.returnType.GetResultingValue())) { const ShaderAst::ExpressionType& returnType = node.returnType.GetResultingValue();