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,可查看完整方块,单独区分布尔挖洞与相机、光照的影响。