GLSL 效果示例
光线步进入门:用距离场画出第一个球体
在命中遮罩和着色球体之间切换,可观察步数上限的影响。
在线示例
修改右侧代码,左侧预览会实时更新。
观察什么
在命中遮罩和着色球体之间切换,可观察步数上限的影响。
实现原理
沿每个像素的射线前进,步长由距离场给出;命中阈值和最大距离终止循环。
找到控制效果的代码
return length(p)-.75;
动手修改
把 scene(p)=length(p)-.75 的半径从 .75 改成 .5。球体剪影会缩小,相机位置和透视保持不变。
调试与成本
d<.002 命中条件与 80 步上限共同决定追踪何时停止。把命中容差增为 .02,表面边界会更不精确;放宽容差与在 scene 里增大球半径并不是同一件事。