Поясняю за рейтрейсинг и Overdrive Mode для Cyberpunk 2077

И чём разница между трассировкой лучей и трассировкой путей.

822822

Смешались в кучу кони, люди.
- Трассировку лучей методом "от источника к камере" не используют сейчас нигде. По крайней мере в таком виде, как тут описывается. Причина - при обратимой brdf (а большую часть брдфок можно считать обратимыми) нет большой разницы в том, считать лучи от источника или от камеры, а у лучей от камеры есть большой плюс - они попадают в камеру и не будут "лишними". Минус от такого подхода - шума в картинке много, особенно на отражениях маленьких ярких источников и каустиках, нужны денойзеры и надо понимать, в какие части изображения больше лучей кидать, куда меньше. Наличие переотражений вообще не зависит от того, прямая это трассировка, обратная ли и т.д., оно зависит только от того, сколько переотражений для лучей вы разрешаете и копите ли результат прошлых кадров где-то. Если копите - получаете переотражения. Не копите - не получаете. В метро есть переотражения, в люмене есть, киберпанк такой не один.
- В оффлайн рендерах могут использовать элементы прямой трассировки, но не в явном виде, можно погуглить bidirectional photon mapping, bidirectional path tracing, metropolis light transport, там описано более подробно.
- То, что сейчас используется в основном для RTXGI это сетки световых проб (чем-то похоже на маленькие кубические карты), которые обновляются в реалтайме рейтрейсингом. Проблема в том, что они довольно лоурезные, непрямые тени от объектов среднего размера теряются. В какой-то степени чинится AOшкой, но не до конца. Плюс из-за аошки вы получаете двойной окклюжен. У вас есть "честный" окклюжн от того, что пробы в тени получают меньше света, и вы сверху на это еще накидываете AO, получается двойное затенение. Это одна из причин, почему в новых играх с RTGI (метро, ведьмак3) иногда слишком темные комнаты, углы, кроны деревьев и т.д.
- схему с рандомным сэмплированием brdf используют и сейчас. Lumen например так делает из того, что доступно сейчас.
- Подход с прямым и непрямым освещением используют все как раньше, так и сейчас, даже в оффлайн рендерах. Причина - если просто рандомно кидать лучи, шума очень много. В сцене известно, где находятся яркие (а значит - наиболее влияющие на картинку) источники, грех этим не пользоваться. Отличие растеризации от рейтрейсинга тут только в том, как считается видимость между точкой и источником, рейтрейс пускает луч и проверяет, пересекся ли он с геометрией, в растеризации рисуют шадоумапы. Но суть одна и та же, надо для каждой точки сцены понять, виден ли из нее источник или нет. Шадоумапы просто надо хранить где-то, рисовать их долго и они плохо работают на источники света больших размеров (т.к. сам алгоритм предполагает, что свет исходит из точки / из фиксированного направления, что исключает полутени). Полутени фейкаются различными методами, типа pcf/moment-based shadow maps. Но в целом, вы __можете__ _в теории_ получить ту же картинку, что и с рейтрейсингом, если количество шадоумап будет очень большим. Рейтрейсинг обходит это тем, что можно просто запустить луч из точки поверхности в случайную точку на источнике света и посчитать геометрическое пересечение. Проблема - это дорого делать для всех источников, в играх рейтрейснутые тени сейчас делают обычно от пары источников (обычно солнце или какая-нибудь самая яркая лампочка в индоре). Если я правильно понял, кп2077 решили использовать restir di для ускорения (если верить df конеш), там суть основная в том, что можно запоминать, какие источники света дают больший вклад в освещение точки, какие меньше, и на основе этого кидать больше лучей в важные источники и меньше в неважные, это сильно ускоряет процесс.
Для непрямого освещения используется примерно тот же подход (запоминают, какие направления более "важные" для суммарного освещения, туда и кидают).

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

195

Комментарий недоступен

49
Автор

Трассировку лучей методом "от источника к камере" не используют сейчас нигде

Разве render man от pixar не использует почти полный RT с фотонными картами для уменьшения кол-ва денойза?

Минус от такого подхода - шума в картинке много, особенно на отражениях маленьких ярких источников и каустиках, нужны денойзеры и надо понимать, в какие части изображения больше лучей кидать

Я думаю тему с каустиками вообще поднимать не стоит.

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

Вы правы, я и не хотел сказать о направлении луча, я лишь хотел указать на рандомизацию лучей в случае PT.

- схему с рандомным сэмплированием brdf используют и сейчас. Lumen например так делает из того, что доступно сейчас.

В случае Lumen не совсем. Они делают рандомизацию, но не полную с доп растеризоваными кадрами в лоу резе того, до чего не дотянулись, + стоит помнить о вексельном распространении который делает эти "затухания" при изменении сцены и как раз по вокселям они контролируют рандомизацию.

что и с рейтрейсингом, если количество шадоумап будет очень большим.

По сути это будет семплированием, что даст не плохие тени, но это костыль костыля.

Если я правильно понял, кп2077 решили использовать restir di для ускорения (если верить df конеш).

Про него я видел только демку Nvidia и то это было пару лет назад. Нужно почитать, может чего интересного вычитаю.

Спасибо за комментарий.

30

Минус за нечитабельную стену текста

2

Ахуеть это уже второй Лонг к первому Лонгу

12

Каустику в играх я бы ждать не стал в ближайшие лет 10. Я и в своих рендерах то её врубал в исключительных случаях только)

3