SDF 圆环
28 / 30
使用距离场绘制圆环:通过 abs(length(p) - r) 得到环的距离,并用 smoothstep 构造平滑边缘。
这是模块六的综合练习。把距离场(SDF)的两步过程明确分开:先计算到圆周的距离,再用 smoothstep 把距离转成遮罩。
两步过程
第一步:计算圆环距离
length(p) 是到中心的距离,radius 是圆的半径,两者之差的绝对值就是到圆周的距离:圆周上为 0,向内向外都增大。
第二步:距离转遮罩
ringDist < thickness 时遮罩为 1(圆环内)。aa = 0.006 控制边缘模糊度,防止锯齿。
练习
练习代码里 ringDist = 0.0,mask = 0.0(全背景色)。按顺序完成两个 TODO:先算 ringDist,再算 mask。
答案解析
abs(length(p) - radius) 把距离场以圆周为轴「折叠」:圆周上 ringDist = 0,圆内和圆外都是正值,smoothstep 对称地淡化两侧边缘。
调整 thickness = 0.06 得到更粗的圆环,radius = 0.15 让圆更小,aa = 0.02 让边缘更柔和。