[Bf-blender-cvs] [fac2cfdfa77] blender2.8: Eevee: Improve Hashed Alpha transparency by reducing noise size
Clément Foucault
noreply at git.blender.org
Wed Nov 7 00:19:37 CET 2018
Commit: fac2cfdfa776e0829c4d89b28392b1404edda5d6
Author: Clément Foucault
Date: Tue Nov 6 16:49:05 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBfac2cfdfa776e0829c4d89b28392b1404edda5d6
Eevee: Improve Hashed Alpha transparency by reducing noise size
This only affect renders and static viewport accumulation.
It reduces helps reduce noise when lots of half transparent surfaces
overlaps.
===================================================================
M source/blender/draw/engines/eevee/eevee_materials.c
M source/blender/draw/engines/eevee/shaders/prepass_frag.glsl
===================================================================
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index eee1e716da1..212f89e7216 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -71,6 +71,7 @@ static struct {
uint sss_count;
float alpha_hash_offset;
+ float alpha_hash_scale;
float noise_offsets[3];
} e_data = {NULL}; /* Engine data */
@@ -635,11 +636,13 @@ void EEVEE_materials_init(EEVEE_ViewLayerData *sldata, EEVEE_StorageList *stl, E
((stl->effects->enabled_effects & EFFECT_TAA) == 0))
{
e_data.alpha_hash_offset = 0.0f;
+ e_data.alpha_hash_scale = 1.0f;
}
else {
double r;
BLI_halton_1D(5, 0.0, stl->effects->taa_current_sample - 1, &r);
e_data.alpha_hash_offset = (float)r;
+ e_data.alpha_hash_scale = 0.01f;
}
{
@@ -1206,6 +1209,8 @@ static void material_opaque(
else if (ma->blend_method == MA_BM_HASHED) {
DRW_shgroup_uniform_float(*shgrp_depth, "hashAlphaOffset", &e_data.alpha_hash_offset, 1);
DRW_shgroup_uniform_float(*shgrp_depth_clip, "hashAlphaOffset", &e_data.alpha_hash_offset, 1);
+ DRW_shgroup_uniform_float_copy(*shgrp_depth, "hashAlphaScale", e_data.alpha_hash_scale);
+ DRW_shgroup_uniform_float_copy(*shgrp_depth_clip, "hashAlphaScale", e_data.alpha_hash_scale);
}
}
}
diff --git a/source/blender/draw/engines/eevee/shaders/prepass_frag.glsl b/source/blender/draw/engines/eevee/shaders/prepass_frag.glsl
index 1c0e65f0613..6b6ab0c0bcc 100644
--- a/source/blender/draw/engines/eevee/shaders/prepass_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/prepass_frag.glsl
@@ -11,14 +11,13 @@ float hash3d(vec3 a) {
}
uniform float hashAlphaOffset;
+uniform float hashAlphaScale = 1.0; /* Roughly in pixel */
float hashed_alpha_threshold(vec3 co)
{
- const float hash_scale = 1.0; /* Roughly in pixel */
-
/* Find the discretized derivatives of our coordinates. */
float max_deriv = max(length(dFdx(co)), length(dFdy(co)));
- float pix_scale = 1.0 / (hash_scale * max_deriv);
+ float pix_scale = 1.0 / (hashAlphaScale * max_deriv);
/* Find two nearest log-discretized noise scales. */
float pix_scale_log = log2(pix_scale);
More information about the Bf-blender-cvs
mailing list