[Bf-blender-cvs] [7efd9a91aa8] soc-2020-fluid-tools: Minor refactoring changes.

Sriharsha Kotcharlakot noreply at git.blender.org
Tue Jun 9 17:39:17 CEST 2020


Commit: 7efd9a91aa8f6647b40c8c377b6df8cb8e9241c3
Author: Sriharsha Kotcharlakot
Date:   Tue Jun 9 21:08:46 2020 +0530
Branches: soc-2020-fluid-tools
https://developer.blender.org/rB7efd9a91aa8f6647b40c8c377b6df8cb8e9241c3

Minor refactoring changes.

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

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 4f847fbe246..27f6b9ed728 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl
@@ -97,10 +97,10 @@ vec4 sample_tricubic(sampler3D ima, vec3 co)
 
 vec4 sample_raw(sampler3D ima, vec3 co)
 {
-  co -= 0.5;
-  vec3 dim = vec3(textureSize(ima, 0).xyz);
-  co = co - mod(co, 1.0 / dim) + 0.5 / dim + 0.5;
-  return texture(ima, co);
+  vec3 tex_size = vec3(textureSize(ima, 0).xyz);
+  /* texel center */
+  vec3 tc = co - mod(co, 1.0 / tex_size) + 0.5 / tex_size;
+  return texture(ima, tc);
 }
 
 #ifdef USE_TRICUBIC
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 1eaa5aaa2f2..edb2046568c 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -367,6 +367,13 @@ typedef struct WORKBENCH_ViewLayerData {
   int cavity_sample_count;
 } WORKBENCH_ViewLayerData;
 
+/* Types of interpolation. */
+typedef enum {
+  INTERP_LINEAR = 0,
+  INTERP_CUBIC = 1,
+  INTERP_RAW = 2,
+} InterpType;
+
 /* inline helper functions */
 BLI_INLINE bool workbench_is_specular_highlight_enabled(WORKBENCH_PrivateData *wpd)
 {
@@ -413,7 +420,7 @@ 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, char cubic, bool smoke);
+GPUShader *workbench_shader_volume_get(bool slice, bool coba, InterpType cubic, bool smoke);
 
 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 ec04a4eb7d2..43749f2688a 100644
--- a/source/blender/draw/engines/workbench/workbench_shader.c
+++ b/source/blender/draw/engines/workbench/workbench_shader.c
@@ -441,7 +441,7 @@ GPUShader *workbench_shader_antialiasing_get(int stage)
   return e_data.smaa_sh[stage];
 }
 
-GPUShader *workbench_shader_volume_get(bool slice, bool coba, char cubic, bool smoke)
+GPUShader *workbench_shader_volume_get(bool slice, bool coba, InterpType cubic, bool smoke)
 {
   GPUShader **shader = &e_data.volume_sh[slice][coba][cubic][smoke];
 
@@ -455,10 +455,10 @@ GPUShader *workbench_shader_volume_get(bool slice, bool coba, char cubic, bool s
       BLI_dynstr_append(ds, "#define USE_COBA\n");
     }
     switch (cubic) {
-      case 0:
+      case INTERP_LINEAR:
         BLI_dynstr_append(ds, "#define USE_TRILINEAR\n");
         break;
-      case 1:
+      case INTERP_CUBIC:
         BLI_dynstr_append(ds, "#define USE_TRICUBIC\n");
         break;
     }
diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c
index af72e001e12..089a4df213f 100644
--- a/source/blender/draw/engines/workbench/workbench_volume.c
+++ b/source/blender/draw/engines/workbench/workbench_volume.c
@@ -95,7 +95,7 @@ static void workbench_volume_modifier_cache_populate(WORKBENCH_Data *vedata,
 
   const bool use_slice = (mds->slice_method == FLUID_DOMAIN_SLICE_AXIS_ALIGNED &&
                           mds->axis_slice_method == AXIS_SLICE_SINGLE);
-  const char cubic_interp = mds->interp_method;
+  const InterpType cubic_interp = (InterpType)mds->interp_method;
   GPUShader *sh = workbench_shader_volume_get(use_slice, mds->use_coba, cubic_interp, true);
 
   if (use_slice) {



More information about the Bf-blender-cvs mailing list