diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-03-19 00:14:53 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-03-20 17:19:03 +0300 |
commit | fc72a2ff4b470b1563d8480d231ca5b1b03a7983 (patch) | |
tree | 3fa13f6ff2c3b4fd3610992318171cb1799eebfd /source/blender/draw/modes/particle_mode.c | |
parent | 69a17bce1a29f89859d0148733e8f1086b033432 (diff) |
Draw module: code style, encapsulate static vars
Diffstat (limited to 'source/blender/draw/modes/particle_mode.c')
-rw-r--r-- | source/blender/draw/modes/particle_mode.c | 76 |
1 files changed, 37 insertions, 39 deletions
diff --git a/source/blender/draw/modes/particle_mode.c b/source/blender/draw/modes/particle_mode.c index 4c36e1dd1a7..393268f81c2 100644 --- a/source/blender/draw/modes/particle_mode.c +++ b/source/blender/draw/modes/particle_mode.c @@ -85,26 +85,24 @@ typedef struct PARTICLE_Data { /* *********** STATIC *********** */ -/* This keeps the references of the shading groups for - * easy access in PARTICLE_cache_populate() */ -static DRWShadingGroup *group; - -/* If needed, contains all global/Theme colors - * Add needed theme colors / values to DRW_globals_update() and update UBO - * Not needed for constant color. */ -extern struct GPUUniformBuffer *globals_ubo; /* draw_common.c */ -extern struct GlobalsUboStorage ts; /* draw_common.c */ - -/* Custom shaders : - * Add sources to source/blender/draw/modes/shaders - * init in PARTICLE_engine_init(); - * free in PARTICLE_engine_free(); */ -static struct GPUShader *custom_shader = NULL; - -/* This keeps the reference of the viewport engine data because - * DRW_viewport_engine_data_get is slow and we don't want to - * call it for every object */ -static PARTICLE_Data *vedata; +static struct { + /* Custom shaders : + * Add sources to source/blender/draw/modes/shaders + * init in PARTICLE_engine_init(); + * free in PARTICLE_engine_free(); */ + struct GPUShader *custom_shader; +} e_data = {NULL}; /* Engine data */ + +static struct { + /* This keeps the references of the shading groups for + * easy access in PARTICLE_cache_populate() */ + DRWShadingGroup *group; + + /* This keeps the reference of the viewport engine data because + * DRW_viewport_engine_data_get is slow and we don't want to + * call it for every object */ + PARTICLE_Data *vedata; +} g_data = {NULL}; /* Transient data */ /* *********** FUNCTIONS *********** */ @@ -113,10 +111,10 @@ static PARTICLE_Data *vedata; * (Optional) */ static void PARTICLE_engine_init(void) { - vedata = DRW_viewport_engine_data_get("ParticleMode"); - PARTICLE_TextureList *txl = vedata->txl; - PARTICLE_FramebufferList *fbl = vedata->fbl; - PARTICLE_StorageList *stl = vedata->stl; + PARTICLE_Data *ved = DRW_viewport_engine_data_get("ParticleMode"); + PARTICLE_TextureList *txl = ved->txl; + PARTICLE_FramebufferList *fbl = ved->fbl; + PARTICLE_StorageList *stl = ved->stl; UNUSED_VARS(txl, fbl, stl); @@ -135,8 +133,8 @@ static void PARTICLE_engine_init(void) * tex, 2); */ - if (!custom_shader) { - custom_shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR); + if (!e_data.custom_shader) { + e_data.custom_shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR); } } @@ -144,9 +142,9 @@ static void PARTICLE_engine_init(void) * Assume that all Passes are NULL */ static void PARTICLE_cache_init(void) { - vedata = DRW_viewport_engine_data_get("ParticleMode"); - PARTICLE_PassList *psl = vedata->psl; - PARTICLE_StorageList *stl = vedata->stl; + g_data.vedata = DRW_viewport_engine_data_get("ParticleMode"); + PARTICLE_PassList *psl = g_data.vedata->psl; + PARTICLE_StorageList *stl = g_data.vedata->stl; UNUSED_VARS(stl); @@ -157,16 +155,16 @@ static void PARTICLE_cache_init(void) /* Create a shadingGroup using a function in draw_common.c or custom one */ /* - * group = shgroup_dynlines_uniform_color(psl->pass, ts.colorWire); + * g_data.group = shgroup_dynlines_uniform_color(psl->pass, ts.colorWire); * -- or -- - * group = DRW_shgroup_create(custom_shader, psl->pass); + * g_data.group = DRW_shgroup_create(e_data.custom_shader, psl->pass); */ - group = DRW_shgroup_create(custom_shader, psl->pass); + g_data.group = DRW_shgroup_create(e_data.custom_shader, psl->pass); /* Uniforms need a pointer to it's value so be sure it's accessible at * any given time (i.e. use static vars) */ static float color[4] = {0.2f, 0.5f, 0.3f, 1.0}; - DRW_shgroup_uniform_vec4(group, "color", color, 1); + DRW_shgroup_uniform_vec4(g_data.group, "color", color, 1); } } @@ -174,8 +172,8 @@ static void PARTICLE_cache_init(void) /* Add geometry to shadingGroups. Execute for each objects */ static void PARTICLE_cache_populate(Object *ob) { - PARTICLE_PassList *psl = vedata->psl; - PARTICLE_StorageList *stl = vedata->stl; + PARTICLE_PassList *psl = g_data.vedata->psl; + PARTICLE_StorageList *stl = g_data.vedata->stl; UNUSED_VARS(psl, stl); @@ -184,15 +182,15 @@ static void PARTICLE_cache_populate(Object *ob) struct Batch *geom = DRW_cache_surface_get(ob); /* Add geom to a shading group */ - DRW_shgroup_call_add(group, geom, ob->obmat); + DRW_shgroup_call_add(g_data.group, geom, ob->obmat); } } /* Optional: Post-cache_populate callback */ static void PARTICLE_cache_finish(void) { - PARTICLE_PassList *psl = vedata->psl; - PARTICLE_StorageList *stl = vedata->stl; + PARTICLE_PassList *psl = g_data.vedata->psl; + PARTICLE_StorageList *stl = g_data.vedata->stl; /* Do something here! dependant on the objects gathered */ UNUSED_VARS(psl, stl); @@ -203,7 +201,7 @@ static void PARTICLE_draw_scene(void) { PARTICLE_Data *ved = DRW_viewport_engine_data_get("ParticleMode"); PARTICLE_PassList *psl = ved->psl; - PARTICLE_FramebufferList *fbl = vedata->fbl; + PARTICLE_FramebufferList *fbl = ved->fbl; /* Default framebuffer and texture */ DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); |