diff options
Diffstat (limited to 'source/blender/draw/engines/workbench')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl | 3 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_volume.c | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl index c38d8fe06bc..585e48ae7ec 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl @@ -134,8 +134,9 @@ void volume_properties(vec3 ls_pos, out vec3 scattering, out float extinction) float shadows = sample_volume_texture(shadowTexture, co).r; vec4 density = sample_volume_texture(densityTexture, co); /* rgb: color, a: density */ - scattering = density.rgb * (density.a * densityScale) * activeColor; + scattering = density.rgb * densityScale; extinction = max(1e-4, dot(scattering, vec3(0.33333))); + scattering *= activeColor; /* Scale shadows in log space and clamp them to avoid completely black shadows. */ scattering *= exp(clamp(log(shadows) * densityScale * 0.1, -2.5, 0.0)) * M_PI; diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c index 2f7296fb40f..2c61e894e8c 100644 --- a/source/blender/draw/engines/workbench/workbench_volume.c +++ b/source/blender/draw/engines/workbench/workbench_volume.c @@ -146,7 +146,8 @@ void workbench_volume_cache_populate(WORKBENCH_Data *vedata, GPU_create_smoke(mmd, 1); } - if ((!mds->use_coba && mds->tex == NULL) || (mds->use_coba && mds->tex_field == NULL)) { + if ((!mds->use_coba && (mds->tex_density == NULL && mds->tex_color == NULL)) || + (mds->use_coba && mds->tex_field == NULL)) { return; } @@ -201,7 +202,8 @@ void workbench_volume_cache_populate(WORKBENCH_Data *vedata, static float white[3] = {1.0f, 1.0f, 1.0f}; bool use_constant_color = ((mds->active_fields & FLUID_DOMAIN_ACTIVE_COLORS) == 0 && (mds->active_fields & FLUID_DOMAIN_ACTIVE_COLOR_SET) != 0); - DRW_shgroup_uniform_texture(grp, "densityTexture", mds->tex); + DRW_shgroup_uniform_texture( + grp, "densityTexture", (mds->tex_color) ? mds->tex_color : mds->tex_density); DRW_shgroup_uniform_texture(grp, "shadowTexture", mds->tex_shadow); DRW_shgroup_uniform_texture( grp, "flameTexture", (mds->tex_flame) ? mds->tex_flame : e_data.dummy_tex); |