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