pointUV
pointUV
在渲染 `Points`(点云)时,提供片元着色器中当前像素在单个点(方形面片)上的二维局部坐标(UV),对应 GLSL 内置变量 `gl_PointCoord`。
核心优势
它允许为点云中的每个点高效地应用独立的纹理或程序化图案(如圆形、星形),将简单的点转化为复杂的视觉元素。这是通过利用 GPU 原生支持实现的,性能极高且无需创建额外几何体。
常见用途
通过计算到点中心的距离并丢弃片元,将默认的方形点裁剪成圆形或带柔和边缘的圆点。
作为纹理坐标,为粒子系统中的每个点(如火花、烟雾)采样精灵贴图。
作为数学或噪声函数的输入,在不使用纹理的情况下程序化地生成点内图案(如径向渐变)。
如何调整
此节点本身不可调整。其效果通过对输出的 `vec2` 坐标进行数学运算来改变。例如,`pointUV.sub(0.5)` 可将坐标系中心移至点中央,简化径向计算;`pointUV.mul(2.0)` 会使纹理或图案平铺/缩放;`pointUV.yx` 则会交换 UV 坐标,旋转非对称图案。
代码示例
1// 计算当前片元到点中心(0.5, 0.5)的距离
2const dist = pointUV.distance( vec2( 0.5 ) );
3
4// 使用 smoothstep 创建一个柔和的圆形边缘 (alpha)
5const strength = smoothstep( 0.5, 0.4, dist );
6
7// 将 alpha 应用于颜色,从而将方形点渲染成柔和的圆形
8material.colorNode = vec4( baseColor, strength );