Описание
Набор параметров, управляющих работой физики при использовании системы заданий для многопоточного моделирования физики.
Многопоточная физика в настоящее время является экспериментальной функцией. Таким образом, доступно множество параметров, которые позволяют настроить производительность, которая может быть недоступна, когда функция выходит из экспериментального статуса.
Моделирование физики выполняется в следующие отдельные этапы:
- Найти новые контакты
- Контактное столкновение
- Дискретный решатель (Clear Island Flags -> Discrete Island Traversal -> Discrete Island Solver -> Synchronize Fixtures -> Find New Contacts)
- Непрерывный решатель (Clear Island Flags > Continuous Island Traversal -> Discrete Island Solver -> Synchronize Fixtures -> Find New Contacts)
- Очистить силы тела
- Обновить триггерные контакты
Эти этапы выполняются в указанном выше порядке. Каждый этап выполняется как задание «задача». Каждая задача выполняет подзадачи, которые показаны в скобках выше. При выполнении задания моделирование физики может обрабатывать тела, контакты, соединения и т. д. в нескольких потоках задания. Вы можете поручить каждому из этих потоков выполнение определенного количества элементов, таких как тела, контакты и соединения. Многие из представленных здесь опций позволяют контролировать минимальное количество элементов, назначенных каждому заданию. Повышение минимума может уменьшить количество требуемых рабочих мест. Это связано с тем, что выполнение большого количества заданий, каждое из которых обрабатывает лишь несколько элементов, обычно не очень эффективно. Настройки по умолчанию обеспечивают достойную производительность для баланса задач, однако вы можете экспериментировать.
Кроме того, перед запуском симуляции позы интерполяции/экстраполяции Rigidbody2D сохраняются готовыми к покадровой интерполяции/экстраполяции. Они также выполняются с помощью системы заданий и контролируются здесь.
Свойства
clearBodyForcesPerJob | Управляет минимальным количеством тел, подлежащих очистке в каждом задании моделирования. |
clearFlagsPerJob | Управляет минимальным количеством флагов, которые должны быть очищены в каждом задании моделирования. |
collideContactsPerJob | Управляет минимальным количеством контактов, которые могут конфликтовать в каждом задании моделирования. |
findNearestContactsPerJob | Управляет минимальным количеством ближайших контактов для поиска в каждом задании моделирования. |
interpolationPosesPerJob | Управляет минимальным количеством Rigidbody2D, интерполируемых в каждом задании моделирования. |
islandSolverBodiesPerJob | Управляет минимальным количеством тел для решения в каждом задании моделирования при выполнении решения острова. |
islandSolverBodyCostScale | Масштабирует стоимость каждого тела во время решения отдельных островов. |
islandSolverContactCostScale | Масштабирует стоимость каждого контакта во время дискретного островного решения. |
islandSolverContactsPerJob | Управляет минимальным количеством контактов, которые необходимо решить в каждом задании моделирования при выполнении решения острова. |
islandSolverCostThreshold | Минимальная пороговая стоимость всех тел, контактов и соединений на острове при решении дискретного острова. |
islandSolverJointCostScale | Масштабирует стоимость каждого стыка во время решения отдельных островов. |
newContactsPerJob | Управляет минимальным количеством новых контактов, которые нужно найти в каждом задании моделирования. |
syncContinuousFixturesPerJob | Управляет минимальным количеством приборов для синхронизации в широкой фазе во время непрерывного решения островков в каждом задании моделирования. |
syncDiscreteFixturesPerJob | Управляет минимальным количеством приборов для синхронизации в широкой фазе во время решения дискретных островков в каждом задании моделирования. |
updateTriggerContactsPerJob | Управляет минимальным количеством триггерных контактов для обновления в каждом задании моделирования. |
useConsistencySorting | Должно ли физическое моделирование сортировать многопоточные результаты для обеспечения согласованности порядка обработки? |
useMulthreading | Должна ли симуляция физики использовать многопоточность? |