[Bf-blender-cvs] [2892df6ace8] soc-2020-fluid-tools: Fluid: Refactored gridline display for flag grid
Sriharsha Kotcharlakot
noreply at git.blender.org
Mon Jun 29 18:12:23 CEST 2020
Commit: 2892df6ace80816dd18f437fa62aebe3d8ac45bc
Author: Sriharsha Kotcharlakot
Date: Mon Jun 29 21:41:58 2020 +0530
Branches: soc-2020-fluid-tools
https://developer.blender.org/rB2892df6ace80816dd18f437fa62aebe3d8ac45bc
Fluid: Refactored gridline display for flag grid
===================================================================
M source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl
M source/blender/draw/engines/workbench/workbench_private.h
M source/blender/draw/engines/workbench/workbench_shader.c
M source/blender/draw/engines/workbench/workbench_volume.c
===================================================================
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 b539b80f833..775826f0da0 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl
@@ -131,14 +131,14 @@ vec4 sample_raw(sampler3D ima, vec3 co)
# define sample_volume_texture sample_tricubic
#elif defined(USE_TRILINEAR)
# define sample_volume_texture sample_trilinear
-#else
+#elif defined(USE_RAW)
# define sample_volume_texture sample_raw
#endif
void volume_properties(vec3 ls_pos, out vec3 scattering, out float extinction)
{
vec3 co = ls_pos * 0.5 + 0.5;
-#if defined(VOLUME_SLICE) && (!(defined(USE_TRILINEAR) || defined(USE_TRICUBIC)) || showFlags)
+#if defined(VOLUME_SLICE) && (defined(USE_RAW) || defined(SHOW_FLAGS))
vec3 texture_size = (showFlags) ? vec3(textureSize(flagTexture, 0).xyz) : vec3(textureSize(densityTexture, 0).xyz);
if (on_gridline(texture_size, co)) {
scattering = vec3(0.0, 0.0, 0.0);
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index edb2046568c..24314400249 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -420,7 +420,8 @@ GPUShader *workbench_shader_outline_get(void);
GPUShader *workbench_shader_antialiasing_accumulation_get(void);
GPUShader *workbench_shader_antialiasing_get(int stage);
-GPUShader *workbench_shader_volume_get(bool slice, bool coba, InterpType cubic, bool smoke);
+GPUShader *workbench_shader_volume_get(
+ bool slice, bool coba, InterpType cubic, bool smoke, bool flags);
void workbench_shader_depth_of_field_get(GPUShader **prepare_sh,
GPUShader **downsample_sh,
diff --git a/source/blender/draw/engines/workbench/workbench_shader.c b/source/blender/draw/engines/workbench/workbench_shader.c
index 43749f2688a..9c3f65b44f2 100644
--- a/source/blender/draw/engines/workbench/workbench_shader.c
+++ b/source/blender/draw/engines/workbench/workbench_shader.c
@@ -441,7 +441,8 @@ GPUShader *workbench_shader_antialiasing_get(int stage)
return e_data.smaa_sh[stage];
}
-GPUShader *workbench_shader_volume_get(bool slice, bool coba, InterpType cubic, bool smoke)
+GPUShader *workbench_shader_volume_get(
+ bool slice, bool coba, InterpType cubic, bool smoke, bool flags)
{
GPUShader **shader = &e_data.volume_sh[slice][coba][cubic][smoke];
@@ -461,10 +462,16 @@ GPUShader *workbench_shader_volume_get(bool slice, bool coba, InterpType cubic,
case INTERP_CUBIC:
BLI_dynstr_append(ds, "#define USE_TRICUBIC\n");
break;
+ case INTERP_RAW:
+ BLI_dynstr_append(ds, "#define USE_RAW\n");
+ break;
}
if (smoke) {
BLI_dynstr_append(ds, "#define VOLUME_SMOKE\n");
}
+ if (flags) {
+ BLI_dynstr_append(ds, "#define SHOW_FLAGS\n");
+ }
char *defines = BLI_dynstr_get_cstring(ds);
BLI_dynstr_free(ds);
diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c
index 8dc60a7f72c..fdb47cfd2a0 100644
--- a/source/blender/draw/engines/workbench/workbench_volume.c
+++ b/source/blender/draw/engines/workbench/workbench_volume.c
@@ -100,7 +100,8 @@ static void workbench_volume_modifier_cache_populate(WORKBENCH_Data *vedata,
mds->coba_field == FLUID_DOMAIN_FIELD_PHI_OUT ||
mds->coba_field == FLUID_DOMAIN_FIELD_PHI_OBSTACLE);
const bool show_flags = (mds->coba_field == FLUID_DOMAIN_FIELD_FLAGS);
- GPUShader *sh = workbench_shader_volume_get(use_slice, mds->use_coba, cubic_interp, true);
+ GPUShader *sh = workbench_shader_volume_get(
+ use_slice, mds->use_coba, cubic_interp, true, show_flags);
if (use_slice) {
float invviewmat[4][4];
@@ -216,7 +217,7 @@ static void workbench_volume_object_cache_populate(WORKBENCH_Data *vedata,
wpd->volumes_do = true;
/* Create shader. */
- GPUShader *sh = workbench_shader_volume_get(false, false, false, false);
+ GPUShader *sh = workbench_shader_volume_get(false, false, false, false, false);
/* Compute color. */
float color[3];
More information about the Bf-blender-cvs
mailing list