GLSL 效果示例

对数螺旋:让旋臂从中心连续展开

调节绕转系数,可见旋臂形状变化而不是整张图简单自转。

在线示例

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

观察什么

调节绕转系数,可见旋臂形状变化而不是整张图简单自转。

实现原理

对半径取对数,再与角度线性组合,得到越接近中心越密的旋臂;中心半径必须夹紧。

找到控制效果的代码

float a=atan(p.y,p.x),r=max(length(p),.01);float spiral=sin(a*4.-log(r)*(3.+u_parameter*8.)+u_time);c=palette(log(r)*.2+spiral*.12)*(0.2+.8*smoothstep(.2,.8,spiral));

动手修改

把角度乘数 a*4. 改成 a*6.。螺旋臂会从四条变成六条,向内卷曲的紧密程度仍由对数半径项控制。

调试与成本

r=max(length(p),.01) 的下限避免把零传给 log。把 .01 提高为 .08,中心被压平的区域会变大,显示的是半径截断,而不是在奇点处增加细节。

用到的内置函数

一步步学会这个效果