Мне нечего сюда постить поэтому
КАК ОТРЕНДЕРИТЬ 280 ЧЕЛОВЕК В ОДНОЙ СЦЕНЕ В ПЕПЕГЕЙМЕ
В ПепеГейме есть сцена, где должны быть показаны все 280 игроков. И с самого начала это для меня не казалось особой проблемой
Однако, когда я дошел до реализации этой сцены ФПС упал до 5
Почему?
База рендеринга
Итак у нас есть рендерер. Рендерер рендерит. Конечно нарисовать 1000 одинаковых кубиков на сцене очень просто. Но 1000 разных кубиков - очень сложно. А у меня как бы 3360 разных кубиков, так как у каждого игрока 12 кубиков на тело.
Поэтому передо мной стояла сложнейшая инженерная задача
А теперь к решению которое я сделал
Там код на 7000 строк, но примерно объяснить можно так
Цель работы проста: уменьшить кол-во различных кубиков
Итак как это работает
1. Сбор и очистка НПС
Код собирает всех нпс, сохраняет их трансформации
2. Группировка по текстурам и анимациям
Создаются группы НПС по текстурам, моделям и анимациям, это уже уменьшает кол-во различных кубиков в 12 раз
3. Сборка Атласа скинов
Собирается 1 текстура в которой есть ВСЕ СКИНЫ игроков
4.Наложение анимаций
Применение на трансформации трансформаций однокадровых анимаций
5. Сборка мультимеша
Собирает все кубики в 1 большой меш
В итоге с помощью всего этого количество различных кубиков упало с 3360 до 12
Поэтому в той сцене больше 0 фпс
Post #57
89
- 🔥 3