Commit: f137022f9919f4dd315ec6b325a08e1bf5aec6fb
Author: Sriharsha Kotcharlakot
Date:   Tue Sep 15 21:21:14 2020 +0530
Branches: master
https://developer.blender.org/rBf137022f9919f4dd315ec6b325a08e1bf5aec6fb

Liquid Simulation Display Options (GSoC 2020)

All the changes made in the branch `soc-2020-fluid-tools` are included in this 
patch.

**Major changes:**

=== Viewport Display ===

- //Raw voxel display// or //closest (nearest-neighbor)// interpolation for 
displaying the underlying voxel data of the simulation grids more clearly.
- An option to display //gridlines// when the slicing method is //single//.

==== Grid Display ====

- Visualization for flags, pressure and level-set representation grids with a 
fixed color coding based on Manta GUI.

==== Vector Display ====

- //**M**arker **A**nd **C**ell// grid visualization options for vector grids 
like velocity or external forces.
- Made vector display options available for external forces.

==== Coloring options for //gridlines// ====

- Range highlighting and cell filtering options for displaying the simulation 
grid data more precisely.
- Color gridlines with flags.

- Also, made slicing and interpolation options available for Volume Object.

Reviewed By: JacquesLucke, sebbas

Differential Revision: https://developer.blender.org/D8705

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

M       intern/mantaflow/extern/manta_fluid_API.h
M       intern/mantaflow/intern/MANTA_main.cpp
M       intern/mantaflow/intern/MANTA_main.h
M       intern/mantaflow/intern/manta_fluid_API.cpp
M       intern/opencolorio/ocio_impl_glsl.cc
M       release/scripts/modules/rna_manual_reference.py
M       release/scripts/startup/bl_operators/object_quick_effects.py
M       release/scripts/startup/bl_ui/properties_data_volume.py
M       release/scripts/startup/bl_ui/properties_physics_fluid.py
M       source/blender/blenkernel/BKE_fluid.h
M       source/blender/blenkernel/intern/fluid.c
M       source/blender/draw/CMakeLists.txt
M       source/blender/draw/engines/overlay/overlay_extra.c
M       source/blender/draw/engines/overlay/overlay_private.h
M       source/blender/draw/engines/overlay/overlay_shader.c
A       source/blender/draw/engines/overlay/shaders/volume_gridlines_vert.glsl
M       source/blender/draw/engines/overlay/shaders/volume_velocity_vert.glsl
M       source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl
M       source/blender/draw/engines/workbench/workbench_engine.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/intern/draw_cache_impl_volume.c
M       source/blender/draw/intern/draw_common.h
M       source/blender/draw/intern/draw_fluid.c
M       source/blender/draw/intern/draw_manager_texture.c
M       source/blender/draw/tests/shaders_test.cc
M       source/blender/gpu/GPU_texture.h
M       source/blender/gpu/intern/gpu_texture.cc
M       source/blender/makesdna/DNA_fluid_types.h
M       source/blender/makesdna/DNA_volume_defaults.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/intern/mantaflow/extern/manta_fluid_API.h 
b/intern/mantaflow/extern/manta_fluid_API.h
index 124671467f7..6827ac35050 100644
--- a/intern/mantaflow/extern/manta_fluid_API.h
+++ b/intern/mantaflow/extern/manta_fluid_API.h
@@ -109,6 +109,8 @@ float *manta_get_phiobs_in(struct MANTA *fluid);
 float *manta_get_phiobsstatic_in(struct MANTA *fluid);
 float *manta_get_phiout_in(struct MANTA *fluid);
 float *manta_get_phioutstatic_in(struct MANTA *fluid);
+float *manta_get_phi(struct MANTA *fluid);
+float *manta_get_pressure(struct MANTA *fluid);
 
 /* Smoke functions */
 void manta_smoke_export_script(struct MANTA *smoke, struct FluidModifierData 
*fmd);
diff --git a/intern/mantaflow/intern/MANTA_main.cpp 
b/intern/mantaflow/intern/MANTA_main.cpp
index 8d92d616e15..9d5b3efb0bc 100644
--- a/intern/mantaflow/intern/MANTA_main.cpp
+++ b/intern/mantaflow/intern/MANTA_main.cpp
@@ -118,6 +118,7 @@ MANTA::MANTA(int *res, FluidModifierData *fmd) : 
mCurrentID(++solverID)
   mFuelIn = nullptr;
   mReactIn = nullptr;
   mEmissionIn = nullptr;
+  mPressure = nullptr;
 
   /* Smoke high res grids. */
   mDensityHigh = nullptr;
@@ -2020,6 +2021,7 @@ void MANTA::updatePointers(FluidModifierData *fmd, bool 
flush)
   mForceX = (smoke || liquid) ? getPointer<float>("x_force" + s_ext, func) : 
nullptr;
   mForceY = (smoke || liquid) ? getPointer<float>("y_force" + s_ext, func) : 
nullptr;
   mForceZ = (smoke || liquid) ? getPointer<float>("z_force" + s_ext, func) : 
nullptr;
+  mPressure = (smoke || liquid) ? getPointer<float>("pressure" + s_ext, func) 
: nullptr;
 
   /* Outflow. */
   mPhiOutIn = (outflow) ? getPointer<float>("phiOutIn" + s_ext, func) : 
nullptr;
diff --git a/intern/mantaflow/intern/MANTA_main.h 
b/intern/mantaflow/intern/MANTA_main.h
index 5fd94ca01bc..68a5b427e7d 100644
--- a/intern/mantaflow/intern/MANTA_main.h
+++ b/intern/mantaflow/intern/MANTA_main.h
@@ -412,6 +412,10 @@ struct MANTA {
   {
     return mPhi;
   }
+  inline float *getPressure()
+  {
+    return mPressure;
+  }
 
   static atomic<int> solverID;
   static int with_debug; /* On or off (1 or 0), also sets manta debug level. */
@@ -806,6 +810,7 @@ struct MANTA {
   int *mFlags;
   float *mNumObstacle;
   float *mNumGuide;
+  float *mPressure;
 
   /* Smoke grids. */
   float *mDensity;
diff --git a/intern/mantaflow/intern/manta_fluid_API.cpp 
b/intern/mantaflow/intern/manta_fluid_API.cpp
index 7f96a315a8e..e4754131f34 100644
--- a/intern/mantaflow/intern/manta_fluid_API.cpp
+++ b/intern/mantaflow/intern/manta_fluid_API.cpp
@@ -362,6 +362,14 @@ float *manta_get_phioutstatic_in(MANTA *fluid)
 {
   return fluid->getPhiOutStaticIn();
 }
+float *manta_get_phi(MANTA *fluid)
+{
+  return fluid->getPhi();
+}
+float *manta_get_pressure(MANTA *fluid)
+{
+  return fluid->getPressure();
+}
 
 /* Smoke functions */
 void manta_smoke_export_script(MANTA *smoke, FluidModifierData *fmd)
diff --git a/intern/opencolorio/ocio_impl_glsl.cc 
b/intern/opencolorio/ocio_impl_glsl.cc
index a0bb9828bd5..e91f6021669 100644
--- a/intern/opencolorio/ocio_impl_glsl.cc
+++ b/intern/opencolorio/ocio_impl_glsl.cc
@@ -284,12 +284,13 @@ static void ensureGLSLLut3d(OCIO_GLSLLut3d **lut3d_ptr,
 
   int extent[3] = {LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE};
 
-  lut3d->texture = GPU_texture_create_3d("OCIOLut", UNPACK3(extent), 1, 
GPU_RGB16F, NULL);
+  lut3d->texture = GPU_texture_create_3d(
+      "OCIOLut", UNPACK3(extent), 1, GPU_RGB16F, GPU_DATA_FLOAT, NULL);
   GPU_texture_filter_mode(lut3d->texture, true);
   GPU_texture_wrap_mode(lut3d->texture, false, true);
 
   lut3d->texture_display = GPU_texture_create_3d(
-      "OCIOLutDisplay", UNPACK3(extent), 1, GPU_RGB16F, NULL);
+      "OCIOLutDisplay", UNPACK3(extent), 1, GPU_RGB16F, GPU_DATA_FLOAT, NULL);
   GPU_texture_filter_mode(lut3d->texture_display, true);
   GPU_texture_wrap_mode(lut3d->texture_display, false, true);
 
diff --git a/release/scripts/modules/rna_manual_reference.py 
b/release/scripts/modules/rna_manual_reference.py
index a8c8b212ecf..a7d338f3b53 100644
--- a/release/scripts/modules/rna_manual_reference.py
+++ b/release/scripts/modules/rna_manual_reference.py
@@ -51,6 +51,7 @@ url_manual_mapping = (
        ("bpy.types.fluiddomainsettings.sndparticle_bubble_buoyancy*", 
"physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-bubble-buoyancy"),
        ("bpy.types.fluiddomainsettings.sndparticle_combined_export*", 
"physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-combined-export"),
        ("bpy.types.fluiddomainsettings.use_collision_border_bottom*", 
"physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-bottom"),
+       ("bpy.types.fluiddomainsettings.vector_scale_with_magnitude*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-vector-scale-with-magnitude"),
        ("bpy.types.fluiddomainsettings.use_collision_border_front*", 
"physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-front"),
        ("bpy.types.fluiddomainsettings.use_collision_border_right*", 
"physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-right"),
        ("bpy.types.cyclesobjectsettings.use_adaptive_subdivision*", 
"render/cycles/object_settings/adaptive_subdiv.html#bpy-types-cyclesobjectsettings-use-adaptive-subdivision"),
@@ -68,12 +69,18 @@ url_manual_mapping = (
        ("bpy.types.fluiddomainsettings.sndparticle_bubble_drag*", 
"physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-bubble-drag"),
        ("bpy.types.linestylegeometrymodifier_backbonestretcher*", 
"render/freestyle/parameter_editor/line_style/modifiers/geometry/backbone_stretcher.html#bpy-types-linestylegeometrymodifier-backbonestretcher"),
        ("bpy.types.linestylegeometrymodifier_sinusdisplacement*", 
"render/freestyle/parameter_editor/line_style/modifiers/geometry/sinus_displacement.html#bpy-types-linestylegeometrymodifier-sinusdisplacement"),
+       ("bpy.types.fluiddomainsettings.color_ramp_field_scale*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-color-ramp-field-scale"),
        ("bpy.types.fluiddomainsettings.use_adaptive_timesteps*", 
"physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-adaptive-timesteps"),
        ("bpy.types.fluiddomainsettings.use_dissolve_smoke_log*", 
"physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-dissolve-smoke-log"),
        ("bpy.types.linestylegeometrymodifier_polygonalization*", 
"render/freestyle/parameter_editor/line_style/modifiers/geometry/polygonization.html#bpy-types-linestylegeometrymodifier-polygonalization"),
        ("bpy.ops.view3d.edit_mesh_extrude_move_shrink_fatten*", 
"modeling/meshes/editing/face/extrude_faces_normal.html#bpy-ops-view3d-edit-mesh-extrude-move-shrink-fatten"),
        ("bpy.types.cyclesrendersettings.distance_cull_margin*", 
"render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-distance-cull-margin"),
        ("bpy.types.fluiddomainsettings.display_interpolation*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-display-interpolation"),
+       ("bpy.types.fluiddomainsettings.gridlines_cell_filter*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-gridlines-cell-filter"),
+       ("bpy.types.fluiddomainsettings.gridlines_color_field*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-gridlines-color-field"),
+       ("bpy.types.fluiddomainsettings.gridlines_lower_bound*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-gridlines-lower-bound"),
+       ("bpy.types.fluiddomainsettings.gridlines_range_color*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-gridlines-range-color"),
+       ("bpy.types.fluiddomainsettings.gridlines_upper_bound*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-gridlines-upper-bound"),
        ("bpy.types.materialgpencilstyle.use_fill_texture_mix*", 
"grease_pencil/materials/grease_pencil_shader.html#bpy-types-materialgpencilstyle-use-fill-texture-mix"),
        ("bpy.types.rendersettings_simplify_gpencil_shader_fx*", 
"render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-shader-fx"),
        ("bpy.types.rendersettings_simplify_gpencil_view_fill*", 
"render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-view-fill"),
@@ -150,6 +157,7 @@ url_manual_mapping = (
        ("bpy.types.rigidbodyconstraint.solver_iterations*", 
"physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-solver-iterations"),
        ("bpy.types.toolsettings.gpencil_stroke_placement*", 
"grease_pencil/modes/draw/stroke_placement.html#bpy-types-toolsettings-gpencil-stroke-placement"),
        ("bpy.types.cyclesrendersettings.use_camera_cull*", 
"render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-use-camera-cull"),
+       ("bpy.types.fluiddomainsettings.color_ramp_field*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-color-ramp-field"),
        ("bpy.types.fluiddomainsettings.guide_vel_factor*", 
"physics/fluid/type/domain/guides.html#bpy-types-fluiddomainsettings-guide-vel-factor"),
        ("bpy.types.fluideffectorsettings.use_plane_init*", 
"physics/fluid/type/effector.html#bpy-types-fluideffectorsettings-use-plane-init"),
        ("bpy.types.linestylegeometrymodifier_tipremover*", 
"render/freestyle/parameter_editor/line_style/modifiers/geometry/tip_remover.html#bpy-types-linestylegeometrymodifier-tipremover"),
@@ -191,6 +199,7 @@ url_manual_mapping = (
        ("bpy.types.fluiddomainsettings.noise_strength*", 
"physics/fluid/type/domain/gas/noise.html#bpy-types-fluiddomainsettings-noise-strength"),
        ("bpy.types.fluiddomainsettings.particle_scale*", 
"physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-particle-scale"),
        ("bpy.types.fluiddomainsettings.resolution_max*", 
"physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-resolution-max"),
+       ("bpy.types.fluiddomainsettings.show_gridlines*", 
"physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsetting

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to