如何在 2D 上下文中 'unbunch' (co) 正弦波?
How to 'unbunch' (co)sine waves in a 2D context?
作为参考,这是我用来测试东西的 jsfiddle:
https://jsfiddle.net/roomyrooms/7L1n02fs/57/
这是一张展示我的问题的 gif:
https://i.gyazo.com/a18e7fe19b76a93655a2cc89f166dd61.mp4
还有我的片段代码:
var fragmentShader = `
precision mediump float;
varying vec2 vTextureCoord;
varying vec2 vFilterCoord;
uniform sampler2D uSampler;
uniform float uTime;
void main() {
vec4 ogCol = texture2D(uSampler, vTextureCoord);
float dist = distance(vTextureCoord.xy, vec2(0.5));
float mod = 0.0;
float sinTime = sin(uTime*0.01*vTextureCoord.y) * 0.5;
float cosTime = cos(uTime*0.01*vTextureCoord.x) * 0.5;
float thresh = 0.25 + (sinTime*0.025) + (cosTime*0.025);
if (dist <= thresh) {
mod = 1.0;
} else if (dist <= thresh+0.02) {
mod = 100.0;
}
gl_FragColor = ogCol * mod;
}`
基本上,我发现了如何降低 WebGl/in 触发函数的时间速度,以及降低它们的振幅。然而,我不确定该怎么做,'capture' 要保留的波函数的特定部分。正如你在gif中看到的那样,它最终变得非常congested/bunched在一起。
我更喜欢平滑的波浪美学,但我似乎无法将其保持在那个水平。有什么帮助吗?4
PS: 我在这里使用 PIXIjs 作为中间人,但是片段着色器字符串中的所有内容都是纯 WebGl。
您需要添加与纹理坐标不成比例的时间分量。
+
而不是 *
.
您可以尝试这样的操作:
float k = uTime*0.01;
float g = 40.0;
float sinTime = sin(k + g*vTextureCoord.y) * 0.5;
float cosTime = cos(k + g*vTextureCoord.x) * 0.5;
您的要求具有艺术性,因此您当然可以根据自己的喜好调整这些常量。
分叉 fiddle:https://jsfiddle.net/3y28ha5v/
作为参考,这是我用来测试东西的 jsfiddle: https://jsfiddle.net/roomyrooms/7L1n02fs/57/
这是一张展示我的问题的 gif: https://i.gyazo.com/a18e7fe19b76a93655a2cc89f166dd61.mp4
还有我的片段代码:
var fragmentShader = `
precision mediump float;
varying vec2 vTextureCoord;
varying vec2 vFilterCoord;
uniform sampler2D uSampler;
uniform float uTime;
void main() {
vec4 ogCol = texture2D(uSampler, vTextureCoord);
float dist = distance(vTextureCoord.xy, vec2(0.5));
float mod = 0.0;
float sinTime = sin(uTime*0.01*vTextureCoord.y) * 0.5;
float cosTime = cos(uTime*0.01*vTextureCoord.x) * 0.5;
float thresh = 0.25 + (sinTime*0.025) + (cosTime*0.025);
if (dist <= thresh) {
mod = 1.0;
} else if (dist <= thresh+0.02) {
mod = 100.0;
}
gl_FragColor = ogCol * mod;
}`
基本上,我发现了如何降低 WebGl/in 触发函数的时间速度,以及降低它们的振幅。然而,我不确定该怎么做,'capture' 要保留的波函数的特定部分。正如你在gif中看到的那样,它最终变得非常congested/bunched在一起。
我更喜欢平滑的波浪美学,但我似乎无法将其保持在那个水平。有什么帮助吗?4
PS: 我在这里使用 PIXIjs 作为中间人,但是片段着色器字符串中的所有内容都是纯 WebGl。
您需要添加与纹理坐标不成比例的时间分量。
+
而不是 *
.
您可以尝试这样的操作:
float k = uTime*0.01;
float g = 40.0;
float sinTime = sin(k + g*vTextureCoord.y) * 0.5;
float cosTime = cos(k + g*vTextureCoord.x) * 0.5;
您的要求具有艺术性,因此您当然可以根据自己的喜好调整这些常量。
分叉 fiddle:https://jsfiddle.net/3y28ha5v/