diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-06-03 01:53:47 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-06-03 01:54:01 +0300 |
commit | 2851e91db41c45806ca3ed87c8363c44b2d60521 (patch) | |
tree | fb4dfa6b5415a89a04f9a943f429ac840b84e568 /source/blender/draw/engines/eevee/eevee_lights.c | |
parent | 433bb91a378fb1053b345f37eac958ff682fbdb7 (diff) |
Eevee: Cleanup. Group data functions into one file.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_lights.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_lights.c | 62 |
1 files changed, 12 insertions, 50 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_lights.c b/source/blender/draw/engines/eevee/eevee_lights.c index 1685d71dfbe..0c27ede2148 100644 --- a/source/blender/draw/engines/eevee/eevee_lights.c +++ b/source/blender/draw/engines/eevee/eevee_lights.c @@ -69,25 +69,6 @@ extern char datatoc_shadow_store_frag_glsl[]; /* *********** FUNCTIONS *********** */ -static void eevee_lamp_engine_data_free(void *storage) -{ - EEVEE_LampEngineData *led = (EEVEE_LampEngineData *)storage; - MEM_SAFE_FREE(led->storage); - BLI_freelistN(&led->shadow_caster_list); -} - -static EEVEE_LampEngineData *eevee_get_lamp_engine_data(Object *ob) -{ - EEVEE_LampEngineData **ledata = (EEVEE_LampEngineData **)DRW_object_engine_data_get(ob, &draw_engine_eevee_type, &eevee_lamp_engine_data_free); - - if (*ledata == NULL) { - *ledata = MEM_callocN(sizeof(**ledata), "EEVEE_LampEngineData"); - (*ledata)->need_update = true; - } - - return *ledata; -} - void EEVEE_lights_init(EEVEE_SceneLayerData *sldata) { const unsigned int shadow_ubo_size = sizeof(EEVEE_ShadowCube) * MAX_SHADOW_CUBE + @@ -152,7 +133,7 @@ void EEVEE_lights_cache_add(EEVEE_SceneLayerData *sldata, Object *ob) } else { Lamp *la = (Lamp *)ob->data; - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); if ((ob->deg_update_flag & DEG_RUNTIME_DATA_UPDATE) != 0) { led->need_update = true; @@ -633,7 +614,7 @@ static void delete_pruned_shadowcaster(EEVEE_LampEngineData *led) static void light_tag_shadow_update(Object *lamp, Object *ob) { Lamp *la = lamp->data; - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(lamp); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(lamp); bool is_inside_range = cube_bbox_intersect(lamp->obmat[3], la->clipend, BKE_object_boundbox_get(ob), ob->obmat); ShadowCaster *ldata = search_object_in_list(&led->shadow_caster_list, ob); @@ -647,7 +628,7 @@ static void light_tag_shadow_update(Object *lamp, Object *ob) led->need_update = true; } else { - EEVEE_ObjectEngineData *oedata = EEVEE_get_object_engine_data(ob); + EEVEE_ObjectEngineData *oedata = EEVEE_object_data_get(ob); if (oedata->need_update) { led->need_update = true; } @@ -682,7 +663,7 @@ void EEVEE_lights_update(EEVEE_SceneLayerData *sldata) /* Prune shadow casters to remove if object does not exists anymore (unprune them if object exists) */ Object *lamp; for (i = 0; (lamp = linfo->shadow_cube_ref[i]) && (i < MAX_SHADOW_CUBE); i++) { - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(lamp); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(lamp); if ((linfo->update_flag & LIGHT_UPDATE_SHADOW_CUBE) != 0) { led->need_update = true; @@ -698,23 +679,23 @@ void EEVEE_lights_update(EEVEE_SceneLayerData *sldata) } for (i = 0; (ob = linfo->light_ref[i]) && (i < MAX_LIGHT); i++) { - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); eevee_light_setup(ob, linfo, led); } for (i = 0; (ob = linfo->shadow_cube_ref[i]) && (i < MAX_SHADOW_CUBE); i++) { - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); eevee_shadow_cube_setup(ob, linfo, led); delete_pruned_shadowcaster(led); } for (i = 0; (ob = linfo->shadow_map_ref[i]) && (i < MAX_SHADOW_MAP); i++) { - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); eevee_shadow_map_setup(ob, linfo, led); } for (i = 0; (ob = linfo->shadow_cascade_ref[i]) && (i < MAX_SHADOW_CASCADE); i++) { - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); eevee_shadow_cascade_setup(ob, linfo, led); } @@ -733,7 +714,7 @@ void EEVEE_draw_shadows(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl) /* Cube Shadow Maps */ /* Render each shadow to one layer of the array */ for (i = 0; (ob = linfo->shadow_cube_ref[i]) && (i < MAX_SHADOW_CUBE); i++) { - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); Lamp *la = (Lamp *)ob->data; if (led->need_update) { @@ -769,7 +750,7 @@ void EEVEE_draw_shadows(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl) /* Render each shadow to one layer of the array */ for (i = 0; (ob = linfo->shadow_map_ref[i]) && (i < MAX_SHADOW_MAP); i++) { - EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); + EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); EEVEE_ShadowMapData *evsmd = (EEVEE_ShadowMapData *)led->storage; linfo->layer = i; @@ -784,7 +765,7 @@ void EEVEE_draw_shadows(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl) // /* Render each shadow to one layer of the array */ // for (i = 0; (ob = linfo->shadow_cascade_ref[i]) && (i < MAX_SHADOW_CASCADE); i++) { -// EEVEE_LampEngineData *led = eevee_get_lamp_engine_data(ob); +// EEVEE_LampEngineData *led = EEVEE_lamp_data_get(ob); // EEVEE_ShadowCascadeData *evscd = (EEVEE_ShadowCascadeData *)led->storage; // EEVEE_ShadowRender *srd = &linfo->shadow_render_data; @@ -802,23 +783,4 @@ void EEVEE_lights_free(void) { DRW_SHADER_FREE_SAFE(e_data.shadow_sh); DRW_SHADER_FREE_SAFE(e_data.shadow_store_sh); -} - -void EEVEE_scene_layer_lights_free(EEVEE_SceneLayerData *sldata) -{ - MEM_SAFE_FREE(sldata->lamps); - DRW_UBO_FREE_SAFE(sldata->light_ubo); - DRW_UBO_FREE_SAFE(sldata->shadow_ubo); - DRW_UBO_FREE_SAFE(sldata->shadow_render_ubo); - DRW_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cube_target_fb); - DRW_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cube_fb); - DRW_FRAMEBUFFER_FREE_SAFE(sldata->shadow_map_fb); - DRW_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cascade_fb); - DRW_TEXTURE_FREE_SAFE(sldata->shadow_depth_cube_target); - DRW_TEXTURE_FREE_SAFE(sldata->shadow_color_cube_target); - DRW_TEXTURE_FREE_SAFE(sldata->shadow_depth_cube_pool); - DRW_TEXTURE_FREE_SAFE(sldata->shadow_depth_map_pool); - DRW_TEXTURE_FREE_SAFE(sldata->shadow_depth_cascade_pool); - - BLI_freelistN(&sldata->shadow_casters); -} +}
\ No newline at end of file |