GlSL 绚丽的花花
一直以来我比较喜欢CG风格,自从我遇见了http://glslsandbox.com/它之后,我发现这种能在线编辑实时运行在WebGL下让我感觉一阵阵的肉麻.
出于好于解释的考虑,我都以自己写的算法为讲诉。
图示为一朵8角花,猜猜你第一眼会想到的算法?如果这些算法都能轻易的猜测出来,说明你可以哟!!
http://www.glslsandbox.com/e#24051.0
1. 以下为它的代码
2. `//by 834144373
ifdef GL_ES
precision mediump float;
endif
uniform float time; //时间每秒(在时间上的微分,即时间积量)
uniform vec2 mouse; //以视窗左下角为原点,x、y 处于(0.,1.)区间
uniform vec2 resolution; //视窗的长 宽距离
void main( void ) {
vec2 uv = ( gl_FragCoord.xy / resolution.xy ); //resolution.xy 为视窗里以左下角为原点各个像素点的坐标
vec2 pos = 2.*uv - vec2(1.); //这我都不想说了,我想把坐标原点移到屏幕中间,个人口味不一样嘛,我喜欢(0,1)的坐标空间
float dis = 0.35 + 0.2*cos(atan(pos.y,pos.x)*8.+time*2.4);//算出8个角,其实8就是频率
vec3 color = vec3(0.44,0.4,0.9); //背景颜色
color *= smoothstep(dis,dis+0.3,length(pos)); //length(pos)每个像素到原点的距离
color.rb += vec2(smoothstep(0.25,.89,dis)); //在每个角拉个渐变
gl_FragColor = vec4( color, 1.0 ); //最终颜色输出
}`
- atan(pos.y,pos.x) 相当于 CG里的atan2()函数,用于求出角度,其实就是数学里的arctan(y/x)
如果对颜色通道没有用完,于是我就添了这一出代码,先看图
http://www.glslsandbox.com/e#24051.0
由于爱装个B,都以by 834 ,by 834144 ,by 834144373,留言。当然 我的qq834144373。