diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-02-26 22:50:11 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-02-27 16:50:16 +0300 |
commit | be284c82d4a66d3eca568c7919555ce2d16073a0 (patch) | |
tree | bdcd17fb056643ef3eab874717a5ab34f077806f /intern/gawain | |
parent | 3cc4070a30ea2f4eb9de4b4679a29e6aa9807dbb (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.c | 17 |
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) |