[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