WikiDer > Окклюзия экранного пространства
Эта статья может быть слишком техническим для большинства читателей, чтобы понять. Пожалуйста помогите улучшить это к Сделайте это понятным для неспециалистов, не снимая технических деталей. (Июль 2020) (Узнайте, как и когда удалить этот шаблон сообщения) |
Окклюзия экранного пространства (SSAO) это компьютерная графика техника для эффективной аппроксимации окружающая окклюзия эффект в реальном времени. Его разработал Владимир Каялин во время работы в Crytek и впервые был использован в 2007 году в видеоигре Crysis, также разработанный Crytek.
Выполнение
Алгоритм реализован в виде пиксельный шейдер, анализируя сцену буфер глубины который хранится в текстуре. Для каждого пиксель на экране пиксельный шейдер делает выборку значений глубины вокруг текущего пикселя и пытается вычислить степень окклюзии для каждой из выбранных точек. В своей простейшей реализации коэффициент окклюзии зависит только от разницы глубины между выбранной точкой и текущей точкой.
Без дополнительных интеллектуальных решений такой метод грубой силы потребовал бы около 200 считываний текстур на пиксель для хорошего визуального качества. Это неприемлемо для рендеринг в реальном времени на текущем графическом оборудовании. Чтобы получить высококачественные результаты с гораздо меньшим количеством считываний, выборка выполняется с использованием случайно повернутого ядро. Ориентация ядра повторяется каждые N пикселей экрана, чтобы в конечном изображении были только высокочастотные шумы. В конце концов, этот высокочастотный шум значительно устраняется NИксN этап постобработки размытия с учетом неоднородностей глубины (с использованием таких методов, как сравнение смежных нормалей и глубин). Такое решение позволяет уменьшить количество выборок глубины на пиксель примерно до 16 или меньше при сохранении высокого качества результата и позволяет использовать SSAO в программных приложениях реального времени, таких как компьютерные игры.
По сравнению с другими окружающая окклюзия решения, SSAO имеет следующие преимущества:
- Независимо от сложности сцены.
- Не требуется предварительной обработки данных, времени загрузки и выделения памяти в системной памяти.
- Работает с динамическими сценами.
- Работает одинаково согласованно для каждого пикселя на экране.
- Нет ЦПУ использование - может быть выполнено полностью на GPU.
- Легко интегрируется в любой современный графический конвейер.
SSAO также имеет следующие недостатки:
- Скорее локальный и во многих случаях зависящий от вида, так как он зависит от глубины смежных текселей, которые могут быть сгенерированы любой геометрией.
- Трудно правильно сгладить / размыть шум, не затрагивая неоднородности глубины, такие как края объекта (окклюзия не должна «проступать» за объекты).
Смотрите также
Рекомендации
- ^ Тобиас Ритчель; Торстен Грош; Ханс-Петер Зайдель (2009). «Аппроксимация динамического глобального освещения в пространстве изображения». Труды Симпозиума ACM SIGGRAPH по интерактивной 3D-графике и играм. Получено 25 ноября 2015.
внешняя ссылка
- В поисках нового поколения - CryEngine 2
- Видео, показывающее SSAO в действии
- Улучшение изображения за счет нерезкого маскирования буфера глубины
- Аппаратно ускоренные методы окружающей окклюзии на графических процессорах
- Обзор методов визуальной окклюзии экранного пространства
- Окклюзия на основе буфера глубины в реальном времени
- Исходный код шейдера SSAO, используемого в Crysis
- Аппроксимация динамического глобального освещения в пространстве изображения
- Накопительная окклюзия экранного пространства
- NVIDIA интегрировала SSAO в драйверы
- Несколько методов SSAO описаны в книге ShaderX7.
- SSAO Shader (русский)
- SSAO Tutorial, расширение техники, используемой в Crysis