В чем разница между PBR и SSR?

11

Я очень новичок в разработке игр, и я пытался понять разницу между отражением пространства экрана и физическим рендерингом.

Я читал о PBR, и из того, что я понимаю, он пытается имитировать, как свет отражается в реальной жизни, то есть он обычно разделяется на два компонента, зеркальный и рассеянный, в зависимости от типа материала.

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

Если мое понимание ССР верно, то не совпадают ли они? Я имею в виду, не то, как отражения выглядят на поверхности, зависит от шероховатости поверхности и т. Д. Это будет влиять на то, сколько света отражено и сколько диффузно отражено. Опять же, пожалуйста, поправьте меня, где я не прав

Кумаресан Сандран
источник

Ответы:

17

Физический рендеринг

Вы на правильном пути, когда говорите: «Он пытается имитировать, как свет отражается в реальной жизни, то есть он обычно разделяется на два компонента, зеркальный и рассеянный, в зависимости от типа материала».

Но мы уже давно моделируем материалы с зеркальным отражением в играх и компьютерной графике. Хитрость в том, что мы привыкли обрабатывать эти вещи как полностью независимые - изменение зеркальности не изменило диффузию:

Пример затенения Фонга, обычно используемого в играх

Это пример затенения Фонга из вики Blender . Вы можете видеть, что он предлагает два параметра зеркальной интенсивности и зеркальной твердости, и эти параметры только изменяют белесую часть отражения. Голубое рассеянное отражение совсем не меняется.

То, как игры использовали бы это - художник должен был бы вручную настраивать эти значения для каждого материала, пока он не "выглядел правильно". Поскольку «зеркальная твердость» не является реальным физическим свойством материалов, которое мы можем точно измерить, это должно было быть сделано на глаз.

Этот метод немного хрупкий. Когда вы меняете освещение (скажем, динамический объект, движущийся по разным областям, или в среде с временем суток и погодой), оно может выглядеть слегка неправильно - слишком ярким или слишком темным - поскольку условия просмотра не совпадают с те его зеркальные параметры были настроены для.

Войдите в Physical-Based Rendering, которая является попыткой обосновать наши описания материалов более объективными, измеримыми свойствами реальных поверхностей. Одним из наиболее очевидных свойств является сохранение энергии - более грубая поверхность будет рассеивать свет диффузно, а более гладкая / более металлическая поверхность будет отражать свет более прямо, но это тот же источник света, из которого они оба черпают свет. Таким образом, при прочих равных условиях, когда мы делаем материал более блестящим, рассеянный компонент должен стать темнее:

Пример увеличения отражательной способности с постоянным альбедо

Этот пример взят из статьи Marmoset, объясняющей PBR, изначально предоставленный Syntac_

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

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

Обратите внимание, что другой ответ описал это в терминах непрямого освещения от света, отражающегося от других объектов в сцене. В то время как многие системы освещения, которые используют физические модели, также включают в себя инструменты для моделирования, это обычно известно под отдельным названием Global Illumination . Это эффект, при котором одна сторона диффузной головки на этом изображении выглядит зеленой, освещенной светом, отражающимся от зеленой стены:

Пример типичной тестовой сцены глобального освещения

Изображение из этой статьи о глобальном освещении

Отражение в пространстве экрана

В то время как PBR пытается смоделировать, как материал отражает свет, Screenspace Reflection пытается уловить то, что отражается - в частности, для блестящей зеркальной поверхности, что я должен увидеть в отражении?

Опять же, это относительно недавний метод рендеринга, который, вероятно, наиболее понятен в отличие от того, как игры делали это раньше:

Рендеринг с переворотом - обычный для водных плоскостей или плоских зеркал, мы буквально рендерим всю отраженную геометрию во второй раз, отражая поперек плоскости отражающей поверхности. Это дает высококачественные отражения (полная детализация, объекты, соприкасающиеся с поверхностью, совпадают с их отражениями), но работает правильно только для плоских поверхностей. Чем более волнистая или неровная поверхность, тем меньше она ведет себя как реальные отражения, которые должны искажать или размыть сложными способами.

Кубические карты - давайте сохраним цвет, который будет виден любому лучу обзора, исходящему из их центральной точки. Динамически визуализируя карты куба из выбранных точек сцены, мы можем оценить, какой цвет должен отражаться от любой произвольно изогнутой поверхности. Проблема в том, что карта куба является полностью правильной только в ее центральной точке - поскольку точка, где мы моделируем отражение, перемещается по сцене, она должна увидеть некоторый параллакс, которого нет на карте куба. Это означает, что объекты не склонны выравниваться со своими отражениями.

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

Слайд с описанием отражений в пространстве экрана со схемой вида сбоку

Вот слайд из презентации EA DICE об их подходе к отражениям в движке Frostbite .

Это означает (с некоторой умной алгоритмической работой) мы можем получать отражения с разумной точностью трассировки лучей от произвольных поверхностей в играх, имея правильное выравнивание поверхностей в контакте, искажении и размытии, пока отраженная часть поверхности видна на -экран (т. е. не закадровый или не закрыт чем-то другим). В тех случаях, когда отражение не может быть точно определено с помощью лучевого сопоставления, оно обычно аппроксимируется с использованием близлежащих образцов или резервной кубической карты, представляющей сцену рядом с / позади обзора камеры.

Пример проекта с использованием отражения в пространстве экрана

Вы можете видеть в этом примере отражения в пространстве экрана , впечатление может быть очень убедительным, хотя небольшие ошибки заметны (см. Отражение нижних сторон кубов, которые не видны в визуализированном кадре и поэтому просто смазывают и повторяют смежные пиксели, или отверстия в отражении правой зеленой занавески рядом с цветочным горшком и в нижней части экрана, где лучевая маркировка не смогла найти правильные отраженные пиксели). Обычно этот метод используется для умеренно блестящих / слегка шероховатых поверхностей, чтобы случайная ошибка была менее заметной.

ДМГригорий
источник
Большое спасибо за ответ. Это именно то, что я хотел знать.
Кумаресан Сандран
Для тех, кому интересно, есть статья 2015 года о полу-продвинутом, но интуитивном методе решения проблемы «увидеть отражение кубов»: посмотрите статью: «Многоуровневое глобальное освещение в квантовом изломе»
Sirisian
1

Они на самом деле не связаны.

Этот документ от Marmoset хорошо объясняет PBR, не привлекая много математики.

Отражения пространства экрана, с другой стороны, это метод обработки пространства экрана, используемый для визуализации отражений в реальном времени. Как правило, это намного дешевле, чем рендеринг кубических карт каждого кадра, но может выглядеть менее точно и не позволяет отображать объекты вне экрана.

Syntac_
источник
1
Просто пришел сюда, чтобы обновить ссылку, для тех, кто посещает с 2018 года ... marmoset.co/posts/basic-theory-of-physically-based-rendering
SWS
@sws обновил ура.
Syntac_