Графическая информация
<<  Управление цветом фона и шрифта, вставка графических изображений Рисование маски 3 класс  >>
Экспорт графических ресурсов для Next-Gen платформ
Экспорт графических ресурсов для Next-Gen платформ
С чего всё начиналось
С чего всё начиналось
План доклада
План доклада
План доклада
План доклада
Экспорт и импорт
Экспорт и импорт
Экспорт и импорт
Экспорт и импорт
Система сборки (SCons)
Система сборки (SCons)
Структура экспорта сейчас
Структура экспорта сейчас
Светлое будущее…
Светлое будущее…
План доклада
План доклада
Content pipeline: связь с DCC
Content pipeline: связь с DCC
COLLADA
COLLADA
ColladaFX
ColladaFX
COLLADA – плюсы и минусы
COLLADA – плюсы и минусы
Colladafx – не влезай, убьет
Colladafx – не влезай, убьет
COLLADA – не панацея
COLLADA – не панацея
COLLADA + Feeling Software
COLLADA + Feeling Software
План доклада
План доклада
Терминология
Терминология
Параметры шейдера
Параметры шейдера
Content pipeline - материалы
Content pipeline - материалы
Default Material
Default Material
Экспорт параметров
Экспорт параметров
Материалы - итоги
Материалы - итоги
План доклада
План доклада
Content pipeline: текстуры
Content pipeline: текстуры
TexExporter
TexExporter
TexExporter: Win32
TexExporter: Win32
TexExporter: XBox360 (1)
TexExporter: XBox360 (1)
TexExporter: XBox360 (2)
TexExporter: XBox360 (2)
TexExporter: PS3 (1)
TexExporter: PS3 (1)
TexExporter: PS3 (2)
TexExporter: PS3 (2)
Текстуры - итоги
Текстуры - итоги
План доклада
План доклада
Content pipeline: геометрия
Content pipeline: геометрия
Сжатие атрибутов
Сжатие атрибутов
Оптимизация по скорости
Оптимизация по скорости
Post-Transform Vertex Cache
Post-Transform Vertex Cache
Overdraw
Overdraw
Overdraw vs
Overdraw vs
Экспорт геометрии - итоги
Экспорт геометрии - итоги
План доклада
План доклада
Content pipeline: анимация
Content pipeline: анимация
To bake or not to bake
To bake or not to bake
Анимация - кривые «как есть»
Анимация - кривые «как есть»
Scene node vs
Scene node vs
Анимация - итоги
Анимация - итоги
Итоги
Итоги
Ссылки
Ссылки
? a.dolbilov@creatstudio
? a.dolbilov@creatstudio

Презентация: «Экспорт графических ресурсов для Next-Gen платформ». Автор: Arseny Kapoulkine. Файл: «Экспорт графических ресурсов для Next-Gen платформ.ppt». Размер zip-архива: 620 КБ.

Экспорт графических ресурсов для Next-Gen платформ

содержание презентации «Экспорт графических ресурсов для Next-Gen платформ.ppt»
СлайдТекст
1 Экспорт графических ресурсов для Next-Gen платформ

Экспорт графических ресурсов для Next-Gen платформ

Александр Долбилов Арсений Капулкин CREAT Studios

2 С чего всё начиналось

С чего всё начиналось

Технологическое демо для PS3 на PSSG Портирование CREAT Engine на Xbox 360 (iZ3D) Портирование CREAT Engine на PS3

3 План доклада

План доклада

Структура экспорта и импорта COLLADA Экспорт… … материалов и шейдеров … текстур … геометрии … анимации

4 План доклада

План доклада

Структура экспорта и импорта COLLADA Экспорт… … материалов и шейдеров … текстур … геометрии … анимации

5 Экспорт и импорт

Экспорт и импорт

6 Экспорт и импорт

Экспорт и импорт

Заякин Евгений, «Компиляция данных - think different»

7 Система сборки (SCons)

Система сборки (SCons)

Исходные данные Билдеры алгоритмы преобразования данных Результат сборки - бинарный образ игры исполняемый файл игры динамически подключаемые библиотеки Уровни (90% от времени всей сборки) динамически подгружаемые данные

8 Структура экспорта сейчас

Структура экспорта сейчас

9 Светлое будущее…

Светлое будущее…

10 План доклада

План доклада

Структура экспорта и импорта COLLADA Экспорт… … материалов и шейдеров … текстур … геометрии … анимации

11 Content pipeline: связь с DCC

Content pipeline: связь с DCC

Было Export из Maya проприетарным плагином в промежуточный формат Стало Export из Max/Maya с помощью COLLADA В частности, потому что существующий арт для демки был сделан «под» COLLADA Уже настроенные ColladaFX материалы Также ColladaFX казался удачным решением проблемы настройки материалов

12 COLLADA

COLLADA

XML-based формат для хранения 3D сцен XML Schema Спецификация Экспортеры для ряда пакетов Max, Maya, XSI, Blender, … Настройка материалов в DCC ColladaFX

13 ColladaFX

ColladaFX

14 COLLADA – плюсы и минусы

COLLADA – плюсы и минусы

Плюсы Более отвязанный от Maya пайплайн Настройка материалов в DCC (ColladaFX) Поддержка в сторонних приложениях Минусы Сложная и избыточная схема Медленный экспорт из DCC Все типичные проблемы с middleware

15 Colladafx – не влезай, убьет

Colladafx – не влезай, убьет

ColladaMaya Очень неудобный интерфейс для художников Некорректно работает с batch build ColladaMax В несколько раз хуже Много багов Падения, некорректная работа, etc. Ощущение, что использовали только мы :-/

16 COLLADA – не панацея

COLLADA – не панацея

Это – просто экспортер Постоянная поддержка Проблемы с системами координат, unit scale, etc. Это – дополнительный слой кода Отладка проще, если вы в нем уверены, и сложнее, если нет Мало/нет библиотек, облегчающих жизнь

17 COLLADA + Feeling Software

COLLADA + Feeling Software

После того, как основная часть доклада была готова… No more free support for open-source COLLADA tools ColladaMaya/Max будут развиваться open-source сообществом Premium support от Feeling Software 4000$ USD в год для студии в 50 человек

18 План доклада

План доклада

Структура экспорта и импорта COLLADA Экспорт… … материалов и шейдеров … текстур … геометрии … анимации

19 Терминология

Терминология

Shader Алгоритм рендеринга Как правило – пара vertex shader + pixel shader и стандартный код настройки рендера Иногда – последовательность custom команд рендера Material Контейнер параметров шейдера Layout данных определяется шейдером

20 Параметры шейдера

Параметры шейдера

Vertex shader + pixel shader Auto parameters Параметры окружения, которые система может посчитать и поставить автоматически WorldViewProjection matrix, Eye position, etc. Custom parameters Object color, normal map, etc. Render states Alpha blend, depth test, etc.

21 Content pipeline - материалы

Content pipeline - материалы

Со стороны DCC поддержано 2 варианта получения материала: COLLADA FX Material явное задание пары vertex shader + pixel shader Default Material косвенное определение пары vertex shader + pixel shader по название стандартного материала (phong, blinn, lambert …)

22 Default Material

Default Material

blinn == ‘Default/Maya/blinn.cg’ vs_main и ps_main Поддержка разных типов параметров diffuse (color или texture) #ifdef CRS_DIFFUSE_COLOR float4 color = input.color; #else float4 color = tex2D(DiffuseSampler, input.texcoord0); #endif

23 Экспорт параметров

Экспорт параметров

Auto parameters Использование имени переменной для определения типа параметра Custom parameters Экспортятся COLLADA Render states Есть поддержка в COLLADA Используем custom флаги в DCC

24 Материалы - итоги

Материалы - итоги

Поддержка default materials обязательна Система настройки custom материалов нужна ColladaFX – возможное решение К сожалению, не очень хорошее Материалы – часть общего пайплайна Связь с геометрией

25 План доклада

План доклада

Структура экспорта и импорта COLLADA Экспорт… … материалов и шейдеров … текстур … геометрии … анимации

26 Content pipeline: текстуры

Content pipeline: текстуры

TexLib Единая база данных текстур Настройки per platform (формат, размер, etc.) Работает с source данными (psd, bmp, tga) Визуальный тул для художников TexExporter По данным из texlib собирает финальную текстуру

27 TexExporter

TexExporter

Свой код сборки финальных данных для каждой платформы Код оперирует массивом пикселей (код чтения разных форматов файлов, генерации mip уровней и палитризации – общий) Выход утилиты – бинарный файл, из которого можно десериализовать текстуру Текстура – это common data + platform data Результаты работы кешируются

28 TexExporter: Win32

TexExporter: Win32

Сборка всех мипов в нужном формате BGRA (никакого reordering в load time) DXT1-5 Для сжатия используется NVDXT/D3DX При загрузке – стандартные операции CreateTexture Lock/Unlock/memcpy Иначе никак :(

29 TexExporter: XBox360 (1)

TexExporter: XBox360 (1)

Tiling Текстура разбивается на тайлы (32x32 блока) блок – 1x1 или 4x4 (DXT) пикселя В пределах тайла блоки переупорядочиваются XGTileSurface Mip tail packing Уровни 16х16 пикселей и меньше упаковываются в 1 тайл Минимизация потерянного пространства

30 TexExporter: XBox360 (2)

TexExporter: XBox360 (2)

Практически весь код для экспорта есть в SDK При загрузке – fixup «объекта» текстуры (IDirect3DTexture9) Так как нет разделения на system/video memory, а данные текстуры уже загружены при загрузке общего pak файла

31 TexExporter: PS3 (1)

TexExporter: PS3 (1)

Swizzling Только для power-of-two и не DXT текстур Если текстура не swizzled, то pitch обязан совпадать для всех (!) mip-уровней

Чем меньше non-POT текстур, тем лучше +100% памяти на mip уровни

32 TexExporter: PS3 (2)

TexExporter: PS3 (2)

При загрузке – копирование данных в video memory Лучше чем на PC – все данные в HW формате Хуже чем на XBox360 – копирование В будущем Копирование с помощью RSX (DMA) Загрузка секций сразу в нужную память С помощью SPU (DMA)

33 Текстуры - итоги

Текстуры - итоги

Самый большой объем данных Скорость обработки – критична Без кеша мы бы так и не закончили демку Standalone компонента Отсутствие связей с другими компонентами Layout данных разный для всех платформ

34 План доклада

План доклада

Структура экспорта и импорта COLLADA Экспорт… … материалов и шейдеров … текстур … геометрии … анимации

35 Content pipeline: геометрия

Content pipeline: геометрия

Чтение данных из .DAE Triangle lists Уменьшение размера вершины Выбор нужных атрибутов По входным параметрам vertex shader Сжатие атрибутов Уменьшение количества вершин Индексирование

36 Сжатие атрибутов

Сжатие атрибутов

Квантование float16 вместо float HEND3N/CMP (11:11:10) вместо float3 Сжимающее преобразование Scale + offset или decompression matrix Эффективная утилизация точности типа float16 vs. short Максимальное сжатие в 4 раза!

37 Оптимизация по скорости

Оптимизация по скорости

Изменение порядка треугольников Оптимизация для post-transform vertex cache Оптимизация overdraw Изменение порядка вершин Оптимизация для pre-transform vertex cache D3DXOptimizeVertices Важен порядок осуществления оптимизаций

38 Post-Transform Vertex Cache

Post-Transform Vertex Cache

Cache для трансформированных вершин Уменьшает количество выполнений VS Размер порядка 16-24 вершин на next-gen ACMR = # transformed vertices / # triangles меняется в диапазоне [0.5 – 3]

Вариант

ACMR

Теоретически идеальный

0.5

Без оптимизации (среднестатистический)

1.5

С оптимизацией (среднестатистический)

0.7

39 Overdraw

Overdraw

Переставляя местами треугольники можно уменьшить среднее значение overdraw в ~2 раза

40 Overdraw vs

Overdraw vs

ACMR

Post-transform vertex cache Hoppe (D3DXOptimizeFaces) K-Cache Overdraw Barczak Nehab Overdraw + Post-transform vertex cache TOOTLE 1.1 (Sander + Nehab + Barczak) TOOTLE 2.0 (Sander + Nehab + Barczak)

41 Экспорт геометрии - итоги

Экспорт геометрии - итоги

Потеря в скорости может быть критична Одно из возможных узких мест на PS3 Не забывайте про качество Любая оптимизация с потерей точности отключается Флаги в DCC для моделеров Большинство оптимизаций прозрачны для остального пайплайна

42 План доклада

План доклада

Структура экспорта и импорта COLLADA Экспорт… … материалов и шейдеров … текстур … геометрии … анимации

43 Content pipeline: анимация

Content pipeline: анимация

Из .DAE читается иерархия <node> Каждый элемент переходит в узел SG в игре Скелет Локаторы с автоматической привязкой (attach to node) Задача – сохранить анимацию узлов Вне зависимости от типа Кости, локаторы, узлы для геометрии Несколько анимаций в одном файле

44 To bake or not to bake

To bake or not to bake

Два варианта экспорта анимаций Анимационные кривые «как есть» Sampling + сжатие На данный момент выбран первый вариант Дешевле в реализации Размер анимаций на данный момент не критичен В будущем возможен переход на второй

45 Анимация - кривые «как есть»

Анимация - кривые «как есть»

Есть очевидные проблемы Разные типы интерполяции Либо поддерживать все типы, либо ограничивать художников DCC-specific детали Segment scale compensate в Maya Строго говоря, не про анимацию, но в случае sampling или статических трансформаций проблемы нет Трансформация node не является TRS

46 Scene node vs

Scene node vs

anim node

В COLLADA трансформация узла это Набор последовательных «примитивных» трансформаций (T/R/S/matrix) В Maya трансформация узла это До 11 T/R/S трансформаций (pivots, etc.) Старое решение – размножать узлы SG Новое решение – набор «анимационных» узлов

47 Анимация - итоги

Анимация - итоги

Standalone компонента Связана с остальными компонентами через узлы SG Иерархия SG не меняется Скиннинг работает независимо Кости – узлы SG Весь код кросс-платформенный

48 Итоги

Итоги

Чем больше работы делается на экспорте – тем лучше Конвертация в HW-specific форматы, оптимизация, byte reordering, etc. Чем быстрее работает экспорт – тем лучше Эффективные алгоритмы Кеширование результатов Distributed data builds, anyone?

49 Ссылки

Ссылки

COLLADA Specification http://khronos.org/collada/ Feeling Software http://www.feelingsoftware.com SCons http://www.scons.org/ ATI Tootle http://ati.amd.com/developer/tootle.html

50 ? a.dolbilov@creatstudio

? a.dolbilov@creatstudio

com a.kapoulkine@creatstudio.com

Вопросы

«Экспорт графических ресурсов для Next-Gen платформ»
http://900igr.net/prezentacija/informatika/eksport-graficheskikh-resursov-dlja-next-gen-platform-172140.html
cсылка на страницу

Графическая информация

19 презентаций о графической информации
Урок

Информатика

130 тем
Слайды
900igr.net > Презентации по информатике > Графическая информация > Экспорт графических ресурсов для Next-Gen платформ