aboutsummaryrefslogtreecommitdiff
path: root/src/RenderBackend/OpenGL/PixelShader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/RenderBackend/OpenGL/PixelShader.cpp')
-rw-r--r--src/RenderBackend/OpenGL/PixelShader.cpp18
1 files changed, 18 insertions, 0 deletions
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()))