GLSL 效果示例
无限隧道:用空间重复排列一串发光拱门
相机向前移动,拱门连续经过视点,远端随距离淡出。
在线示例
修改右侧代码,左侧预览会实时更新。
观察什么
相机向前移动,拱门连续经过视点,远端随距离淡出。
实现原理
将 Z 坐标折回固定周期,在一个单元里定义拱门;相机平移让重复结构连续经过。
找到控制效果的代码
p.z=mod(p.z+1.,2.)-1.;vec2 q=abs(p.xy)-vec2(1.2,1.);return max(abs(length(vec2(max(q.x,0.),p.y))-1.)-.08,abs(p.z)-.07);
动手修改
把 ro 中的前进位移 u_time*.6 改成 u_time*1.2。重复拱门会以两倍速度经过相机,z 方向的间隔仍为两个单位。
调试与成本
重复折叠 mod(p.z+1.,2.)-1. 能定义无限单元,但射线仍在距离 12 或 80 步后停止。把拱门薄片半厚度 abs(p.z)-.07 改为 abs(p.z)-.12,每片会变厚,重复单元数量不变。