modelRadius
modelRadius
一个浮点数(float),代表当前渲染物体边界球的半径。它使得在着色器内部可以方便地获取物体的宏观尺寸,用于创建尺寸依赖的视觉效果。
核心优势
提供了一个标准化的尺寸访问接口,无需手动传递 uniform 变量。该值在 CPU 端预计算,避免了 GPU 的性能开销,极大地简化了尺寸感知的程序化纹理、轮廓线和辉光等效果的实现逻辑。
常见用途
尺寸感知的程序化纹理:用作缩放因子,调整纹理密度以适应不同大小的物体。
NPR 轮廓线:作为基础比例尺,实现视觉上宽度一致的轮廓线。
尺寸依赖的辉光/自发光:作为强度控制器,让效果强度与物体大小相关联。
如何调整
该节点本身是只读的,没有可调参数。调整效果的关键在于如何“使用”这个半径值。例如,可以将其倒数用作效果强度,如 `const effectStrength = float( 10 ).div( modelRadius )`。这会产生与物体尺寸成反比的效果:小物体(半径小)效果更强,大物体(半径大)效果更弱,适用于需要“能量密度”感的效果。
代码示例
1
2// 使用 modelRadius 调整程序化纹理的缩放
3// 避免纹理在小物上过密,或在大物上拉伸
4const scaledUV = uv().mul( modelRadius );
5const pattern = noise( scaledUV );
6