mx_aastep
mx_aastep
一个抗锯齿的阶梯函数节点,用于在程序化图形中创建平滑、无锯齿的边缘。
核心优势
利用屏幕空间导数自动生成宽度恰好为一个像素的平滑边缘,效果自适应于任何分辨率和缩放级别,极大地提升了程序化图形的视觉质量。
常见用途
程序化绘制几何形状:使用距离场绘制边缘平滑的圆形、方形等。
生成平滑的程序化图案:确保条纹、波点等图案的边界无锯齿。
创建平滑的混合遮罩:在不同材质(如雪和岩石)间实现自然过渡。
如何调整
通过改变 `threshold` 参数来控制边缘的位置(如圆的半径);通过对 `value` 输入进行数学运算(如给距离场添加一个正弦波)来改变整体形状,其边缘将依然保持平滑。
代码示例
1
2// 定义圆的中心和半径
3const center = vec2( 0.5, 0.5 );
4const radius = float( 0.25 );
5
6// 计算当前片元UV到圆心的距离
7const dist = distance( uv(), center );
8
9// 当 dist > radius 时,结果平滑地从 0 过渡到 1
10const stepValue = mx_aastep( radius, dist );
11
12// 反转结果,使圆内为 1 (白色),圆外为 0 (黑色)
13const circle = float( 1.0 ).sub( stepValue );
14