一组用于控制使用作业系统多线程物理模拟时物理操作方式的选项。
多线程物理目前仍处于实验阶段。因此,公开了一些选项,允许进行性能配置,这些配置在该功能退出实验状态后可能不再可用。
物理模拟在以下离散阶段执行
• 查找新的接触点
• 接触碰撞
• 离散求解器(清除岛屿标志 -> 离散岛屿遍历 -> 离散岛屿求解器 -> 同步夹具 -> 查找新的接触点)
• 连续求解器(清除岛屿标志 -> 连续岛屿遍历 -> 离散岛屿求解器 -> 同步夹具 -> 查找新的接触点)
• 清除刚体力量
• 更新触发器接触点
这些阶段按上述顺序执行。每个阶段都作为一项“任务”作业运行。每项任务都执行子作业任务,这些任务显示在上面的括号中。在执行作业时,物理模拟可能会跨多个作业线程处理刚体、接触点、关节等等。您可以为每个线程分配执行特定数量的项目,例如刚体、接触点和关节。这里提供的许多选项都允许您控制分配给每个作业的最小项目数。提高最小值可以减少所需作业的数量。这是因为运行许多作业,每个作业只处理少量项目通常效率不高。默认设置提供了一个不错的性能与作业平衡,但是您可以随意进行实验。
此外,在运行模拟之前,Rigidbody2D插值/外推姿势将被存储起来,以便为每帧插值/外推做好准备。这些也使用作业系统执行,并在此处进行控制。
clearBodyForcesPerJob | 控制在每个模拟作业中要清除的刚体的最小数量。 |
clearFlagsPerJob | 控制在每个模拟作业中要清除的标志的最小数量。 |
collideContactsPerJob | 控制在每个模拟作业中要碰撞的接触点的最小数量。 |
findNearestContactsPerJob | 控制在每个模拟作业中要查找的最邻近接触点的最小数量。 |
interpolationPosesPerJob | 控制在每个模拟作业中要插值的 Rigidbody2D 的最小数量。 |
islandSolverBodiesPerJob | 控制在执行岛屿求解时,每个模拟作业中要求解的刚体的最小数量。 |
islandSolverBodyCostScale | 在离散岛屿求解过程中缩放每个刚体的成本。 |
islandSolverContactCostScale | 在离散岛屿求解过程中缩放每个接触点的成本。 |
islandSolverContactsPerJob | 控制在执行岛屿求解时,每个模拟作业中要求解的接触点的最小数量。 |
islandSolverCostThreshold | 在离散岛屿求解过程中,岛屿中所有刚体、接触点和关节的最小阈值成本。 |
islandSolverJointCostScale | 在离散岛屿求解过程中缩放每个关节的成本。 |
newContactsPerJob | 控制在每个模拟作业中要查找的新接触点的最小数量。 |
syncContinuousFixturesPerJob | 控制在每个模拟作业中,在连续岛屿求解期间,要同步的广相阶段夹具的最小数量。 |
syncDiscreteFixturesPerJob | 控制在每个模拟作业中,在离散岛屿求解期间,要同步的广相阶段夹具的最小数量。 |
updateTriggerContactsPerJob | 控制在每个模拟作业中要更新的触发器接触点的最小数量。 |
useConsistencySorting | 物理模拟是否应该对多线程结果进行排序,以保持处理顺序一致性? |
useMultithreading | 物理模拟是否应该使用多线程? |