Similar presentations:
Ускоряем игру на UE4: инструкция разработчика
1.
OCTOPUS GAMESAlexandr Murashko
2. Ускоряем игру на UE4: инструкция разработчика
ТекстурыGPU
CPU
Файловая
система
3. Оптимизация текстур
Уменьшение размера
Сжатие
«Девятка»
Выравнивание размера по степени 2
Комбинирование с помощью пиксельных шейдеров
4. Оптимизация текстур: уменьшение размера
Размер в килобайтах одного канала текстурыРазмер в килобайтах
16384
4096
2048
1024
512
256
4096
1024
128
256
64
16
5. Оптимизация текстур: уменьшение размера
6. Оптимизация текстур: сжатие
Соотношение размера текстуры от формата сжатияРазмер относительно
оригинала
100%
RAW
PVRTC4
PVRTC2
50%
ETC1
25%
16%
16%
ETC2
7. Оптимизация текстур: сжатие
8. Оптимизация текстур: «девятка»
Углы фиксированы, центр и края растягиваются9. Оптимизация текстур: выравнивание размера по степени 2
1920x10802048x1024
10. Оптимизация текстур: выравнивание размера по степени 2
11. Оптимизация текстур: комбинирование с помощью пиксельных шейдеров
Y: 1024x512512 Кбайт
U: 512x256
128 КБайт
V: 512x256
128 КБайт
Pixel
shader
RGB: 1024x512
768 КБайт
Оригинальный размер 1536 КБайт
Выигрыш в размере 50%
12. Оптимизация текстур: комбинирование с помощью пиксельных шейдеров
Pixelshader
YUV444 в RGB888
13. Оптимизация GPU
Исключаем текстуры с альфа-каналом
MIP-map текстуры
Детализация модели
Уменьшение разрешения Viewport
14. Оптимизация GPU: исключаем текстуры с альфа-каналом
15. Оптимизация GPU: исключаем текстуры с альфа-каналом
16. Оптимизация GPU: MIP-map текстуры
17. Оптимизация GPU: MIP-map текстуры
18. Оптимизация GPU: детализация модели
55001580
140
19. Оптимизация GPU: детализация модели
20. Оптимизация GPU: уменьшение разрешения Viewport
• r.SetRes• r.MobileContentScaleFactor
21. Оптимизация CPU
Выносим игровую логику и сложные расчеты из Blueprint в C++
Правильно определяем Blueprint методы в C++
Кэширование результатов расчетов
Выносим ресурсоемкие расчеты в фоновые задачи
Для общей оценки используем приближенные вычисления
Правильно используем события и делегаты
Выравниваем структуры данных в памяти
Используем векторные инструкции процессора
Не допускаем продолжительный нагрев процессора
22. Оптимизация файловой системы
• Общие ресурсы для всех карт находятся в отдельном паке• Специфические ресурсы для карт лучше дублировать
• Асинхронная загрузка ресурсов (streaming)