Shader特效——“雪花飞舞 ”的实现 【GLSL】
来源:互联网 发布:剑三成女脸型数据下载 编辑:程序博客网 时间:2024/05/05 14:02
效果图:
是不是有点 “落雪无声掩尘嚣”的感觉~
GLSL 代码:
#define _SnowflakeAmount 400 // 雪花数#define _BlizardFactor 0.25 // 风的大小#define fragCoord gl_FragCoord#define fragColor gl_FragColoruniform float iGlobalTime;uniform sampler2D tex;float rnd(float x){ return fract( sin( dot(vec2(x + 47.49, 38.2467 / (x + 2.3)), vec2(12.9898, 78.233))) * (43758.5453));}float drawCircle(vec2 uv, vec2 center, float radius){ return 1.0 - smoothstep(0.0, radius, length(uv - center));}const vec2 iResolution = vec2(512., 512.);void main(){ vec2 uv = fragCoord.xy / iResolution.x; vec4 color = texture2D(tex, uv); //fragColor = vec4(0.808, 0.89, 0.918, 1.0); fragColor = color; float j; // 生成若干个圆,当前uv依次与这些圆心计算距离,未落在圆域内则为黑色,落在圆域内则为白色 for (int i = 0; i < _SnowflakeAmount; i++) { j = float(i); // 控制了不同雪花的下落速度 和 雪花的大小 float speed = 0.3 + rnd(cos(j)) * (0.7 + 0.5 * cos( j / (float( _SnowflakeAmount) // _SnowflakeAmount * 0.25))); // Test //vec2 center = vec2(cos(iGlobalTime + sin(j)), // cos(iGlobalTime + cos(j))); vec2 center = vec2( // x坐标 左右环绕分布的范围 (-0.25 + uv.y) * _BlizardFactor + rnd(j) + 0.1 * cos(iGlobalTime + sin(j)), // y坐标 随着时间下降 mod( rnd(j) - speed * (iGlobalTime * 1.5 * (0.1 + _BlizardFactor)), 0.95) ); fragColor += vec4(0.9 * drawCircle(uv, center, 0.001 + speed * 0.012)); // 输出是这些圆的颜色叠加 }}
1 0
- 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特效——“翻页”的实现 【GLSL】
- Shader特效——“Voronoi 图像”的实现 【GLSL】
- Shader特效——“Sephia等效果”的实现 【GLSL】
- Shader特效——“Simple RayTrace”的实现 【GLSL】
- Shader特效——“Point in Box”的实现 【GLSL】
- Spring 中ResourceBundleMessageSource的使用
- android activity间传递内容值
- JS中setTimeout()和setInterval()方法的区别
- opengl基础画点
- cuda《学习笔记一》——查询属性
- Shader特效——“雪花飞舞 ”的实现 【GLSL】
- 使用BMap.Autocomplete,如何设置下拉框字体的大小
- Hadoop 伪分布式配置
- 【hdu 1058】Humble Numbers
- Android 应用程序启动过程分析 (用SysTrace 跟踪分析)
- 王小草【深度学习】笔记第二弹--细说卷积神经网络
- Android eclipse中项目调试
- 洛谷 1265
- netty 对 http 的实现