GLSL 效果示例
多层视差山景:用不同速度拉开远近
相机横移,近景比远山更快,前后遮挡关系稳定。
在线示例
修改右侧代码,左侧预览会实时更新。
观察什么
相机横移,近景比远山更快,前后遮挡关系稳定。
实现原理
每层山形使用不同的水平移动速度,按远到近顺序覆盖,远层更浅、近层更暗。
找到控制效果的代码
c=mix(vec3(.05,.1,.24),vec3(.7,.5,.5),uv.y);for(int i=0;i<4;i++){float f=float(i),speed=.04+f*.035;float h=.15+f*.12+.15*fbm(vec2(uv.x*3.+u_time*speed,f*7.));if(uv.y<h)c=mix(vec3(.25,.4,.55),vec3(.03,.08,.12),f/3.);}
动手修改
把 speed=.04+f*.035 中的速度增量 .035 改为 0.。四层山会按同样速度移动,产生视差纵深的相对运动随之消失。
调试与成本
循环共有四层山,每层计算一次四层 fbm 高度。把 i<4 改成 i<2,可只保留两层远山并减少噪声计算;原有 f/3. 仍使用背景层对应的颜色。