Смешались в кучу кони, люди. - Трассировку лучей методом "от источника к камере" не используют сейчас нигде. По крайней мере в таком виде, как тут описывается. Причина - при обратимой 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 конеш), там суть основная в том, что можно запоминать, какие источники света дают больший вклад в освещение точки, какие меньше, и на основе этого кидать больше лучей в важные источники и меньше в неважные, это сильно ускоряет процесс. Для непрямого освещения используется примерно тот же подход (запоминают, какие направления более "важные" для суммарного освещения, туда и кидают).
Ну и да, все это для каустик опять плохо работает, шумный результат очень. Но для каустик вообще почти все плохо работает, сложный это эффект.
Трассировку лучей методом "от источника к камере" не используют сейчас нигде
Разве render man от pixar не использует почти полный RT с фотонными картами для уменьшения кол-ва денойза?
Минус от такого подхода - шума в картинке много, особенно на отражениях маленьких ярких источников и каустиках, нужны денойзеры и надо понимать, в какие части изображения больше лучей кидать
Я думаю тему с каустиками вообще поднимать не стоит.
Наличие переотражений вообще не зависит от того, прямая это трассировка, обратная ли и т.д., оно зависит только от того, сколько переотражений для лучей вы разрешаете и копите ли результат прошлых кадров где-то.
Вы правы, я и не хотел сказать о направлении луча, я лишь хотел указать на рандомизацию лучей в случае PT.
- схему с рандомным сэмплированием brdf используют и сейчас. Lumen например так делает из того, что доступно сейчас.
В случае Lumen не совсем. Они делают рандомизацию, но не полную с доп растеризоваными кадрами в лоу резе того, до чего не дотянулись, + стоит помнить о вексельном распространении который делает эти "затухания" при изменении сцены и как раз по вокселям они контролируют рандомизацию.
что и с рейтрейсингом, если количество шадоумап будет очень большим.
По сути это будет семплированием, что даст не плохие тени, но это костыль костыля.
Если я правильно понял, кп2077 решили использовать restir di для ускорения (если верить df конеш).
Про него я видел только демку Nvidia и то это было пару лет назад. Нужно почитать, может чего интересного вычитаю.
Смешались в кучу кони, люди.
- Трассировку лучей методом "от источника к камере" не используют сейчас нигде. По крайней мере в таком виде, как тут описывается. Причина - при обратимой 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 конеш), там суть основная в том, что можно запоминать, какие источники света дают больший вклад в освещение точки, какие меньше, и на основе этого кидать больше лучей в важные источники и меньше в неважные, это сильно ускоряет процесс.
Для непрямого освещения используется примерно тот же подход (запоминают, какие направления более "важные" для суммарного освещения, туда и кидают).
Ну и да, все это для каустик опять плохо работает, шумный результат очень. Но для каустик вообще почти все плохо работает, сложный это эффект.
Комментарий недоступен
Трассировку лучей методом "от источника к камере" не используют сейчас нигде
Разве render man от pixar не использует почти полный RT с фотонными картами для уменьшения кол-ва денойза?
Минус от такого подхода - шума в картинке много, особенно на отражениях маленьких ярких источников и каустиках, нужны денойзеры и надо понимать, в какие части изображения больше лучей кидать
Я думаю тему с каустиками вообще поднимать не стоит.
Наличие переотражений вообще не зависит от того, прямая это трассировка, обратная ли и т.д., оно зависит только от того, сколько переотражений для лучей вы разрешаете и копите ли результат прошлых кадров где-то.
Вы правы, я и не хотел сказать о направлении луча, я лишь хотел указать на рандомизацию лучей в случае PT.
- схему с рандомным сэмплированием brdf используют и сейчас. Lumen например так делает из того, что доступно сейчас.
В случае Lumen не совсем. Они делают рандомизацию, но не полную с доп растеризоваными кадрами в лоу резе того, до чего не дотянулись, + стоит помнить о вексельном распространении который делает эти "затухания" при изменении сцены и как раз по вокселям они контролируют рандомизацию.
что и с рейтрейсингом, если количество шадоумап будет очень большим.
По сути это будет семплированием, что даст не плохие тени, но это костыль костыля.
Если я правильно понял, кп2077 решили использовать restir di для ускорения (если верить df конеш).
Про него я видел только демку Nvidia и то это было пару лет назад. Нужно почитать, может чего интересного вычитаю.
Спасибо за комментарий.
Минус за нечитабельную стену текста
Ахуеть это уже второй Лонг к первому Лонгу
Каустику в играх я бы ждать не стал в ближайшие лет 10. Я и в своих рендерах то её врубал в исключительных случаях только)