Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-02-26 22:50:11 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-02-27 16:50:16 +0300
commitbe284c82d4a66d3eca568c7919555ce2d16073a0 (patch)
treebdcd17fb056643ef3eab874717a5ab34f077806f /intern/gawain
parent3cc4070a30ea2f4eb9de4b4679a29e6aa9807dbb (diff)
GWN: Query builtin uniform at shader creation.
This avoids having non null entries in shaderface->builtin_uniforms and a redundant check.
Diffstat (limited to 'intern/gawain')
-rw-r--r--intern/gawain/src/gwn_shader_interface.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/intern/gawain/src/gwn_shader_interface.c b/intern/gawain/src/gwn_shader_interface.c
index d8103abcd3a..d48cb7d2559 100644
--- a/intern/gawain/src/gwn_shader_interface.c
+++ b/intern/gawain/src/gwn_shader_interface.c
@@ -265,6 +265,14 @@ Gwn_ShaderInterface* GWN_shaderinterface_create(GLint program)
#endif
}
+ // Builtin Uniforms
+ for (Gwn_UniformBuiltin u = GWN_UNIFORM_NONE + 1; u < GWN_UNIFORM_CUSTOM; ++u)
+ {
+ const char* builtin_name = BuiltinUniform_name(u);
+ if (glGetUniformLocation(program, builtin_name) != -1)
+ add_uniform((Gwn_ShaderInterface*)shaderface, builtin_name);
+ }
+
// Batches ref buffer
shaderface->batches_ct = GWN_SHADERINTERFACE_REF_ALLOC_COUNT;
shaderface->batches = calloc(shaderface->batches_ct, sizeof(Gwn_Batch*));
@@ -309,14 +317,7 @@ const Gwn_ShaderInput* GWN_shaderinterface_uniform_builtin(const Gwn_ShaderInter
assert(builtin != GWN_UNIFORM_CUSTOM);
assert(builtin != GWN_NUM_UNIFORMS);
#endif
-
- const Gwn_ShaderInput* input = shaderface->builtin_uniforms[builtin];
-
- // If input is not found add it so it's found next time.
- if (input == NULL)
- input = add_uniform((Gwn_ShaderInterface*)shaderface, BuiltinUniform_name(builtin));
-
- return (input->location != -1) ? input : NULL;
+ return shaderface->builtin_uniforms[builtin];
}
const Gwn_ShaderInput* GWN_shaderinterface_ubo(const Gwn_ShaderInterface* shaderface, const char* name)