Войти
ПрограммированиеФорумГрафика

Корректный HBAO (10 стр)

Страницы: 15 6 7 8 9 10
#135
5:36, 20 апр. 2019

IBets
а как ещё ты себе представляешь уложить ssao нормального качества в реалтайм?


#136
(Правка: 20:01) 19:39, 21 апр. 2019

я вот сейчас пишу сорок вторую версию своего line sweep hierarchical variance screenspace global illumination и размышляю: когда людям, даже неплохо ориентирующимся в рендеринге, показываешь screenspace GI, для них его существование часто не кажется чем-то удивительным. чаще они задают вопрос: "а как оно рендерит источники света за спиной?". то есть они уже по умолчанию проглатывают факт, что unbiased GI можно рендерить в скринспейсе в реалтайме и их больше заботят вопросы, отсюда уже следующие.

то есть сама возможность существования точного решения уравнения рендеринга хотя бы для плоскости с учётом per-pixel occlusion для них не является чем-то удивительным, а кажется само собой разумеющимся фактом. мол: "это же скринспейс, конечно, это возможно". вероятно, чтобы понять, насколько это нехалявно, единственный способ — попробовать самому.

ещё, немного позанимавшись интроспекцией, я прихожу к выводу, что откладываю написание статьи, потому что знаю, что у моего алгоритма есть недостатки. не те очевидные недостатки, которые обычно всплывают у людей в голове при виде словосочетание "screen space", а менее очевидные артефакты, которые они, возможно, даже не замечают, но существование которых не даёт мне покоя и от которых я пытаюсь избавиться в 4 ночи уже который выходной подряд.

#137
0:04, 22 апр. 2019

Suslik
Сейчас удивить чем-то в плане графона очень сложно. В свое время дум, квейк и прочие были качественно новым способом погрузить игрока в мир. Условный первый шаг по логарифмической шкале сложность/впечатление. Но чем дальше мы идем по этой шкале, тем больше усилий требуется, чтобы удивить и впечатлить. Так что GI в рилтайме сейчас не кажется чем-то фантастическим. Вот у меня что-то в конечном итоге получилось, но оно совсем не так радует, как первый wireframe куб или шейдер с бампмэппингом много лет назад )

Про источники света за спиной - конечно возникает такой вопрос, когда видишь как все выглядит при включении GI и вдруг, при неловком повороте камеры, свет из кадра пропадает и становится темно - прям обламывает всю сказку.

Ну и да, скринспейс (не только применительно к GI) все сильно упрощает именно с точки зрения реализации - константная сложность (относительно), возможность абстрагироваться от сцены как набора полигонов и т.п.

> менее очевидные артефакты
Интересно. Поделишься?

P.S. 42 - хорошее число, время писать статью )

#138
(Правка: 4:25) 4:14, 22 апр. 2019

San
> Интересно. Поделишься?
самый сложный случай — точечный(почти точечный) источник света, висящий в воздухе. существует несколько подходов, которые позволяют с переменным успехом его игнорировать, чтобы он (почти) не порождал артефактов. но нет ни одной реализации, которая бы создала от него корректное view-independent освещение на всей сцене. с одной стороны, такой случай можно назвать вырожденным и на него забить. многие так и делают. но с другой стороны, именно мелкие объекты, висящие в воздухе, у нас в PoE типично являются магическими и поэтому светятся — всякие спеллы, патиклы, прожектайлы. поэтому мало просто сделать так, чтобы они не порождали артефактов, хочется, чтобы они именно считались корректно.

> Про источники света за спиной - конечно возникает такой вопрос, когда видишь как все выглядит при включении GI и вдруг, при неловком повороте камеры, свет из кадра пропадает и становится темно - прям обламывает всю сказку.
да это всё такая банальщина, что по этому поводу и вопросов не должно возникать.

> Ну и да, скринспейс (не только применительно к GI) все сильно упрощает именно с точки зрения реализации - константная сложность (относительно), возможность абстрагироваться от сцены как набора полигонов и т.п.
так-то оно так, только в контексте расчёта GI, это "упрощение" лишь переводит GI из состояния "абсолютно нет шансов получить что-то отдалённо напоминающее точное решение в реалтайме" в состояние "возможно, в скринспейсе есть хоть какой-то шанс это сделать". то есть скринспейс несравнимо эффективнее (считай, на размерность) чем любой world space подход. то есть за то же самое количество операций он сойдётся гораздо ближе к точному решению (разумеется, учитывая только информацию на экране), чем тот же самый рейтрейсинг, не будь он к ночи упомянут.

это я к тому, что любая другая техника на моделировании точечного источника, висящего в воздухе, просто помрёт в шуме и в артефактах. особенно включая любой rtx шлак, где лучи по одному выпускаются, то есть априори гораздо менее эффективно используется вычислительная мощность. разумеется, никто подобные демки для rtx показывать не будет, потому что он просто помрёт в шуме, так как ему считать на одну пространственную размерность больше.

#139
(Правка: 4:41) 4:38, 22 апр. 2019

ещё одно наблюдение, к которому я пришёл после моделирования своих голограмм. почему же при определённых условиях image space GI для трёхмерной сцены сходится к практически точному решению достаточно эффективно, хотя работает с фактически двумерными данными? ответ в том, что на самом деле объекты, с которыми мы имеем дело, топологически эквивалентны двумерной плоскости. простейшее объяснение — uv mapping, который каждому текселю двумерной текстуры ставит в соответствие одну точку трёхмерного объекта.

более сложное, но и более глубинное объяснение — это голографический принцип, согласно которому информацию о волновом фронте, излучаемом любым трёхмерным объектом, можно полностью сохранить на произвольной плоскости, его ограничивающей.

это говорит о том, что любой алгоритм, рассчитывающий GI для трёхмерного представления является принципиально неэффективным, то есть он считает на одну размерность больше, чем теоретически должно быть возможно. и я не говорю конкретно про скринспейс — это лишь один из способов перевести GI в 2д. пример другого принципиально двумерного подхода — лайтмеппинг. к сожалению, типично алгоритмы лайтмеппинга настолько брутфорсны, что в них преимущества этого подхода не особо проявляются.

поэтому я считаю, что реализация GI должна быть топологически в каком-то виде принципиально двумерной. поэтому я и выбираю screenspace как наиболее очевидное двумерное представление сцены. однако, даже в двумере его рассчитать далеко не так просто, как хотелось бы.

даже двумерный рассчёт обычно сводится к серии численных интегрирований по направлениям, что эквивалентно решению одномерных уравнений рендеринга, и даже это является вовсе не тривиальной задачей. более того, рассчёт горизонтов — один из наиболее эффективных способов решения одномерного уравнения рендеринга, но вовсе не факт, что единственный или лучший.

#140
(Правка: 5:01) 4:52, 22 апр. 2019

если более формально оценивать сходимость алгоритмов GI, построенных на world space лучах и на imagespace техниках, то чтобы разрешить источник света радиусом r на расстоянии R от фрагмента, для любых world space алгоритмов потребуется выпустить примерно
[cht]N \approx 2(\frac{R}{r})^2[/cht], так как источник виден под телесным углом [cht]\Omega \approx \frac{\pi r^2}{R^2}[/cht], а площадь всей полусферы, по которой выпускаются лучи — [cht]2 \pi[/cht]. для скринспейсовых же техник это голичество можно оценить как [cht]N \approx \pi \frac{R_p}{ r_p}[/cht], где [cht]r_p[/cht] — спроецированный радиус источника на экран, [cht]R_p[/cht] — расстояние от фрагмента до источника в экранных координатах. то есть мы видим линейный скейлинг против квадратичного.

вот именно эта принципиальная линейность позволяет получить хоть более-менее точный результат более-менее эффективно. любые другие алгоритмы с квадратичной сходимостью, как бы красиво ни были иногда обёрнуты, сходятся суб-оптимально. это как пытаться делать аппаратную реализацию сортировки пузырьком и сравнивать её результаты с программной реализацией qsort.

#141
12:12, 22 апр. 2019

Suslik
> точечный(почти точечный) источник света, висящий в воздухе
Точечный - в смысле очень маленький? Артефакты из-за недостаточной плотности шага по лучу?

> мелкие объекты, висящие в воздухе, у нас в PoE типично являются магическими и поэтому светятся
Почему не просто источники света? Это ведь уже не area lights, ввиду их малых размеров, т.е. неясно какой тут профит от GI.

> хотя работает с фактически двумерными данными
Как сказать. Расчеты с позициями, полученными из глубины вполне себе трехмерные. Но алгоритмическая сложность на порядок меньше, да.

#142
12:24, 22 апр. 2019

San
> Точечный - в смысле очень маленький? Артефакты из-за недостаточной плотности шага по лучу?
из-за недостаточной плотности лучей и из-за недостаточной плотности шагов по каждому лучу

> Почему не просто источники света? Это ведь уже не area lights, ввиду их малых размеров, т.е. неясно какой тут профит от GI.
очевидно, из соображений производительности. 100 источников света в GI считаются за то же самое время, что и ни одного. а 100 shadow map посчитать — производительность погибнет.

> Как сказать. Расчеты с позициями, полученными из глубины вполне себе трехмерные. Но алгоритмическая сложность на порядок меньше, да.
да, речь идёт именно об алгоритмической топологии, так сказать. сами-то рассчёты, разумеется, в любом случае будут оперировать с трёмхерными векторами. короче, я там статью написал, почитай.

#143
14:00, 22 апр. 2019

Suslik
> 100 источников света в GI считаются за то же самое время
А, у вас же там forward.

> короче, я там статью написал, почитай
Ура, свершилось! )

Страницы: 15 6 7 8 9 10
ПрограммированиеФорумГрафика