[Bf-blender-cvs] [2455fa2dc7a] soc-2020-fluid-tools: Refactoring changes and cleanup

Sriharsha Kotcharlakot noreply at git.blender.org
Fri Sep 4 15:33:32 CEST 2020


Commit: 2455fa2dc7a35a5e70124a6ef38a8b356ec92a85
Author: Sriharsha Kotcharlakot
Date:   Fri Sep 4 18:32:19 2020 +0530
Branches: soc-2020-fluid-tools
https://developer.blender.org/rB2455fa2dc7a35a5e70124a6ef38a8b356ec92a85

Refactoring changes and cleanup

- Updated shader tests for `workbench_shader_volume_get()`
- Naming updates in the enums for interpolation methods in fluid and volume display.

===================================================================

M	release/scripts/startup/bl_ui/properties_physics_fluid.py
M	source/blender/blenkernel/intern/fluid.c
M	source/blender/draw/engines/overlay/overlay_extra.c
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
M	source/blender/draw/tests/shaders_test.cc
M	source/blender/makesdna/DNA_fluid_types.h
M	source/blender/makesdna/DNA_volume_types.h
M	source/blender/makesrna/intern/rna_fluid.c
M	source/blender/makesrna/intern/rna_volume.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py
index 456d059024a..df50311c8e2 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fluid.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py
@@ -1268,7 +1268,7 @@ class PHYSICS_PT_viewport_display(PhysicButtonsPanel, Panel):
         sub = col.column()
         sub.prop(domain, "display_interpolation")
 
-        if domain.use_color_ramp and domain.coba_field == "FLAGS":
+        if domain.use_color_ramp and domain.coba_field == 'FLAGS':
             sub.enabled = False
 
         col.prop(domain, "axis_slice_method")
@@ -1276,7 +1276,7 @@ class PHYSICS_PT_viewport_display(PhysicButtonsPanel, Panel):
         if not do_full_slicing:
             col.prop(domain, "slice_axis")
             col.prop(domain, "slice_depth")
-            if domain.display_interpolation == "CLOSEST" or domain.coba_field == "FLAGS":
+            if domain.display_interpolation == 'CLOSEST' or domain.coba_field == 'FLAGS':
                 col.prop(domain, "show_gridlines")
 
         col = col.column()
@@ -1307,12 +1307,12 @@ class PHYSICS_PT_viewport_display_color(PhysicButtonsPanel, Panel):
         col.active = domain.use_color_ramp
         col.prop(domain, "coba_field")
 
-        if not domain.coba_field == "FLAGS":
+        if not domain.coba_field == 'FLAGS':
             col.prop(domain, "coba_field_scale")
 
         col.use_property_split = False
 
-        if not (domain.coba_field[:3] == "PHI" or domain.coba_field == "FLAGS" or domain.coba_field == "PRESSURE"):
+        if domain.coba_field[:3] != 'PHI' and domain.coba_field not in {'FLAGS', 'PRESSURE'}:
             col = col.column()
             col.template_color_ramp(domain, "color_ramp", expand=True)
 
@@ -1346,7 +1346,7 @@ class PHYSICS_PT_viewport_display_debug(PhysicButtonsPanel, Panel):
             note = layout.split()
             note.label(icon='INFO', text="Enable Guides first! Defaulting to Fluid Velocity.")
         
-        if domain.vector_display_type == "MAC":
+        if domain.vector_display_type == 'MAC':
             sub = col.column(heading="MAC Grid")
             sub.prop(domain, "vector_show_mac_x")
             sub.prop(domain, "vector_show_mac_y")
@@ -1376,7 +1376,7 @@ class PHYSICS_PT_viewport_display_advanced(PhysicButtonsPanel, Panel):
         col.prop(domain, "gridlines_color_field", text="Color Gridlines")
 
         if domain.gridlines_color_field == 'RANGE':
-            if domain.use_color_ramp and domain.coba_field != "FLAGS":
+            if domain.use_color_ramp and domain.coba_field != 'FLAGS':
                 col.prop(domain, "gridlines_lower_bound")
                 col.prop(domain, "gridlines_upper_bound")
                 col.prop(domain, "gridlines_range_color")
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index 2510644f440..5be7bd8318a 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -5006,7 +5006,7 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *fmd)
     /* display options */
     fmd->domain->axis_slice_method = AXIS_SLICE_SINGLE;
     fmd->domain->slice_axis = 0;
-    fmd->domain->interp_method = VOLUME_INTERP_CLOSEST;
+    fmd->domain->interp_method = FLUID_DISPLAY_INTERP_CLOSEST;
     fmd->domain->draw_velocity = false;
     fmd->domain->slice_per_voxel = 5.0f;
     fmd->domain->slice_depth = 0.5f;
diff --git a/source/blender/draw/engines/overlay/overlay_extra.c b/source/blender/draw/engines/overlay/overlay_extra.c
index d2a583729ce..09061450a1a 100644
--- a/source/blender/draw/engines/overlay/overlay_extra.c
+++ b/source/blender/draw/engines/overlay/overlay_extra.c
@@ -1383,10 +1383,10 @@ static void OVERLAY_volume_extra(OVERLAY_ExtraCallBuffers *cb,
   const bool draw_velocity = (fds->draw_velocity && fds->fluid &&
                               CFRA >= fds->point_cache[0]->startframe);
 
-  /* Show gridlines only for slices without interpolation */
+  /* Show gridlines only for slices with no interpolation. */
   const bool show_gridlines = (fds->show_gridlines && fds->fluid &&
                                fds->axis_slice_method == AXIS_SLICE_SINGLE &&
-                               (fds->interp_method == VOLUME_INTERP_CLOSEST ||
+                               (fds->interp_method == FLUID_DISPLAY_INTERP_CLOSEST ||
                                 fds->coba_field == FLUID_DOMAIN_FIELD_FLAGS));
 
   const bool color_with_flags = (fds->gridlines_color_field == FLUID_GRIDLINE_COLOR_TYPE_FLAGS);
@@ -1470,8 +1470,6 @@ static void OVERLAY_volume_extra(OVERLAY_ExtraCallBuffers *cb,
   }
 
   if (show_gridlines) {
-    int line_count = 4 * fds->res[0] * fds->res[1] * fds->res[2] / fds->res[slice_axis];
-
     GPUShader *sh = OVERLAY_shader_volume_gridlines(color_with_flags, color_range);
     DRWShadingGroup *grp = DRW_shgroup_create(sh, data->psl->extra_ps[0]);
     DRW_shgroup_uniform_ivec3_copy(grp, "volumeSize", fds->res);
@@ -1495,6 +1493,7 @@ static void OVERLAY_volume_extra(OVERLAY_ExtraCallBuffers *cb,
       DRW_shgroup_uniform_int_copy(grp, "cellFilter", fds->gridlines_cell_filter);
     }
 
+    const int line_count = 4 * fds->res[0] * fds->res[1] * fds->res[2] / fds->res[slice_axis];
     DRW_shgroup_call_procedural_lines(grp, ob, line_count);
   }
 
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 8ecc8c90e13..3520db8eb78 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -82,6 +82,13 @@ typedef enum eWORKBENCH_DataType {
   WORKBENCH_DATATYPE_MAX,
 } eWORKBENCH_DataType;
 
+/* Types of volume display interpolation. */
+typedef enum eWORKBENCH_VolumeInterpType {
+  WORKBENCH_VOLUME_INTERP_LINEAR = 0,
+  WORKBENCH_VOLUME_INTERP_CUBIC,
+  WORKBENCH_VOLUME_INTERP_CLOSEST,
+} eWORKBENCH_VolumeInterpType;
+
 typedef struct WORKBENCH_FramebufferList {
   struct GPUFrameBuffer *opaque_fb;
   struct GPUFrameBuffer *opaque_infront_fb;
@@ -377,13 +384,6 @@ typedef struct WORKBENCH_ViewLayerData {
   int cavity_sample_count;
 } WORKBENCH_ViewLayerData;
 
-/* Types of interpolation. */
-typedef enum {
-  INTERP_LINEAR = 0,
-  INTERP_CUBIC = 1,
-  INTERP_CLOSEST = 2,
-} WORKBENCH_VolumeInterpType;
-
 /* inline helper functions */
 BLI_INLINE bool workbench_is_specular_highlight_enabled(WORKBENCH_PrivateData *wpd)
 {
@@ -434,7 +434,7 @@ GPUShader *workbench_shader_antialiasing_get(int stage);
 
 GPUShader *workbench_shader_volume_get(bool slice,
                                        bool coba,
-                                       WORKBENCH_VolumeInterpType interp_type,
+                                       eWORKBENCH_VolumeInterpType interp_type,
                                        bool smoke);
 
 void workbench_shader_depth_of_field_get(GPUShader **prepare_sh,
diff --git a/source/blender/draw/engines/workbench/workbench_shader.c b/source/blender/draw/engines/workbench/workbench_shader.c
index 285d373d311..b3b9e11ae58 100644
--- a/source/blender/draw/engines/workbench/workbench_shader.c
+++ b/source/blender/draw/engines/workbench/workbench_shader.c
@@ -465,7 +465,7 @@ GPUShader *workbench_shader_antialiasing_get(int stage)
 
 GPUShader *workbench_shader_volume_get(bool slice,
                                        bool coba,
-                                       WORKBENCH_VolumeInterpType interp_type,
+                                       eWORKBENCH_VolumeInterpType interp_type,
                                        bool smoke)
 {
   GPUShader **shader = &e_data.volume_sh[slice][coba][interp_type][smoke];
@@ -480,13 +480,13 @@ GPUShader *workbench_shader_volume_get(bool slice,
       BLI_dynstr_append(ds, "#define USE_COBA\n");
     }
     switch (interp_type) {
-      case INTERP_LINEAR:
+      case WORKBENCH_VOLUME_INTERP_LINEAR:
         BLI_dynstr_append(ds, "#define USE_TRILINEAR\n");
         break;
-      case INTERP_CUBIC:
+      case WORKBENCH_VOLUME_INTERP_CUBIC:
         BLI_dynstr_append(ds, "#define USE_TRICUBIC\n");
         break;
-      case INTERP_CLOSEST:
+      case WORKBENCH_VOLUME_INTERP_CLOSEST:
         BLI_dynstr_append(ds, "#define USE_CLOSEST\n");
         break;
     }
diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c
index 07d02307f65..4a9fb05b586 100644
--- a/source/blender/draw/engines/workbench/workbench_volume.c
+++ b/source/blender/draw/engines/workbench/workbench_volume.c
@@ -92,7 +92,6 @@ static void workbench_volume_modifier_cache_populate(WORKBENCH_Data *vedata,
   }
 
   const bool use_slice = (fds->axis_slice_method == AXIS_SLICE_SINGLE);
-  const WORKBENCH_VolumeInterpType interp_type = (WORKBENCH_VolumeInterpType)fds->interp_method;
   const bool show_phi = ELEM(fds->coba_field,
                              FLUID_DOMAIN_FIELD_PHI,
                              FLUID_DOMAIN_FIELD_PHI_IN,
@@ -100,6 +99,19 @@ static void workbench_volume_modifier_cache_populate(WORKBENCH_Data *vedata,
                              FLUID_DOMAIN_FIELD_PHI_OBSTACLE);
   const bool show_flags = (fds->coba_field == FLUID_DOMAIN_FIELD_FLAGS);
   const bool show_pressure = (fds->coba_field == FLUID_DOMAIN_FIELD_PRESSURE);
+  eWORKBENCH_VolumeInterpType interp_type = WORKBENCH_VOLUME_INTERP_CLOSEST;
+
+  switch (fds->interp_method) {
+    case FLUID_DISPLAY_INTERP_LINEAR:
+      interp_type = WORKBENCH_VOLUME_INTERP_LINEAR;
+      break;
+    case FLUID_DISPLAY_INTERP_CUBIC:
+      interp_type = WORKBENCH_VOLUME_INTERP_CUBIC;
+      break;
+    case FLUID_DISPLAY_INTERP_CLOSEST:
+      interp_type = WORKBENCH_VOLUME_INTERP_CLOSEST;
+      break;
+  }
   GPUShader *sh = workbench_shader_volume_get(use_slice, fds->use_coba, interp_type, true);
 
   if (use_slice) {
@@ -216,8 +228,19 @@ static void workbench_volume_object_cache_populate(WORKBENCH_Data *vedata,
 
   wpd->volumes_do = true;
   const bool use_slice = (volume->display.axis_slice_method == AXIS_SLICE_SINGLE);
-  const WORKBENCH_Vo

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list