[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