GLSL 效果示例

光线步进入门:用距离场画出第一个球体

在命中遮罩和着色球体之间切换,可观察步数上限的影响。

在线示例

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

观察什么

在命中遮罩和着色球体之间切换,可观察步数上限的影响。

实现原理

沿每个像素的射线前进,步长由距离场给出;命中阈值和最大距离终止循环。

找到控制效果的代码

return length(p)-.75;

动手修改

把 scene(p)=length(p)-.75 的半径从 .75 改成 .5。球体剪影会缩小,相机位置和透视保持不变。

调试与成本

d<.002 命中条件与 80 步上限共同决定追踪何时停止。把命中容差增为 .02,表面边界会更不精确;放宽容差与在 scene 里增大球半径并不是同一件事。

深入理解

用到的内置函数

一步步学会这个效果