所以我已经实现了反射部分:
uniform sampler2D texture;
uniform vec2 resolution;
uniform vec3 overlayColor;
void main()
{
vec2 uv = gl_FragCoord.xy / resolution.xy;
if (uv.y > 0.3)// is air - no reflection or effect
{
gl_FragColor = texture2D(texture, vec2(uv.x, uv.y));
}
else
{
// Compute the mirror effect.
vec4 color = texture2D(texture, vec2(uv.x, 0.6 - uv.y));
//
vec4 finalColor = vec4(mix(color.rgb, overlayColor, 0.25), 1.0);
gl_FragColor = finalColor;
}
}
现在的问题是这些涟漪如何实现?
非常感谢您提供这些提示。事实证明,这是尝试@LeFauve的实现后我需要的。
—
cepro 2015年
time
值,您可以uv.xy
使用(sin(time),cos(time))
偏移矢量来移动。当然,您必须找出正弦和余弦偏移的幅度。我将首先抵消第uv.y
一个,然后看看如何进一步调整效果。