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>2022-04-18 16:45:32 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-04-19 13:09:18 +0300
commit6296cb5129697676aa0055bb2162bd479106f6e3 (patch)
treeb8720982fb16e543c9fdd02d9748b13cff9384d7 /source/blender/draw/engines/workbench
parenteccc9d8eba8d65009307ebc7d4da344e9416d89b (diff)
DRW: Centralize smoke domain texture management
This code was duplicated in multiple engines. Now it is the draw manager responsability to manage the throwaway fluid textures.
Diffstat (limited to 'source/blender/draw/engines/workbench')
-rw-r--r--source/blender/draw/engines/workbench/workbench_data.c1
-rw-r--r--source/blender/draw/engines/workbench/workbench_engine.c4
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.h5
-rw-r--r--source/blender/draw/engines/workbench/workbench_volume.c19
4 files changed, 1 insertions, 28 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c
index f4e042933d1..f7f156e5297 100644
--- a/source/blender/draw/engines/workbench/workbench_data.c
+++ b/source/blender/draw/engines/workbench/workbench_data.c
@@ -163,7 +163,6 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
wpd->taa_sample_len = workbench_antialiasing_sample_count_get(wpd);
wpd->volumes_do = false;
- BLI_listbase_clear(&wpd->smoke_domains);
/* FIXME: This reproduce old behavior when workbench was separated in 2 engines.
* But this is a workaround for a missing update tagging. */
diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c
index 566fd30096d..ccd693bc4c2 100644
--- a/source/blender/draw/engines/workbench/workbench_engine.c
+++ b/source/blender/draw/engines/workbench/workbench_engine.c
@@ -613,10 +613,8 @@ static void workbench_draw_scene(void *ved)
workbench_draw_finish(vedata);
}
-void workbench_draw_finish(void *ved)
+void workbench_draw_finish(void *UNUSED(ved))
{
- WORKBENCH_Data *vedata = ved;
- workbench_volume_draw_finish(vedata);
/* Reset default view. */
DRW_view_set_active(NULL);
}
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 727b771ee08..492bce1e571 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -324,10 +324,6 @@ typedef struct WORKBENCH_PrivateData {
/** Index of current material inside the material chunk. Only for material coloring mode. */
int material_index;
- /* Volumes */
- /** List of smoke domain textures to free after drawing. */
- ListBase smoke_domains;
-
/* Depth of Field */
/** Depth of field temp buffers. */
struct GPUTexture *dof_blur_tx;
@@ -533,7 +529,6 @@ void workbench_volume_cache_populate(WORKBENCH_Data *vedata,
struct ModifierData *md,
eV3DShadingColorType color_type);
void workbench_volume_draw_pass(WORKBENCH_Data *vedata);
-void workbench_volume_draw_finish(WORKBENCH_Data *vedata);
/* workbench_engine.c */
diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c
index c6f40c5d6bb..2c902e9b627 100644
--- a/source/blender/draw/engines/workbench/workbench_volume.c
+++ b/source/blender/draw/engines/workbench/workbench_volume.c
@@ -178,8 +178,6 @@ static void workbench_volume_modifier_cache_populate(WORKBENCH_Data *vedata,
else {
DRW_shgroup_call(grp, DRW_cache_cube_get(), ob);
}
-
- BLI_addtail(&wpd->smoke_domains, BLI_genericNodeN(fmd));
}
static void workbench_volume_material_color(WORKBENCH_PrivateData *wpd,
@@ -334,20 +332,3 @@ void workbench_volume_draw_pass(WORKBENCH_Data *vedata)
DRW_draw_pass(psl->volume_ps);
}
}
-
-void workbench_volume_draw_finish(WORKBENCH_Data *vedata)
-{
- WORKBENCH_PrivateData *wpd = vedata->stl->wpd;
-
- /* Free Smoke Textures after rendering */
- /* XXX This is a waste of processing and GPU bandwidth if nothing
- * is updated. But the problem is since Textures are stored in the
- * modifier we don't want them to take precious VRAM if the
- * modifier is not used for display. We should share them for
- * all viewport in a redraw at least. */
- LISTBASE_FOREACH (LinkData *, link, &wpd->smoke_domains) {
- FluidModifierData *fmd = (FluidModifierData *)link->data;
- DRW_smoke_free(fmd);
- }
- BLI_freelistN(&wpd->smoke_domains);
-}