Suslik, почему? Надо просто добавить максимальную разницу глубины.
Suslik, так норм?
Я уже заманал Suslik-а своими расспросами ) )
Пока занят переносом алгоритма на compute-шейдера.
vindast
> Suslik, так норм?
ну видишь ведь, что выглядит как какаха, чего спрашиваешь? основная фишка ao — это нелокальность освещения. то есть освещение каждого фрагмента зависит от его окружения. твои же колонны, например, освещены так, что они не на полу стоят, а в воздухе висят.
Suslik, что с колоннами не так? По полу он почти со всех направлений не имеет препятствий. От куда там затенение?
vindast
> От куда там затенение?
Ото всех сторон - ambient же
Вот в этом посте колонны явно симпатичнее (и правильнее) освещены:
https://gamedev.ru/code/forum/?id=237794&page=11#m153
VS Ваш ао, у Вас просто ао не угасает с радиусом.
Без корректировки по радиусу луча:
vindast
> Пока занят переносом алгоритма на compute-шейдера.
на компьют шейдер имеет смысл переходить, если у тебя есть особый алгоритм, в котором каждый тред видеокарты записывает более чем 1 фрагмент. а просто так переносить тот же самый алгоритм нет никакого смысла, так как он, скорее всего, будет медленнее, чем стандартный scheduler растеризатора.
vindast
> VS Ваш ао, у Вас просто ао не угасает с радиусом.
это не Наш ао. Наш ао не наркоманский. Наш ао на первой странице, сравни :)
Suslik, я хочу прикрутить чтении линии как Вы выше писали.
vindast
> Suslik, я хочу прикрутить чтении линии как Вы выше писали.
учти, это не халявно. точнее, хоть как-то реализовать достаточно просто, но реализовать эффективно — вовсе нет, очень много тонкостей реализации. у меня первые несколько реализаций lsao были, признаюсь, медленнее обычного hbao с рандомными выборками.
и, если честно, тут ещё рано оптимизировать. все дальнейшие алгоритмы могут только увеличить производительность, в лучшем случае не потеряв качество. красивее они картинку не сделают. если честно, у тебя сейчас картинка выглядит как какаха. я не знаю, что ты в неё постоянно пытаешься вхимичить, но лучше она от этого не выглядит. когда ты вроде бы говоришь, что отключаешь все свои попытки наколдовать что-то, оно вроде бы даже начинает быть похожим на правду, но в следующем же твоём скриншоте всё возвращается обратно и ещё хуже, чем было. попробуй просто получить базовую картинку 1-в-1 как у меня на первой странице, там нет никаких улучшений базового алгоритма в плане графики, только стандартный hbao по сути. ты уже даже сцену ту же самую загрузил и можешь легко сранивать.
Suslik, пойду сделаю нативный алг в лоб.
Вы каким доком пользовались при его написании? А то может я не тот док взял.
vindast
я сам формулы выводил. сравнивал со своим path tracer'ом. примерно так:
\(\int_0^{2\pi}\int_0^{h(\phi)} (\vec \omega \cdot n) d \vec \omega =\)
\(\int_0^{2\pi}d\phi \int_0^{h(\phi)} \cos \theta \sin \theta \cdot d \theta =\)
\(\int_0^{2\pi}d\phi \int_0^{h(\phi)} \frac{1}{2} \sin(2 \theta) \cdot d \theta\)
дальше уж сам. здесь интегрирование ведётся в предположении, что горизонты равномерно распределены вокруг нормали. точно так же можно посчитать, распределив горизонты равномерно в экранных координатах, но это сложнее.
если всё это очень аккуратно выписать, это немного улучшит картинку, но не сделает из какахи нормальный ao, это я тебе гарантирую. ищи ошибки.
Suslik, реализация в лоб без учета нормали в точке:
vindast
да, это уже близко. пока что этот скриншот — лучшее, что ты выдавал в этой теме. значит, у тебя какой-то баг с учётом нормали, потому что они не должны делать результат хуже.
Suslik, вот я тоже так думаю.
Тема в архиве.