![]() |
Показать все 15 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- Эффективная линеаризация глубины для скошенных пирамид видимости (https://hlfx.ru/forum/showthread.php?threadid=4923)
Эффективная линеаризация глубины для скошенных пирамид видимости
Наконец-то вышла моя первая статья по компьютерной графике, посвящённая одной из технологий движка Volatile, а именно - методу эффективного декодирования буфера глубины при нестандартных (скошенных) матрицах проекции. Статья опубликована в довольно известном рецензируемом журнале Journal of Computer Graphics Techniques. Формально она вышла в конце декабря, но по факту - только в январе, редакторы немного затянули процесс. Статья на английском языке, но я привожу перевод абстракта на русский. В любом случае, там много формул и есть необходимый код, что, как известно, в переводе не нуждается.
Абстракт
Многие современные техники 3D-рендеринга оперируют глубинами фрагментов и требуют обращения к текстурам глубины, содержащим нелинейные значения глубин в пространстве окна. В большинстве случаев такие значения требуется привести к линейной форме перед использованием, в частности, чтобы сравнивать глубины фрагментов, выполнять арифметику в видовом пространстве или сравнивать глубины сцен, отрисованных с разными проекциями. Преобразование глубины из пространства окна в видовое пространство может оказаться сложным и неинтуитивным в случае скошенных пирамид видимости с изменённой ближней плоскостью отсечения, не параллельной общепринятой ближней плоскости. Такие проекции могут использоваться для эффективного и высокопроизводительного отсечения геометрии пользовательской плоскостью. В статье обсуждается метод эффективной линеаризации значений глубины для произвольных матриц проекции, что может быть использовано в пост-процессинге, эффектах фонового затенения и других зависящих от глубины сцены спецэффектах.
Краткие пояснения
Скошенная матрица проекции (oblique frustum, Lengyel's frustum) - это подход, предложенный компанией NVIDIA (2003) и развитый программистами E. Lengyel (2005) и Pranckevicius (2007). Такое отсечение очень эффективно, особенно на современных мобильных устройствах, да и на десктопах тоже. Однако ранее не затрагивались вопросы декодирования значений глубины. У меня возникла проблема линеаризации, когда я делал эффект сглаживания береговой линии для водного шейдера в движке Volatile, да и быстро стало понятно, что это может понадобиться для других эффектов. Я обобщил задачу до линеаризации глубины при использовании матриц произвольных проекций - и скошенных, и смещённых (востребованных в современных VR-техниках), и даже ортографических. Результат изысканий - эта статья. Приведены необходимые тонкости как для OpenGL, так и для Direct3D. Надеюсь, кому-то это пригодится.
Читать статью
Читать статью онлайн можно на официальном сайте JCGT:
http://jcgt.org/published/0005/04/03/
Цитирование
Если вы заходите использовать идеи или код (а может, вообще впервые узнали о такой технике), просьба цитировать источник. Если проект опенсорсный - то можно прям в комментариях. Это, конечно, не обязательно и не даст мне никаких бонусов, но будет приятной мелочью.
__________________
XaeroX
Поздравляю с публикацией! Чувствуется научный подход .
Но можешь нам простым смертным объяснить в чем научная новизна и как конкретно оно тебе помогло сделать эффект сглаживания береговой линии?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro
Спасибо!
__________________
XaeroX Поздравляю! Правда, сам я в компьютерной графике не силён.
__________________
Base Defense on Steam, ModDB
Можешь объяснить простыми словами, насколько эргономичная технология (без или вместе ним)? Стоит ли ее вообще использовать будущем или уже архаичная фича (как DirectX9-10)? Будет ли benchmark, чтобы люди вообще визуально понимали о чем идет речь?
PLut
Спасибо!
GioHAUS0n
Ну раз эта фича в движке Volatile - то разумеется, она не архаичная, а самая передовая и востребованная.
__________________
XaeroX ну, будет, что к выссеру приложить. Поздравляю с бубликацией.
Меня кинематографичность картинки в играх не особо интересует, так что, я в такие техники не лазил. Но, чувствую, сабж нужный и годный.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
О, полезная штука, но у меня джва вопроса.
1. это будет работать при условии, что исходная глубина находится не в диапазоне 0-1, а скажем в диапазоне 0-0.7?
2. насколько хорошо этот механизм дружит с динамической системой zFar, когда дальность прорисовки меняется скачкоообразно, в зависимости от того, сколько лифов игроку видно из текущего лифа (стандартный механизм из той же ку3).
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 14:22. | Показать все 15 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024