Показать сообщение отдельно
Старый 14.09.2014, 18:46   #384
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: [TrueHorror] - разработка

Сообщение от Mr_F_ Посмотреть сообщение
жирно очень - в особенности для альбедо не нужно.
заценивай как пакуют гбуффер реалне пацаны: http://www.slideshare.net/TiagoAlexS...sis-3-gdc-2013

-----
в кратце:
positionMap не нужен - достаточно хранить глубину и потом в шейдере восстанавливать из неё позицию.
нормали жмутся в 2.5 8-битных канала.
на альбедо не нужно больше 8 бит - в крайенжине ещё и пакуют в 2 канала мутным способом (но это перебор уже имхо).
также тебе пригодятся reflectivity/glossiness.

у меня сейчас в рабочем проекте вот такой гбуфер:
RGBA8: normals, glossiness, reflectivity
RGBA8: albedo, IOR
R32F: depth
И R11G11B10 хдр текстура, в которую уже ведётся работа с гбуфером.
Из-за многопассовости (лайты складывать в РТ) дефер также может тормозить. Щас курю как круче сделать tiled deferred (ранее уже делал tiled forward с генерацией тайлов на цпу).
* Вот на 12 слайде, я правильно понимаю что слева - формула упаковывания, а справа распаковывания нормалей?
* А есть гарантия что нормали перед упаковкой будут нормализованы (там в формуле в знаменателе 1 - x предполагает что нормали нормализованы) или лучше вызывать нормализацию перед упаковыванием?
* И вот насчёт знака значения z, он нужен для того чтобы восстановить потерю знака x, y когда они отсекаются по [ 0, 1 ] во время записи в G-Buffer? Ведь если бы они записывались со знаком, то можно было бы восстановить z целиком из x, y.
(Offline)
 
Ответить с цитированием