GLSL 效果示例

热浪扭曲:让远处的地平线微微晃动

变形集中在热源上方,远离该区域的画面稳定。

在线示例

修改右侧代码,左侧预览会实时更新。

观察什么

变形集中在热源上方,远离该区域的画面稳定。

实现原理

将横向扰动乘以局部热源遮罩,远离地平线的画面保持稳定。

找到控制效果的代码

float band=exp(-pow((uv.y-.45)*7.,2.));vec2 q=uv+vec2(noise(vec2(uv.y*90.,u_time*2.))-.5,0.)*band*u_parameter*.05;c=texture2D(u_texture,q).rgb;

动手修改

把 uv.y-.45 的带状区域中心改为 uv.y-.7。横向扭曲区会向上移动,远离该区域的图像仍接近原采样位置。

调试与成本

热浪使用一次噪声计算和一次背景采样。把 exp(-pow((uv.y-.45)*7.,2.)) 中的宽度系数 7. 改为 14.,受影响区域会收窄,这两项计算次数都不增加。

用到的内置函数

一步步学会这个效果