batch
batch
在 BatchedMesh 中,通过包裹一个节点(如颜色节点),使其能够为批处理中的每个物体访问各自独特的属性值,从而在单次绘制调用中高效渲染大量各不相同的物体。
核心优势
核心价值在于它将复杂的批处理数据访问逻辑抽象成一个简单的函数调用。开发者只需用 batch() 包裹一个属性节点,即可在维持单次绘制调用极致性能的同时,赋予每个物体独立的动态属性,完美结合了性能与灵活性。
常见用途
为大规模植被或布景(树、石头)提供独立的位置、旋转和缩放。
为成群的动态单位(NPC、敌人)提供独立的变换矩阵和颜色。
在体素世界中,访问每个方块的独立类型或状态。
为基于网格的复杂粒子效果提供每个碎片的独立物理状态。
如何调整
batch() 作为一个“开关”来调整。对一个材质属性(如 colorNode)使用 batch(),会使其从 BatchedMesh 读取每个物体的独立数据,从而显示出不同的颜色。如果不使用,则所有物体都会采用一个统一的、非批处理的值(如一个固定的颜色),忽略所有逐对象数据。
代码示例
1// 假设 perObjectColorNode 是一个能根据物体ID获取颜色的节点
2material.colorNode = batch( perObjectColorNode ); // 开启颜色属性的批处理模式