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>2017-03-19 00:14:53 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-03-20 17:19:03 +0300
commitfc72a2ff4b470b1563d8480d231ca5b1b03a7983 (patch)
tree3fa13f6ff2c3b4fd3610992318171cb1799eebfd /source/blender/draw/modes/particle_mode.c
parent69a17bce1a29f89859d0148733e8f1086b033432 (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.c76
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();