[Bf-blender-cvs] [190d80d9b73] temp-greasepencil-vfx: Add Blurrines parameter to Rim FX

Antonio Vazquez noreply at git.blender.org
Wed Jul 4 12:01:45 CEST 2018


Commit: 190d80d9b73a5dfc33f13d4d07b928dddf24342a
Author: Antonio Vazquez
Date:   Wed Jul 4 12:01:31 2018 +0200
Branches: temp-greasepencil-vfx
https://developer.blender.org/rB190d80d9b73a5dfc33f13d4d07b928dddf24342a

Add Blurrines parameter to Rim FX

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

M	release/scripts/startup/bl_ui/properties_data_shaderfx.py
M	source/blender/draw/engines/gpencil/gpencil_shader_fx.c
M	source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_prepare_frag.glsl
M	source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_resolve_frag.glsl
M	source/blender/makesdna/DNA_shader_fx_types.h
M	source/blender/makesrna/intern/rna_shader_fx.c
M	source/blender/shader_fx/intern/FX_shader_rim.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_shaderfx.py b/release/scripts/startup/bl_ui/properties_data_shaderfx.py
index 5010f56d234..7b1d28c767d 100644
--- a/release/scripts/startup/bl_ui/properties_data_shaderfx.py
+++ b/release/scripts/startup/bl_ui/properties_data_shaderfx.py
@@ -104,6 +104,7 @@ class DATA_PT_shader_fx(ShaderFxButtonsPanel, Panel):
         layout.prop(fx, "mode")
         layout.prop(fx, "blur")
         layout.prop(fx, "samples")
+        layout.prop(fx, "blurrines")
 
     def FX_SWIRL(self, layout, fx):
         layout.prop(fx, "object", text="Object")
diff --git a/source/blender/draw/engines/gpencil/gpencil_shader_fx.c b/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
index c27c573c777..4e471df015c 100644
--- a/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
+++ b/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
@@ -404,7 +404,7 @@ static void DRW_gpencil_fx_rim(
 	DRW_shgroup_uniform_texture_ref(fx_shgrp_b, "strokeColor", &e_data->input_color_tx);
 	DRW_shgroup_uniform_texture_ref(fx_shgrp_b, "strokeDepth", &e_data->input_depth_tx);
 	DRW_shgroup_uniform_texture_ref(fx_shgrp_b, "strokeMask", &e_data->temp_mask_tx_rim);
-	DRW_shgroup_uniform_int(fx_shgrp_b, "blur", &fxd->blur[0], 2);
+	DRW_shgroup_uniform_int(fx_shgrp_b, "blurrines", &fxd->blur_pixels, 1);
 
 	DRW_shgroup_uniform_vec3(fx_shgrp_b, "loc", &ob->loc[0], 1);
 	DRW_shgroup_uniform_float(fx_shgrp_b, "pixsize", stl->storage->pixsize, 1);
diff --git a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_prepare_frag.glsl b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_prepare_frag.glsl
index 8b8689f27c6..97b41516d1a 100644
--- a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_prepare_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_prepare_frag.glsl
@@ -97,7 +97,6 @@ void main()
 	vec4 src_pixel= texelFetch(strokeColor, ivec2(uv.xy), 0);
 	vec4 offset_pixel= texelFetch(strokeColor, ivec2(uv.x - dx, uv.y - dy), 0);
 	vec4 blur_pixel = texelFetch(strokeColor, ivec2(uv.x - dx - bx, uv.y - dy - by), 0);
-	
 	vec4 blur_pixel_b = texelFetch(strokeColor, ivec2(uv.x - dx + bx + bx, uv.y - dy + by + by), 0);
 	vec4 outcolor;
 	/* is transparent */ 
@@ -113,8 +112,9 @@ void main()
 			outcolor = src_pixel;
 		}
 		else {
-			mask = vec4(1, 0, 0, 1);
 			outcolor = get_blend_color(mode, src_pixel, vec4(rim_color.rgb, 1));
+
+			mask = vec4(1, 0, 0, 1);
 			if ((blur_pixel_b.a > 0) || (blur_pixel.a == 0)) {
 				mask = vec4(0, 0, 0, 0);
 			}
diff --git a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_resolve_frag.glsl b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_resolve_frag.glsl
index cbb8a72bc39..4e50e61e69a 100644
--- a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_resolve_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_resolve_frag.glsl
@@ -8,7 +8,7 @@ uniform sampler2D strokeColor;
 uniform sampler2D strokeDepth;
 uniform sampler2D strokeMask;
 
-uniform int blur[2];
+uniform int blurrines;
 
 out vec4 FragColor;
 
@@ -18,7 +18,7 @@ uniform float pixelsize; /* U.pixelsize */
 uniform float pixfactor;
 
 float defaultpixsize = pixsize * pixelsize * (1000.0 / pixfactor);
-vec2 noffset = vec2(blur[0], blur[1]);
+vec2 noffset = vec2(blurrines, blurrines);
 
 vec4 get_blur(ivec2 uv, float bx, float by)
 {
diff --git a/source/blender/makesdna/DNA_shader_fx_types.h b/source/blender/makesdna/DNA_shader_fx_types.h
index 47beae67498..1a47d7ed9fc 100644
--- a/source/blender/makesdna/DNA_shader_fx_types.h
+++ b/source/blender/makesdna/DNA_shader_fx_types.h
@@ -155,7 +155,7 @@ typedef struct RimShaderFxData {
 	int   mode;
 	int   blur[2];
 	int   samples;
-	char pad[4];
+	int   blur_pixels;
 	ShaderFxData_runtime runtime;
 } RimShaderFxData;
 
diff --git a/source/blender/makesrna/intern/rna_shader_fx.c b/source/blender/makesrna/intern/rna_shader_fx.c
index 4956333b202..ce0fdb1cefa 100644
--- a/source/blender/makesrna/intern/rna_shader_fx.c
+++ b/source/blender/makesrna/intern/rna_shader_fx.c
@@ -381,6 +381,14 @@ static void rna_def_shader_fx_rim(BlenderRNA *brna)
 	RNA_def_property_int_default(prop, 4);
 	RNA_def_property_ui_text(prop, "Samples", "Number of Blur Samples (zero, disable blur)");
 	RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+	prop = RNA_def_property(srna, "blurrines", PROP_INT, PROP_NONE);
+	RNA_def_property_int_sdna(prop, NULL, "blur_pixels");
+	RNA_def_property_range(prop, 1, 32);
+	RNA_def_property_ui_range(prop, 1, 32, 1, -1);
+	RNA_def_property_int_default(prop, 4);
+	RNA_def_property_ui_text(prop, "Blurrines", "Factor of blurriness");
+	RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
 }
 
 static void rna_def_shader_fx_swirl(BlenderRNA *brna)
diff --git a/source/blender/shader_fx/intern/FX_shader_rim.c b/source/blender/shader_fx/intern/FX_shader_rim.c
index 611e6f91bf7..fc4601579a2 100644
--- a/source/blender/shader_fx/intern/FX_shader_rim.c
+++ b/source/blender/shader_fx/intern/FX_shader_rim.c
@@ -44,6 +44,7 @@ static void initData(ShaderFxData *fx)
 	ARRAY_SET_ITEMS(gpfx->mask_rgb, 0.0f, 0.0f, 0.0f, 1.0f);
 	gpfx->mode = eShaderFxRimMode_Multiply;
 	ARRAY_SET_ITEMS(gpfx->blur, 0, 0);
+	gpfx->blur_pixels = 2;
 }
 
 static void copyData(const ShaderFxData *md, ShaderFxData *target)



More information about the Bf-blender-cvs mailing list