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.,受影响区域会收窄,这两项计算次数都不增加。