diff options
author | Thomas Szepe <HG1_public@gmx.net> | 2015-07-03 18:07:31 +0300 |
---|---|---|
committer | Thomas Szepe <HG1_public@gmx.net> | 2015-07-03 18:07:31 +0300 |
commit | 97b431e42dd2a87eed08423afc42a0ceb7448bff (patch) | |
tree | 38eda791d21e7c97dff4c6902e44d7ad9d7697a6 /source | |
parent | 1ace3272aa4fbde703c975ddec4e1ccf31066da5 (diff) |
BGE: Add integer uniforms for 2D Filter
Actually it is only possible to pass float properties to a 2D filter (GLSL fragment shader).
This patch allows also to use integer properties for the 2D filter.
Reviewers: sybren, agoose77, kupoman, moguri, lordloki, panzergame
Reviewed By: lordloki, panzergame
Projects: #game_engine
Differential Revision: https://developer.blender.org/D1370
Diffstat (limited to 'source')
-rw-r--r-- | source/gameengine/Rasterizer/RAS_2DFilterManager.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp index 908c5979249..4133f2b1461 100644 --- a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp +++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp @@ -257,10 +257,24 @@ void RAS_2DFilterManager::StartShaderProgram(int passindex) for (i=0; i<objProperties; i++) { uniformLoc = glGetUniformLocationARB(m_filters[passindex], m_properties[passindex][i]); - if (uniformLoc != -1) - { - float value = ((CValue*)m_gameObjects[passindex])->GetPropertyNumber(m_properties[passindex][i], 0.0); - glUniform1fARB(uniformLoc,value); + + if (uniformLoc == -1) + continue; + + CValue *property = ((CValue *)m_gameObjects[passindex])->GetProperty(m_properties[passindex][i]); + + if (!property) + continue; + + switch (property->GetValueType()) { + case VALUE_INT_TYPE: + glUniform1iARB(uniformLoc, property->GetNumber()); + break; + case VALUE_FLOAT_TYPE: + glUniform1fARB(uniformLoc, property->GetNumber()); + break; + default: + break; } } } |