promishlennie_ubersheyderi

Содержание

Слайд 2

Шейдинг-система. Требования.

Богатые возможности реализации материалов
Поддержка нескольких механизмов освещения
Максимальная производительность без скачкообразных

Шейдинг-система. Требования. Богатые возможности реализации материалов Поддержка нескольких механизмов освещения Максимальная производительность
провалов
Мультиплатформенность с возможностью локальной специализации
Минимальный объем памяти для ресурсов

Слайд 3

uber shader. Один шейдер.

По шейдеру на фичу материала / схему лайтинга
Сложно программировать

uber shader. Один шейдер. По шейдеру на фичу материала / схему лайтинга
и поддерживать
Неудобно выбирать шейдер в рантайме
Мультипасс лайтинг
Vertex processing and memory bandwidth overhead
Один код, управляемый константами
Computational overhead (many lights, SM, POM)
Все равно по отдельной реализации на платформу

Слайд 4

Uber shader. Дефайны компиляции.

Почему не статик бранчинг?
Рантайм-изменение константы ведет к перекомпиляции
Почему не

Uber shader. Дефайны компиляции. Почему не статик бранчинг? Рантайм-изменение константы ведет к
динамик бранчинг?
Вычислительный оверхед
Аппаратные ограничения

Слайд 5

Uber shader. Комбинаторика.

2^83

Platform (8)

Blend / Akill (2) -
Instancing (1) -
Color/Depth/Light Pass

Uber shader. Комбинаторика. 2^83 Platform (8) Blend / Akill (2) - Instancing
(2) -

Render pipeline (5)

- PC / PS3 / X360
- DXN/DXT5A
- PCF / Fetch4
- RawZ / IntZ / D24

Material (54)

Lighting (16)

- Lighting models (5)
- Textures / Masks (32)
Surface Effects (17)
LOD / Options

Lightmap / SH (2) -
Dynamic lights / types (9) -
SM light / type (5) -

Слайд 6

Компиляция по требованию.

Очевидная и простая реализация
Редактирование шейдеров «на лету»
Не используется ни одного

Компиляция по требованию. Очевидная и простая реализация Редактирование шейдеров «на лету» Не
лишнего шейдера
Значительные ран-тайм провалы
Неопределенные аллокации в компиляторе

Слайд 7

Компиляция по требованию + кэш.

Runtime stall только при первом обращении к шейдеру

Компиляция по требованию + кэш. Runtime stall только при первом обращении к
– может быть терпимо в некоторых случах.
При усложнении шейдеров даже одноразовые провалы критичны (компиляция до 20 сек, до 150 шейдеров в кадре)!
Нужна система подготовки кэша для сборки.

Слайд 8

Ручная сборка кэша.

Тестовые «насыщающие» забеги
9 х 16 платформ (16 = 4

Ручная сборка кэша. Тестовые «насыщающие» забеги 9 х 16 платформ (16 =
бинарные опции)
40 уровней
Инвалидация кэша при изменении уровня
Инвалидация кэша при изменении кода шейдера
Собирать бинарный кэш для билда таким образом - неподъемная задача

Слайд 9

Полуавтоматическая сборка кэша

Четко отделить параметры платформы / видео-опций от всех остальных

Полуавтоматическая сборка кэша Четко отделить параметры платформы / видео-опций от всех остальных
и собирать независимые параметры компиляции
Обеспечить механизм аккумуляции результатов игры со множества машин
Обеспечить компиляцию бинарного кэша для разных платформ

Слайд 10

Полуавтоматическая сборка кэша

PC4, Test21

X360

PS3

PC

Полуавтоматическая сборка кэша PC4, Test21 X360 PS3 PC

Слайд 11

Полуавтоматическая сборка кэша

Отсутствие промахов не обеспечивается
Инвалидация при изменении уровня
Инвалидация

Полуавтоматическая сборка кэша Отсутствие промахов не обеспечивается Инвалидация при изменении уровня Инвалидация
при изменении набора дефайнов
Большая избыточность
Большая сложность сборки per-level кэша для консолей

Слайд 12

Автоматическая сборка кэша. Пререндер.

Замена «тестера» в п/автоматической схеме
Легкий ребилд при изменении

Автоматическая сборка кэша. Пререндер. Замена «тестера» в п/автоматической схеме Легкий ребилд при
арта
Отсутствие избыточности, хорошее покрытие
Неполное покрытие
Сложность расстановки контрольных точек
Необходимость поддержки данных пререндера

Слайд 13

Автоматическая сборка кэша. Интеллектуальный перебор.

Полное покрытие
Никакой дополнительной работы / данных
Фиксирование параметров

Автоматическая сборка кэша. Интеллектуальный перебор. Полное покрытие Никакой дополнительной работы / данных
материалов, реструктуризация кода рендеринга
Реализация и поддержка механизма перебора параметров
Некоторая избыточность (КПД < 0.5)

Слайд 14

Автоматическая сборка кэша. Интеллектуальный перебор.

Platform
Material
Lighting
Render condition

CACHE,
> 500k total

-Options
-LOD

Автоматическая сборка кэша. Интеллектуальный перебор. Platform Material Lighting Render condition CACHE, > 500k total -Options -LOD

Слайд 15

Процесс сборки

Define
Generator

X360

PS3

PC

Scene

Процесс сборки Define Generator X360 PS3 PC Scene

Слайд 16

Сокращение кол-ва комбинаций.

Дополнительные вычисления
Все динамические источники – прожекторы
Туман всегда включен
LOD сделать

Сокращение кол-ва комбинаций. Дополнительные вычисления Все динамические источники – прожекторы Туман всегда
статической опцией
Dynamic branching для динамических источников (PC, Hi-LOD only)
PC: 25k shaders total (13k/level total, 4k/level)
X360: 9.5k shaders / level

Слайд 17

Runtime, консоли

Кэш хранится per-level, загружается полностью вместе с уровнем
Весь кэш в

Runtime, консоли Кэш хранится per-level, загружается полностью вместе с уровнем Весь кэш
памяти в компрессированом виде
Шейдеры распаковываются и создаются по мере необходимости
Макс 5000 шейдеров одновременно, LRU
CreateShader() работает быстро, нет существенных провалов

Слайд 18

Runtime, PC

За D3D Runtime работает драйвер
CreateShader() работает медленно
либо
Первый DIP с только

Runtime, PC За D3D Runtime работает драйвер CreateShader() работает медленно либо Первый
что созданным шейдером работает медленно
либо
И то и другое + зависимость от стейтов ☺
Имя файла: promishlennie_ubersheyderi.pptx
Количество просмотров: 18
Количество скачиваний: 0