GLSL 效果示例
光线步进圆环:从内孔观察甜甜圈的自遮挡
相机绕行时,内孔、背面和前缘保持正确遮挡。
在线示例
修改右侧代码,左侧预览会实时更新。
观察什么
相机绕行时,内孔、背面和前缘保持正确遮挡。
实现原理
先计算点到圆环主圆的二维距离,再减去管半径;从不同角度检查内孔的遮挡。
找到控制效果的代码
return length(vec2(length(p.xz)-.6,p.y))-.22;
动手修改
在 length(vec2(length(p.xz)-.6,p.y))-.22 中,把管半径 .22 改为 .12。圆环会变细,中心孔扩大,主半径仍为 0.6。
调试与成本
主追踪使用精确圆环距离,命中后再做六次法线查询。把相机 ro.y 从 1.5 提高到 2.0,可从更高处观察中心孔;射线仍通过 p.y-.9 朝下方投射。