Это обычно происходит на GPU, но есть и компромисс для обоих, и вам решать, какой из них будет работать лучше для вас.
Выполнение манипуляции на GPU означает, что вам нужно всего лишь отправить данные сетки один раз, а затем вы можете просто отправить матричные преобразования, чтобы деформировать их. Это здорово, потому что это значительно уменьшает полосу пропускания между CPU-> GPU. Это также означает, что вы можете загрузить только одну копию меша в графический процессор и применить преобразования для множества различных экземпляров меша. Тем не менее, сложнее иметь «точные сетки» столкновений. Поскольку преобразования выполняются на GPU, у вас нет их для тестирования на CPU.
Выполнение манипуляции с процессором означает, что у вас есть доступ к преобразованной сетке. Вы можете получить доступ ко всему, что вам нужно знать об этом. Однако это означает, что вам нужно загружать всю эту сетку в графический процессор каждый кадр. Это также означает, что вы должны загружать трансформированную сетку для каждого экземпляра этой сетки. В итоге, здесь нет исчерпывающего списка плюсов и минусов.
Плюсы для GPU
- Загрузите данные сетки один раз
- Преобразуйте это для нескольких экземпляров
- Нужно только отправить матричные преобразования
- GPU очень хорошо распараллеливает подобные вещи
Минусы для GPU
- Преобразованные сетки недоступны для тестирования на процессоре
Плюсы для процессора
- Преобразованные сетки доступны для испытаний на столкновение и всего остального, что необходимо.
Минусы для процессора
- Нужно загрузить всю трансформированную сетку в каждый кадр
- Необходимо загрузить всю сетку для каждого экземпляра сетки
Однако есть способы обойти минусы для GPU.
- Не имейте точных столкновений сетки . Используйте что-то «достаточно близкое», например, ограничивающий прямоугольник для всей сетки или используйте ограничивающие прямоугольники для каждой кости сетки. Ниже приведено использование преобразований графического процессора для сетки и преобразований процессора для выравнивающих осей ограничивающих рамок, представляющих сетку. Вы можете получить еще более точные оценки, используя не AABB.
- Преобразуйте копию меша в ЦП тогда и только тогда, когда нужны точные столкновения меша . После того, как коллизия ограничивающего прямоугольника вернула истину, преобразуйте сетку, чтобы она соответствовала преобразованиям на графическом процессоре, а затем сравните коллизии с ней, чтобы получить более точные данные о коллизиях.
В целом, я полагаю, вы понимаете, почему на GPU более распространены преобразования