Shader特效——“径向模糊”的实现 【GLSL】
来源:互联网 发布:周泓旭 知乎 编辑:程序博客网 时间:2024/05/02 01:18
效果图:
glsl代码如下:
#ifdef GL_ESprecision mediump float;#endifuniform sampler2D iChannel0;uniform vec2 centerpos;// 径向中心uniform float GlowRange;// 径向范围void main(){ vec2 uv = gl_FragCoord.xy / vec2(512., 512.); vec4 clraverge = vec4(0, 0, 0, 0); float range = GlowRange, count = 0, x1, y1; vec2 cpos = centerpos; for (float j = 1; j <= range; j += 1) { // 横坐标为圆心坐标时,计算k分母为0 if (cpos.x - uv.x == 0) { x1 = uv.x; //y 方向上一定范围内的采样(0 - 1/10的差值) y1 = uv.y + (cpos.y - uv.y) * j / (10 * range); } else { // 直线的斜率 float k = (cpos.y - uv.y) / (cpos.x - uv.x); // x 方向 x1 = uv.x + (cpos.x - uv.x) * j / (10. * range); // 如果采样邻域超过了径向中心 /*if ((cpos.x - uv.x) * (cpos.x - x1) < 0) { x1 = cpos.x; }*/ // k 方向 y1 = cpos.y - (cpos.x - x1) * k; // 如果超出指定范围则跳过 if (x1 < 0. || y1 < 0. || x1 > 1. || y1 > 1.) { continue; } } clraverge += texture2D(iChannel0, vec2(x1, y1)); count += 1; } // 取径向范围内的平均值 clraverge /= count; gl_FragColor = clraverge;}
更早的一篇介绍径向模糊的日志
0 0
- Shader特效——“径向模糊”的实现 【GLSL】
- Shader特效——“径向模糊”的实现 【GLSL】
- Shader特效——实现“火苗”【GLSL】
- Shader特效——实现“闪电”【GLSL】
- Shader特效——实现“羽化”【GLSL】
- Shader特效——“水彩画”的实现【GLSL】
- Shader特效——实现简单的“FishEye”【GLSL】
- Shader特效——“马赛克”的实现【GLSL】
- Shader特效——“Kuwahara Filter”的实现 【OpenCV】【GLSL】
- Shader特效——“Bilateral Filter”的实现 【GLSL】
- Shader特效——“Barrel Blur”的实现 【GLSL】
- Shader特效——“Canny边缘检测”的实现 【GLSL】
- Shader特效——“Gamma校正”的实现 【GLSL】
- Shader特效——“翻页”的实现 【GLSL】
- Shader特效——“Voronoi 图像”的实现 【GLSL】
- Shader特效——“Sephia等效果”的实现 【GLSL】
- Shader特效——“Simple RayTrace”的实现 【GLSL】
- Shader特效——“Point in Box”的实现 【GLSL】
- Android5.0,6.0,7.0新特性整理
- OpenGL绘制自由落体小球
- java 中int、string转换详解
- 编译器的工作过程
- 安卓 Android Studio NDK 神坑总结
- Shader特效——“径向模糊”的实现 【GLSL】
- webpack入门教程
- Glide(2)的高级用法
- spark-初探
- UVa1225 Digit Counting
- 自定义控件其实很简单 七
- androidStudio中,修改版本号需要注意的地方
- 中英词类活用
- org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be res