Sergio
> Screen-space local reflections. Ну такое.....
http://www.gamedev.ru/art/forum/?id=83344&page=132#m1965
тоже бацко
star123
K-d tree, все в опенсурсе :)
Suslik
> Я уже всех достал, наверное, со своим volume render'ом.
http://www.gamedev.ru/art/forum/?id=83344&page=102#m1528
прикольно , чё эт такое ?
star123
ну ты нашёл, куда докопать. это — volume rendering, построенный на raymarching'е с адаптивным шагом интегрирования и дополнительной preintegration текстурой.
Suslik
а свиду как 3D текстура:)
Synthetic
> а свиду как 3D текстура:)
выводить 3д текстуру ты на экран собрался, видимо, 3д-треугольником? volume rendering — это способ отображения 3д текстур.
моя реализация Line-Sweep Ambient Occlusion
не без недостатков: резкие изменения в картинке при движении камеры. Особенно по краям.
Не думаю что тюнится полностью. До приемлемого продакшн качества видимо придется радиус уменьшать чтобы было менее заметно. Скринспейсный.
Использовался в Quantum Break'е от Remedy.
_Wizard_
Круто смотрится!
А этот реалтайм прям вот совсем реалтайм, который можно в игре использовать? Или там какие-то CUDA и все такое?
_Wizard_
Можешь в кратце суть алгоритма описать? Эти резкие изменения сильно заметны с текстурами?
алгоритм
Cчитается на компут шейдере. Делал на dx12, на dx11 думаю запустится без изменений.
В привычных скринспейс-АО методах анализируется буфер глубины для каждого пикселя независимо.
Этот алгоритм обрабатывает сразу всю полоску пикселей за раз.
1d случай. Имеем карту высот (пиксели, вершины, кому как)
1. берем первые 2 пикселя/вершинки, засовываем их в стек.
2. 3-я и следующие вершинки сравнивают оклюжн от последних 2х вершин в стеке.
Если от дальней (stackHead-1) вершинки оклюжн больше чем от 0-й (stackHead), то возвращаемся по стеку назад (stackHead--;), повторяем шаг.
3. Т.е. мы находим вершину которая больше всего нас загораживает с указанного направления. Можно посмотреть Horizon-Based Ambient Occlusion.
Записали посчитанный ао для указанного пикселя (unordered access write).
И добавляем этот пиксель в стек, т.е. он становится stackHead... следующий пиксель - возвращаемся к шагу 2
Считаем ао для множества направлений, усредняем.
производительность
Для хорошего качества надо считать много направлений, в статье 144 направления.
Базовая имплементация будет очень медленной. 50 ms на хорошей машине.
- Размазываем вычисления по времени и пространству.
Interleaved (в кваде 3*3, в каждом пикселе усредняется только часть направлений, после чего отдельным проходом собираем с соседей их ао и усредняем)
- Репроекция еще с 3х предыдущих кадров
итого в каждом пикселе семплируем только 4 направления * 9 соседей * 4 кадра = 144 направления...
По данным автора 720p ао укладывается в 1.5 мс. Я не все оптимизации делал, поэтому сказать сложно. По предварительным тестам чуть дороже получается.
Советую почитать статьи автора начиная с Scalable Height Field Self-Shadowing.
Он под разными углами раскрывает потенциал изложенной идеи (с рассчетом ao для полоски за 1 проход)
dmitryhryppa
>А этот реалтайм прям вот совсем реалтайм, который можно в игре использовать? Или там какие-то CUDA и все такое?
В статье автор Cuda использовал. Есть даже пример кода, но я не осилил) Код не читаемый. Делал по статье.
Рилтайм, 1.4 мс. судя по статье Multi-Scale Global Illumination in Quantum Break.
Андрей5000
>Эти резкие изменения сильно заметны с текстурами?
ну конечно.
Все тюнится, оптимизируется - это просто много времени занимает, поэтому не все сделал что хотел. В статике хорошо выглядит)
Запосчу и сюда
Mr F
Хорошенькие)
Трассировка объема, Beer + Henyey-Greenstein, перлин?
вижу что 20-25 ms, без оптимизаций
расскажи как делал, чем вдохновлялся
будет использоваться или для себя?
_Wizard_
Спасиб, ещё буду работать)
К концу года большую статью напишу и про небо и про всё остальное, ещё может что-нибудь поменяется по пути) Скорость кстати у них хорошая, это записыватель видео всё затормаживает. Вкратце: трассировка совмещенных шумов, освещение хаками на глаз (про beer+HG знаю, но при сильной облачности хз какой от них толк, свет со всех сторон, слишком медленно).
Ещё немного небушко
Тема в архиве.