GLSL 效果示例

星际穿梭:让星点从远处拉成长线

速度提高时点变成长线,近处星迹更长。

在线示例

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

观察什么

速度提高时点变成长线,近处星迹更长。

实现原理

角度决定星迹方向,倒数半径与时间决定径向运动;越靠边缘的光迹伸展越明显。

找到控制效果的代码

float a=atan(p.y,p.x),r=max(length(p),.01);float sector=floor(a*130.),phase=fract(1./r*.5+u_time*(.5+u_parameter*3.)+hash(vec2(sector)));float line=pow(.5+.5*cos(a*130.),24.)*pow(phase,15.);c+=vec3(.5,.7,1.)*line*smoothstep(.08,.3,r);

动手修改

把 u_parameter 从 0 调到 1,相位速度 .5+u_parameter*3. 会从 0.5 变为 3.5。径向星轨会加速运动,角向扇区位置保持固定。

调试与成本

倒数半径由 max(length(p),.01) 限制,中央淡出使用 smoothstep(.08,.3,r)。把 .08 提高到 .2,中心留白会扩大;这些星轨按像素计算,没有粒子缓冲。

用到的内置函数

一步步学会这个效果