Commit: 56e9629d96f1cc42b0ba47af562b14ed79b9ae2e
Author: Mike Erwin
Date:   Thu Apr 13 00:51:18 2017 -0400
Branches: blender2.8
https://developer.blender.org/rB56e9629d96f1cc42b0ba47af562b14ed79b9ae2e

Gawain: look up array uniforms correctly

Look up "name[0]" when asked for "name", since that marks the beginning of the 
array.

We're comparing to the name stored in ShaderInterface which comes from 
glGetActiveUniform.

===================================================================

M       intern/gawain/src/immediate.c

===================================================================

diff --git a/intern/gawain/src/immediate.c b/intern/gawain/src/immediate.c
index f384887a2ad..f3fc046d2c5 100644
--- a/intern/gawain/src/immediate.c
+++ b/intern/gawain/src/immediate.c
@@ -754,8 +754,23 @@ void immUniform3fv(const char* name, const float data[3])
        glUniform3fv(uniform->location, 1, data);
        }
 
-void immUniformArray3fv(const char* name, const float *data, int count)
+// can increase this limit or move to another file
+#define MAX_UNIFORM_NAME_LEN 60
+
+void immUniformArray3fv(const char* bare_name, const float *data, int count)
        {
+       // look up "name[0]" when given "name"
+       const size_t len = strlen(bare_name);
+#if TRUST_NO_ONE
+       assert(len <= MAX_UNIFORM_NAME_LEN);
+#endif
+       char name[MAX_UNIFORM_NAME_LEN];
+       strcpy(name, bare_name);
+       name[len + 0] = '[';
+       name[len + 1] = '0';
+       name[len + 2] = ']';
+       name[len + 3] = '\0';
+
        GET_UNIFORM
        glUniform3fv(uniform->location, count, data);
        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to