diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-10-08 16:49:25 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-10-08 16:49:25 +0300 |
commit | f7db1a4366e8391aea87cc39a5e7bfd6141dd283 (patch) | |
tree | 12e7f4c46e06ca0ea56ee9aeb4bf272c9d413d9e /source/blender/gpu | |
parent | adfbf276a15346c38cc6b7652191c005b9a3ae9b (diff) |
Gawain: Make common uniforms become builtins
This improves eevee's cache performance by 13% in my test.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/GPU_shader.h | 1 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_shader.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h index 5b62bafd402..f3de3240c26 100644 --- a/source/blender/gpu/GPU_shader.h +++ b/source/blender/gpu/GPU_shader.h @@ -76,6 +76,7 @@ void *GPU_fx_shader_get_interface(GPUShader *shader); void GPU_fx_shader_set_interface(GPUShader *shader, void *interface); int GPU_shader_get_uniform(GPUShader *shader, const char *name); +int GPU_shader_get_builtin_uniform(GPUShader *shader, int builtin); int GPU_shader_get_uniform_block(GPUShader *shader, const char *name); void GPU_shader_uniform_vector(GPUShader *shader, int location, int length, int arraysize, const float *value); diff --git a/source/blender/gpu/intern/gpu_shader.c b/source/blender/gpu/intern/gpu_shader.c index 66049b1d2a1..cc1e1e8bb14 100644 --- a/source/blender/gpu/intern/gpu_shader.c +++ b/source/blender/gpu/intern/gpu_shader.c @@ -557,6 +557,13 @@ int GPU_shader_get_uniform(GPUShader *shader, const char *name) return uniform ? uniform->location : -1; } +int GPU_shader_get_builtin_uniform(GPUShader *shader, int builtin) +{ + BLI_assert(shader && shader->program); + const Gwn_ShaderInput *uniform = GWN_shaderinterface_uniform_builtin(shader->interface, builtin); + return uniform ? uniform->location : -1; +} + int GPU_shader_get_uniform_block(GPUShader *shader, const char *name) { BLI_assert(shader && shader->program); |