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
parent433bb91a378fb1053b345f37eac958ff682fbdb7 (diff)
Eevee: Cleanup. Group data functions into one file.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/draw/CMakeLists.txt1
-rw-r--r--source/blender/draw/engines/eevee/eevee_data.c105
-rw-r--r--source/blender/draw/engines/eevee/eevee_engine.c41
-rw-r--r--source/blender/draw/engines/eevee/eevee_lights.c62
-rw-r--r--source/blender/draw/engines/eevee/eevee_private.h8
-rw-r--r--source/blender/draw/engines/eevee/eevee_probes.c13
6 files changed, 130 insertions, 100 deletions
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index a8a6d3144ca..a7aabeb4662 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -80,6 +80,7 @@ set(SRC
modes/sculpt_mode.c
engines/basic/basic_engine.c
engines/clay/clay_engine.c
+ engines/eevee/eevee_data.c
engines/eevee/eevee_engine.c
engines/eevee/eevee_lights.c
engines/eevee/eevee_probes.c
diff --git a/source/blender/draw/engines/eevee/eevee_data.c b/source/blender/draw/engines/eevee/eevee_data.c
new file mode 100644
index 00000000000..66cb82ae277
--- /dev/null
+++ b/source/blender/draw/engines/eevee/eevee_data.c
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2016, Blender Foundation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Blender Institute
+ *
+ */
+
+/* All specific data handler for Objects, Lights, SceneLayers, ...
+ */
+
+/** \file eevee_data.c
+ * \ingroup draw_engine
+ */
+
+#include "DRW_render.h"
+
+#include "eevee_private.h"
+
+static void eevee_scene_layer_data_free(void *storage)
+{
+ EEVEE_SceneLayerData *sldata = (EEVEE_SceneLayerData *)storage;
+
+ /* Lights */
+ 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);
+
+ /* Probes */
+ MEM_SAFE_FREE(sldata->probes);
+ DRW_UBO_FREE_SAFE(sldata->probe_ubo);
+ DRW_FRAMEBUFFER_FREE_SAFE(sldata->probe_fb);
+ DRW_FRAMEBUFFER_FREE_SAFE(sldata->probe_filter_fb);
+ DRW_FRAMEBUFFER_FREE_SAFE(sldata->probe_sh_fb);
+ DRW_TEXTURE_FREE_SAFE(sldata->probe_rt);
+ DRW_TEXTURE_FREE_SAFE(sldata->probe_depth_rt);
+ DRW_TEXTURE_FREE_SAFE(sldata->probe_pool);
+ DRW_TEXTURE_FREE_SAFE(sldata->probe_sh);
+}
+
+static void eevee_lamp_data_free(void *storage)
+{
+ EEVEE_LampEngineData *led = (EEVEE_LampEngineData *)storage;
+
+ MEM_SAFE_FREE(led->storage);
+ BLI_freelistN(&led->shadow_caster_list);
+}
+
+EEVEE_SceneLayerData *EEVEE_scene_layer_data_get(void)
+{
+ EEVEE_SceneLayerData **sldata = (EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(&draw_engine_eevee_type, &eevee_scene_layer_data_free);
+
+ if (*sldata == NULL) {
+ *sldata = MEM_callocN(sizeof(**sldata), "EEVEE_SceneLayerData");
+ }
+
+ return *sldata;
+}
+
+EEVEE_ObjectEngineData *EEVEE_object_data_get(Object *ob)
+{
+ EEVEE_ObjectEngineData **oedata = (EEVEE_ObjectEngineData **)DRW_object_engine_data_get(ob, &draw_engine_eevee_type, NULL);
+
+ if (*oedata == NULL) {
+ *oedata = MEM_callocN(sizeof(**oedata), "EEVEE_ObjectEngineData");
+ }
+
+ return *oedata;
+}
+
+EEVEE_LampEngineData *EEVEE_lamp_data_get(Object *ob)
+{
+ EEVEE_LampEngineData **ledata = (EEVEE_LampEngineData **)DRW_object_engine_data_get(ob, &draw_engine_eevee_type, &eevee_lamp_data_free);
+
+ if (*ledata == NULL) {
+ *ledata = MEM_callocN(sizeof(**ledata), "EEVEE_LampEngineData");
+ (*ledata)->need_update = true;
+ }
+
+ return *ledata;
+}
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index 3e2b47819d7..ab8923109e9 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -88,9 +88,6 @@ extern char datatoc_background_vert_glsl[];
extern Material defmaterial;
extern GlobalsUboStorage ts;
-/* Prototypes */
-static void EEVEE_scene_layer_data_free(void *storage);
-
static struct GPUTexture *create_jitter_texture(int w, int h)
{
struct GPUTexture *tex;
@@ -190,11 +187,7 @@ static void EEVEE_engine_init(void *ved)
EEVEE_Data *vedata = (EEVEE_Data *)ved;
EEVEE_TextureList *txl = vedata->txl;
EEVEE_FramebufferList *fbl = vedata->fbl;
- EEVEE_SceneLayerData **sldata = (EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(&draw_engine_eevee_type, &EEVEE_scene_layer_data_free);
-
- if (*sldata == NULL) {
- *sldata = MEM_callocN(sizeof(EEVEE_SceneLayerData), "EEVEE_SceneLayerData");
- }
+ EEVEE_SceneLayerData *sldata = EEVEE_scene_layer_data_get();
DRWFboTexture tex = {&txl->color, DRW_TEX_RGB_11_11_10, DRW_TEX_FILTER};
@@ -266,9 +259,9 @@ static void EEVEE_engine_init(void *ved)
copy_v3_v3(e_data.camera_pos, viewinvmat[3]);
}
- EEVEE_lights_init(*sldata);
+ EEVEE_lights_init(sldata);
- EEVEE_probes_init(*sldata);
+ EEVEE_probes_init(sldata);
EEVEE_effects_init(vedata);
@@ -291,7 +284,7 @@ static void EEVEE_cache_init(void *vedata)
EEVEE_PassList *psl = ((EEVEE_Data *)vedata)->psl;
EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl;
- EEVEE_SceneLayerData *sldata = *(EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(&draw_engine_eevee_type, &EEVEE_scene_layer_data_free);
+ EEVEE_SceneLayerData *sldata = EEVEE_scene_layer_data_get();
if (!stl->g_data) {
@@ -441,22 +434,11 @@ static void EEVEE_cache_init(void *vedata)
EEVEE_effects_cache_init(vedata);
}
-EEVEE_ObjectEngineData *EEVEE_get_object_engine_data(Object *ob)
-{
- EEVEE_ObjectEngineData **oedata = (EEVEE_ObjectEngineData **)DRW_object_engine_data_get(ob, &draw_engine_eevee_type, NULL);
-
- if (*oedata == NULL) {
- *oedata = MEM_callocN(sizeof(**oedata), "EEVEE_ObjectEngineData");
- }
-
- return *oedata;
-}
-
static void EEVEE_cache_populate(void *vedata, Object *ob)
{
EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl;
EEVEE_PassList *psl = ((EEVEE_Data *)vedata)->psl;
- EEVEE_SceneLayerData *sldata = *(EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(&draw_engine_eevee_type, &EEVEE_scene_layer_data_free);
+ EEVEE_SceneLayerData *sldata = EEVEE_scene_layer_data_get();
const DRWContextState *draw_ctx = DRW_context_state_get();
const bool is_active = (ob == draw_ctx->obact);
@@ -577,7 +559,7 @@ static void EEVEE_cache_populate(void *vedata, Object *ob)
if (cast_shadow) {
EEVEE_lights_cache_shcaster_add(sldata, psl, geom, ob->obmat);
BLI_addtail(&sldata->shadow_casters, BLI_genericNodeN(ob));
- EEVEE_ObjectEngineData *oedata = EEVEE_get_object_engine_data(ob);
+ EEVEE_ObjectEngineData *oedata = EEVEE_object_data_get(ob);
oedata->need_update = ((ob->deg_update_flag & DEG_RUNTIME_DATA_UPDATE) != 0);
}
}
@@ -601,7 +583,7 @@ static void eevee_bind_shadow(void *data, DRWShadingGroup *shgrp)
static void EEVEE_cache_finish(void *vedata)
{
EEVEE_PassList *psl = ((EEVEE_Data *)vedata)->psl;
- EEVEE_SceneLayerData *sldata = *(EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(&draw_engine_eevee_type, &EEVEE_scene_layer_data_free);
+ EEVEE_SceneLayerData *sldata = EEVEE_scene_layer_data_get();
EEVEE_lights_cache_finish(sldata);
EEVEE_probes_cache_finish(sldata);
@@ -620,7 +602,7 @@ static void EEVEE_draw_scene(void *vedata)
{
EEVEE_PassList *psl = ((EEVEE_Data *)vedata)->psl;
EEVEE_FramebufferList *fbl = ((EEVEE_Data *)vedata)->fbl;
- EEVEE_SceneLayerData *sldata = *(EEVEE_SceneLayerData **)DRW_scene_layer_engine_data_get(&draw_engine_eevee_type, &EEVEE_scene_layer_data_free);
+ EEVEE_SceneLayerData *sldata = EEVEE_scene_layer_data_get();
/* Default framebuffer and texture */
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
@@ -664,13 +646,6 @@ static void EEVEE_engine_free(void)
DRW_TEXTURE_FREE_SAFE(e_data.jitter);
}
-static void EEVEE_scene_layer_data_free(void *storage)
-{
- EEVEE_SceneLayerData *sldata = (EEVEE_SceneLayerData *)storage;
- EEVEE_scene_layer_lights_free(sldata);
- EEVEE_scene_layer_probes_free(sldata);
-}
-
static void EEVEE_layer_collection_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
{
BLI_assert(props &&
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
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 2f7beead1af..39adf1bdfe7 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -284,8 +284,10 @@ typedef struct EEVEE_PrivateData {
struct DRWShadingGroup *depth_shgrp_cull;
} EEVEE_PrivateData; /* Transient data */
-/* eevee_engine.c */
-EEVEE_ObjectEngineData *EEVEE_get_object_engine_data(Object *ob);
+/* eevee_data.c */
+EEVEE_SceneLayerData *EEVEE_scene_layer_data_get(void);
+EEVEE_ObjectEngineData *EEVEE_object_data_get(Object *ob);
+EEVEE_LampEngineData *EEVEE_lamp_data_get(Object *ob);
/* eevee_lights.c */
void EEVEE_lights_init(EEVEE_SceneLayerData *sldata);
@@ -296,7 +298,6 @@ void EEVEE_lights_cache_finish(EEVEE_SceneLayerData *sldata);
void EEVEE_lights_update(EEVEE_SceneLayerData *sldata);
void EEVEE_draw_shadows(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl);
void EEVEE_lights_free(void);
-void EEVEE_scene_layer_lights_free(EEVEE_SceneLayerData *sldata);
/* eevee_probes.c */
void EEVEE_probes_init(EEVEE_SceneLayerData *sldata);
@@ -306,7 +307,6 @@ void EEVEE_probes_cache_finish(EEVEE_SceneLayerData *sldata);
void EEVEE_probes_update(EEVEE_SceneLayerData *sldata);
void EEVEE_refresh_probe(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl);
void EEVEE_probes_free(void);
-void EEVEE_scene_layer_probes_free(EEVEE_SceneLayerData *sldata);
/* eevee_effects.c */
void EEVEE_effects_init(EEVEE_Data *vedata);
diff --git a/source/blender/draw/engines/eevee/eevee_probes.c b/source/blender/draw/engines/eevee/eevee_probes.c
index 9c9fc052b3f..3368b9ea4f3 100644
--- a/source/blender/draw/engines/eevee/eevee_probes.c
+++ b/source/blender/draw/engines/eevee/eevee_probes.c
@@ -295,16 +295,3 @@ void EEVEE_probes_free(void)
DRW_SHADER_FREE_SAFE(e_data.probe_spherical_harmonic_sh);
DRW_TEXTURE_FREE_SAFE(e_data.hammersley);
}
-
-void EEVEE_scene_layer_probes_free(EEVEE_SceneLayerData *sldata)
-{
- MEM_SAFE_FREE(sldata->probes);
- DRW_UBO_FREE_SAFE(sldata->probe_ubo);
- DRW_FRAMEBUFFER_FREE_SAFE(sldata->probe_fb);
- DRW_FRAMEBUFFER_FREE_SAFE(sldata->probe_filter_fb);
- DRW_FRAMEBUFFER_FREE_SAFE(sldata->probe_sh_fb);
- DRW_TEXTURE_FREE_SAFE(sldata->probe_rt);
- DRW_TEXTURE_FREE_SAFE(sldata->probe_depth_rt);
- DRW_TEXTURE_FREE_SAFE(sldata->probe_pool);
- DRW_TEXTURE_FREE_SAFE(sldata->probe_sh);
-}