SDF 圆环

28 / 30
使用距离场绘制圆环:通过 abs(length(p) - r) 得到环的距离,并用 smoothstep 构造平滑边缘。

这是模块六的综合练习。把距离场(SDF)的两步过程明确分开:先计算到圆周的距离,再用 smoothstep 把距离转成遮罩。


两步过程

第一步:计算圆环距离

length(p) 是到中心的距离,radius 是圆的半径,两者之差的绝对值就是到圆周的距离:圆周上为 0,向内向外都增大。

第二步:距离转遮罩

ringDist < thickness 时遮罩为 1(圆环内)。aa = 0.006 控制边缘模糊度,防止锯齿。


练习

练习代码里 ringDist = 0.0mask = 0.0(全背景色)。按顺序完成两个 TODO:先算 ringDist,再算 mask

答案解析

abs(length(p) - radius) 把距离场以圆周为轴「折叠」:圆周上 ringDist = 0,圆内和圆外都是正值,smoothstep 对称地淡化两侧边缘。

调整 thickness = 0.06 得到更粗的圆环,radius = 0.15 让圆更小,aa = 0.02 让边缘更柔和。

GLSL 代码编辑器

正确代码预览

当前代码预览