pointWidth
pointWidth
在 TSL 顶点着色器中,以可编程方式设置 `Points`(点云)中每个点在屏幕上的像素大小,它抽象了底层的 `gl_PointSize`。
核心优势
将底层 `gl_PointSize` 的设置抽象化,并与节点系统无缝集成。这使得点的大小可以由任何浮点数节点(如距离、噪声)动态驱动,轻松实现复杂的、逐点变化的视觉效果。
常见用途
在粒子系统中,根据生命周期或速度动态改变粒子大小。
在数据可视化中,用点的大小表示第四个数据维度(如人口、温度)。
根据点与相机的距离实现细节层次(LOD),增强深度感或确保远处可见性。
如何调整
通过为材质的 `pointWidth` 属性赋予不同的 TSL 节点来调整。可以赋予一个静态浮点数(如 `10.0`)以获得统一大小;可以连接一个 `distance` 和 `remap` 节点网络以实现基于距离的LOD效果;也可以连接一个 `noise` 节点来创造随机、有机的大小变化。
代码示例
1// 使用噪声函数为每个点生成随机大小
2// 基础大小为5px,随机变化量为10px
3const randomSize = add(5.0, mul(noise(positionWorld.mul(2.0)), 10.0));
4
5// 在材质中将此结果赋给 pointWidth 属性