Shader: Remove the need of layout(std140) in external block

This commit is contained in:
Jérôme Leclercq
2021-04-12 18:52:48 +02:00
parent 854bb16320
commit 3499c1f92f
8 changed files with 144 additions and 125 deletions

View File

@@ -6,6 +6,7 @@
#include <Nazara/Core/MemoryView.hpp>
#include <Nazara/OpenGLRenderer/Utils.hpp>
#include <Nazara/Shader/GlslWriter.hpp>
#include <Nazara/Shader/ShaderAstCloner.hpp>
#include <Nazara/Shader/ShaderAstSerializer.hpp>
#include <Nazara/Shader/ShaderLangLexer.hpp>
#include <Nazara/Shader/ShaderLangParser.hpp>
@@ -122,7 +123,9 @@ namespace Nz
if (!shader.Create(device, ToOpenGL(shaderStage)))
throw std::runtime_error("failed to create shader"); //< TODO: Handle error message
std::string code = writer.Generate(shaderStage, shaderAst, states);
ShaderAst::AstCloner cloner; //< FIXME: Required because writer may update AST
ShaderAst::StatementPtr clonedAst = cloner.Clone(shaderAst);
std::string code = writer.Generate(shaderStage, clonedAst, states);
shader.SetSource(code.data(), code.size());
shader.Compile();