GLSL 效果示例

光线步进布尔雕刻:在立方体上挖出球形凹槽

转动模型,洞壁和外表面使用不同颜色。

在线示例

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

观察什么

转动模型,洞壁和外表面使用不同颜色。

实现原理

立方体与负球距离取最大值形成挖孔,最终表面的法线也由这个组合场估计。

找到控制效果的代码

vec3 q=abs(p)-vec3(.65);float b=length(max(q,0.))+min(max(q.x,max(q.y,q.z)),0.);return max(b,-(length(p-vec3(.4,0,0))-.65));

动手修改

在 scene 中,把挖洞球 length(p-vec3(.3,0,.45))-.65 的半径从 .65 改为 .45。方块上的凹洞会缩小,方块半尺寸 vec3(.65) 仍保持原值。

调试与成本

表面命中与六次法线采样都使用合并后的 max(b,-sphere) 场。把最后的 max 表达式换成 b,可查看完整方块,单独区分布尔挖洞与相机、光照的影响。

用到的内置函数

一步步学会这个效果