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-06-03 01:53:47 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-06-03 01:54:01 +0300
commit2851e91db41c45806ca3ed87c8363c44b2d60521 (patch)
treefb4dfa6b5415a89a04f9a943f429ac840b84e568 /source/blender/draw/engines/eevee/eevee_lights.c
parent433bb91a378fb1053b345f37eac958ff682fbdb7 (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.c62
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