第 3 课:Water Waves Attenuation 3D
实现
uniform float iTime;
uniform sampler2D iChannel0;
const float PI = 3.14;
const float frequency = 10.0;
const float amplitude = 0.25;
const float speed = -2.0;
const float maxDistance = 0.5;
in vec2 vUv;
out vec4 FragColor;
void main() {
vec2 uv = vUv;
float dist = sqrt(pow(uv.x - 0.5,2.0) + pow(uv.y - 0.5,2.0));
float MaxDist = 0.5;
float A_attenuated = amplitude * clamp((1.0 - dist/MaxDist),0.0, 1.0);
float distortion = A_attenuated * sin(dist * 2.0 * PI * frequency + speed * iTime);
vec3 color = texture(iChannel0, uv + distortion).rgb;
FragColor = vec4(color, 1.0);
}