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>2018-11-07 02:17:36 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-11-07 02:19:14 +0300
commitb23c68a93730ee77d69cfacc305a01206b9d86cb (patch)
tree2f1eb1a5ec254a433128badff583c3bdc5959777 /source/blender/draw/engines/workbench/workbench_volume.c
parent8af53dbeab8ad692c1a0b4d82b6ac955f0b94a45 (diff)
Workbench: Improve volume render by removing noise using temporal AA
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_volume.c')
-rw-r--r--source/blender/draw/engines/workbench/workbench_volume.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c
index 38ad5c9bfba..0f6b3e5954a 100644
--- a/source/blender/draw/engines/workbench/workbench_volume.c
+++ b/source/blender/draw/engines/workbench/workbench_volume.c
@@ -27,6 +27,8 @@
#include "BKE_modifier.h"
+#include "BLI_rand.h"
+
#include "DNA_modifier_types.h"
#include "DNA_object_force_types.h"
#include "DNA_smoke_types.h"
@@ -91,6 +93,7 @@ void workbench_volume_cache_populate(WORKBENCH_Data *vedata, Scene *scene, Objec
SmokeModifierData *smd = (SmokeModifierData *)md;
SmokeDomainSettings *sds = smd->domain;
WORKBENCH_PrivateData *wpd = vedata->stl->g_data;
+ WORKBENCH_EffectInfo *effect_info = vedata->stl->effects;
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
DRWShadingGroup *grp = NULL;
@@ -133,6 +136,8 @@ void workbench_volume_cache_populate(WORKBENCH_Data *vedata, Scene *scene, Objec
DRW_shgroup_uniform_int_copy(grp, "sliceAxis", axis);
}
else {
+ double noise_ofs;
+ BLI_halton_1D(3, 0.0, effect_info->jitter_index, &noise_ofs);
int max_slices = max_iii(sds->res[0], sds->res[1], sds->res[2]) * sds->slice_per_voxel;
GPUShader *sh = (sds->use_coba) ? e_data.volume_coba_sh : e_data.volume_sh;
@@ -143,6 +148,7 @@ void workbench_volume_cache_populate(WORKBENCH_Data *vedata, Scene *scene, Objec
* is NOT unit length in object space so the required number of subdivisions
* is tricky to get. */
DRW_shgroup_uniform_float_copy(grp, "stepLength", 8.0f / max_slices);
+ DRW_shgroup_uniform_float_copy(grp, "noiseOfs", noise_ofs);
}
if (sds->use_coba) {