Commit: 0c42cd80278af32c9b810c8143ab9423d3a66bc6
Author: Antonio Vazquez
Date:   Tue Jul 3 09:58:29 2018 +0200
Branches: temp-greasepencil-vfx
https://developer.blender.org/rB0c42cd80278af32c9b810c8143ab9423d3a66bc6

WIP: Add new blur parameter for Rim FX

Still is not working, this commit only put the pieces in place.

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

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_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 1cb940d39cc..abc70c3c92c 100644
--- a/release/scripts/startup/bl_ui/properties_data_shaderfx.py
+++ b/release/scripts/startup/bl_ui/properties_data_shaderfx.py
@@ -102,6 +102,8 @@ class DATA_PT_shader_fx(ShaderFxButtonsPanel, Panel):
         layout.prop(fx, "rim_color")
         layout.prop(fx, "mask_color")
         layout.prop(fx, "mode")
+        if fx.mode != 'NORMAL':
+            layout.prop(fx, "blur")
 
     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 29007b1585b..056b4cca720 100644
--- a/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
+++ b/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
@@ -384,6 +384,7 @@ static void DRW_gpencil_fx_rim(
        DRW_shgroup_uniform_vec4(fx_shgrp, "rim_color", &fxd->rim_rgba[0], 1);
        DRW_shgroup_uniform_vec4(fx_shgrp, "mask_color", &fxd->mask_rgba[0], 1);
        DRW_shgroup_uniform_int(fx_shgrp, "mode", &fxd->mode, 1);
+       DRW_shgroup_uniform_int(fx_shgrp, "blur", &fxd->blur, 1);
 
        DRW_shgroup_uniform_vec3(fx_shgrp, "loc", &ob->loc[0], 1);
        DRW_shgroup_uniform_float(fx_shgrp, "pixsize", stl->storage->pixsize, 
1);
diff --git 
a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_frag.glsl 
b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_frag.glsl
index 24b0941624f..378c1386931 100644
--- a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_rim_frag.glsl
@@ -8,6 +8,7 @@ uniform int offset[2];
 uniform vec4 rim_color;
 uniform vec4 mask_color;
 uniform int mode;
+uniform int blur;
 
 uniform vec3 loc;
 uniform float pixsize;   /* rv3d->pixsize */
@@ -26,6 +27,25 @@ out vec4 FragColor;
 float defaultpixsize = pixsize * pixelsize * (1000.0 / pixfactor);
 vec2 noffset = vec2(offset[0], offset[1]);
 
+vec4 get_blur(ivec2 uv, int bx, int by)
+{
+       /* apply blurring, using a 9-tap filter with predefined gaussian 
weights */
+       vec4 outcolor = vec4(0.0);
+    outcolor += texelFetch(strokeColor, ivec2(uv.x - 1.0 * bx, uv.y + 1.0 * 
by), 0) * 0.0947416;
+    outcolor += texelFetch(strokeColor, ivec2(uv.x - 0.0 * bx, uv.y + 1.0 * 
by), 0) * 0.118318;
+    outcolor += texelFetch(strokeColor, ivec2(uv.x + 1.0 * bx, uv.y + 1.0 * 
by), 0) * 0.0947416;
+    outcolor += texelFetch(strokeColor, ivec2(uv.x - 1.0 * bx, uv.y + 0.0 * 
by), 0) * 0.118318;
+
+    outcolor += texelFetch(strokeColor, ivec2(uv.x, uv.y), 0) * 0.147761;
+
+    outcolor += texelFetch(strokeColor, ivec2(uv.x + 1.0 * bx, uv.y + 0.0 * 
by), 0) * 0.118318;
+    outcolor += texelFetch(strokeColor, ivec2(uv.x - 1.0 * bx, uv.y - 1.0 * 
by), 0) * 0.0947416;
+    outcolor += texelFetch(strokeColor, ivec2(uv.x + 0.0 * bx, uv.y - 1.0 * 
by), 0) * 0.118318;
+    outcolor += texelFetch(strokeColor, ivec2(uv.x + 1.0 * bx, uv.y - 1.0 * 
by), 0) * 0.0947416;
+       
+       return outcolor;
+}
+
 float overlay_color(float a, float b)
 {
        float rtn; 
@@ -86,7 +106,6 @@ void main()
        dx = dx * -1.0;
        dy = dy * -1.0;
        
-       vec2 coord = vec2(uv.x + dx, uv.y + dy);
        float stroke_depth = texelFetch(strokeDepth, ivec2(uv.xy), 0).r;
        
        vec4 src_pixel= texelFetch(strokeColor, ivec2(uv.xy), 0);
diff --git a/source/blender/makesdna/DNA_shader_fx_types.h 
b/source/blender/makesdna/DNA_shader_fx_types.h
index 0587c010c13..47bdc5d04de 100644
--- a/source/blender/makesdna/DNA_shader_fx_types.h
+++ b/source/blender/makesdna/DNA_shader_fx_types.h
@@ -151,6 +151,8 @@ typedef struct RimShaderFxData {
        float rim_rgba[4];
        float mask_rgba[4];
        int   mode;
+       int   blur;
+       char pad[4];
        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 9aac05af005..f441314e526 100644
--- a/source/blender/makesrna/intern/rna_shader_fx.c
+++ b/source/blender/makesrna/intern/rna_shader_fx.c
@@ -366,6 +366,12 @@ static void rna_def_shader_fx_rim(BlenderRNA *brna)
        RNA_def_property_enum_items(prop, rna_enum_shaderfx_rim_modes_items);
        RNA_def_property_ui_text(prop, "Mode", "Blend mode");
        RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, 
"rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "blur", PROP_INT, PROP_PIXEL);
+       RNA_def_property_int_sdna(prop, NULL, "blur");
+       RNA_def_property_range(prop, 0, INT_MAX);
+       RNA_def_property_ui_text(prop, "Blur", "Number of pixels for bluring 
rim (set to 0 to disable)");
+       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 0505fde509f..5e5f21b8496 100644
--- a/source/blender/shader_fx/intern/FX_shader_rim.c
+++ b/source/blender/shader_fx/intern/FX_shader_rim.c
@@ -43,6 +43,7 @@ static void initData(ShaderFxData *fx)
        ARRAY_SET_ITEMS(gpfx->rim_rgba, 1.0f, 1.0f, 0.5f, 0.9f);
        ARRAY_SET_ITEMS(gpfx->mask_rgba, 0.0f, 0.0f, 0.0f, 1.0f);
        gpfx->mode = eShaderFxRimMode_Multiply;
+       gpfx->blur = 0;
 }
 
 static void copyData(const ShaderFxData *md, ShaderFxData *target)

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

Reply via email to