Slide 24
Slide 24 text
uniform shader content;
// 0 for horizontal pass, 1 for vertical
uniform int direction;
uniform half blurRadius;
uniform half4 crop;
uniform shader mask;
const int maxRadius = 150;
const half2 directionHorizontal = half2(1.0, 0.0);
const half2 directionVertical = half2(0.0, 1.0);
half4 main(vec2 coord) {
half intensity = mask.eval(coord).a;
return blur(coord, mix(0.0, blurRadius, intensity));
}
half gaussian(half x, half sigma) {
return exp(-(x * x) / (2.0 * sigma * sigma)) / (2.0 * ${PI.toFloat()} * sigma * sigma);
}
half4 blur(vec2 coord, half radius) {
half2 directionVec = direction == 0 ? directionHorizontal : directionVertical;
half sigma = max(radius / 2, 1.0);