[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