From ff4daae11db0ab811cac66e262d289a4107bba4a Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 27 Dec 2017 23:48:41 +0100 Subject: Add uniform (shader global variable) --- src/RenderBackend/OpenGL/PixelShader.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/RenderBackend/OpenGL/PixelShader.cpp') diff --git a/src/RenderBackend/OpenGL/PixelShader.cpp b/src/RenderBackend/OpenGL/PixelShader.cpp index 8aa4d9a..f263513 100644 --- a/src/RenderBackend/OpenGL/PixelShader.cpp +++ b/src/RenderBackend/OpenGL/PixelShader.cpp @@ -49,6 +49,24 @@ namespace amalgine return ShaderOutputVec4(this, attributeIndex); } + // TODO: Generate warning if global variable is defined but not assigned to? + ShaderGlobalVec3 PixelShader::defineGlobalVec3(const std::string &name) + { + if(!isShaderVariableNameValid(name.c_str())) + throw PixelShaderInvalidAttributeName(name); + + if(globalAttributes.find(name) != globalAttributes.end()) + throw PixelShaderAttributeAlreadyDefined(name); + + writeHeader("uniform vec3 "); + writeHeader(name); + writeHeader(";\n"); + + ShaderGlobalVec3 globalVec(name); + globalAttributes[name] = globalVec.getVecObject(); + return ShaderGlobalVec3(globalVec); + } + i32 PixelShader::defineOutputVariable(const string &variableName, const char *typeName) { if(!isShaderVariableNameValid(variableName.c_str())) -- cgit v1.2.3