Opengl GLSL的连锁反应需要澄清
我一直在经历简单的水涟漪效应。这确实给了我们一个机会。但我不明白的是这行代码Opengl GLSL的连锁反应需要澄清,opengl,glsl,effects,Opengl,Glsl,Effects,我一直在经历简单的水涟漪效应。这确实给了我们一个机会。但我不明白的是这行代码 vec2 uv = gl_FragCoord.xy/iResolution.xy+(cPos/cLength)*cos(cLength*12.0-iGlobalTime*4.0) * 0.03; 我不明白数学是如何翻译成这句话的,并取得如此好的连锁反应。我需要帮助解密这条线背后的逻辑 vec2 uv = gl_FragCoord.xy/iResolution.xy+(cPos/cLength)*cos(cLength
vec2 uv = gl_FragCoord.xy/iResolution.xy+(cPos/cLength)*cos(cLength*12.0-iGlobalTime*4.0) * 0.03;
我不明白数学是如何翻译成这句话的,并取得如此好的连锁反应。我需要帮助解密这条线背后的逻辑
vec2 uv = gl_FragCoord.xy/iResolution.xy+(cPos/cLength)*cos(cLength*12.0-iGlobalTime*4.0) * 0.03;
为了理解这个等式,让我们把它分解成几部分,然后把它们连接起来
gl_FragCoord.xy/iResolution.xy
- gl_FragCoord.xy从(0,0)到(xRes,yRes)变化
- 我们将除以决议iResolution.xy
- 所以“gl_FragCoord.xy/iResolution.xy”的范围从(0,0)到(1,1)
- 这是您的像素坐标位置
- 因此,如果你给出“vec2uv=gl_FragCoord.xy/iResolution.xy”,它将只是一个静态图像
- CPO的范围为(-1,-1)到(1,1)
- 假设一个原点位于中心且CPO为从原点指向当前像素的向量的2D平面
- cLength将给出距离中心的距离
- “cPos/cLength”是单位向量
- 我们寻找单位向量的目的是找到像素必须被轻推的方向
- 该方程将沿方向向量(单位向量)微移每个像素。但是所有的波都是沿着方向向量以相干性推进的。效果看起来像是图像在膨胀和收缩
- 为了得到波效应,我们必须引入相移。在波中,每个粒子处于不同的相位。这可以由cos(CLENGHT*12 iGlobalTime)引入
- 这里每个像素的长度都不同。所以我们取这个值,把它当作像素的相位
- 乘以12是为了放大效果
- 将iGlobalTime乘以4.0将加快波浪速度
- 最后,将余弦积乘以0.03,在(-0.03,0.03)范围内移动最大像素,因为在(-1,1)范围内移动像素看起来很奇怪