Трассировка лучей в графике появилась достаточно давно, вот только это была не игровая графика, а статичные рендеры дизайна изделий или интерьеров, CGI и прочие околодизайнерские приложения.
Про грядущий ray tracing в играх я узнал в 2018м году, и честно говоря, первые трейлеры (кажется, это был Battlefield V) никак не впечатляли. Ну отражается огонь в луже - дальше то что?
Если трейлеры не впечатляли, то на статичных картинках вообще было не понятно как и что различить.
Совершенно разумным был вопрос - а вообще эта технология работает? Точнее было понятно, что в теории она должна работать, но как она сочетается с тем, что уже все и так накрыто шейдерами, потому что игры пока рассчитаны на владельцев не rtx-карт. И хватит ли производительности rtx карт, чтобы управлять светом исключительно через трассировку?
Мой скепсис сильно снизился, когда в начале карантина у меня появилась свободная неделька и я прошел Control + дополнение, то и дело включая и выключая трассировку и получая довольно разные ощущения. Но Control это специфичная игра, такое ощущение что ее делали скандинавские архитекторы и дизайнеры интерьеров, для которых как ведет себя свет очень важно. И вот вышла довольно масштабная Cyberpunk 2077, в которой локации разнообразны и есть возможность включить трассировку. Не буду в этом материале анализировать игровую и художественную составляющую этой игры, скажу что мне она не зашла.
Да, для себя я сделал выводы и могу ощущать эффект от "rtx on", но я сам контролирую его включение и взгляд у меня замыленный. Но вот еще один большой вопрос - отражение через трассировку улавливаются даже на статичной картинке, а можно ли подцепить что-то кроме честных отражений? На этот вопрос мы и попробуем тут ответить.
Так как мои друзья очень редко играют в игры последнее время, и у меня у единственного есть машины, способные потянуть киберпанк я решил пригласить их для проведения слепого теста на "лучи". А они охотно согласились - потому что про Киберпанк слышали вообще все, даже те кто закончил играть в нулевые годы - им интересно было посмотреть. Да и вообще с начала эпидемии давно не были в гостях. Я также принял участие в тесте.
Итак, для проведения теста было выбрано следующее железо: rtx 2070 super, rtx 3090, процессор ryzen 3900x + 64 гб памяти @3200cl14. 2070 super - моя личная, 3090 - не моя, и была мне доступна всего полдня, поэтому не все прогнал на ней, что хотел.
Основные настройки игры на RTX 2070 super:
2K разрешение, DLSS - на производительность, настройки графики средне-высокие.
Основные настройки игры на RTX 3090:
2K разрешение, DLSS - на качество, настройки графики высокие
Настройки Ray Tracing:
Итак, если мы будем вслепую тестировать человека на наличие трассировки, то он моментально заметит,
что она влияет на отражения в лужах и стеклах и сразу поймет когда она есть, а когда ее нет. Поэтому мы всегда будем держать включенными отражения. А вот все остальное: тени и освещение - включать или выключать в зависимости от теста. При включении трассировки для освещения задается уровень "впечатляющее".
Счетчик FPS и любой оверлей отключен, для большей объективности.
Методология слепых тестов:
Каждый человек проходит 10 тестов по 2-5 минут игры. Игра каждый раз начинается с одного и того же сохранения.
Перед началом серии 10 тестов все проходят стартовый (не зачетный) тест с отключенной трассировкой.
В каждом тесте 50% вероятность, что будет включена трассировка для освещения и теней.
Включение/выключение трассировки делает другой человек, а игрок ничего не знает о том, включена она или нет.
После каждого теста у игрока спрашивали: -отличалась ли картинка в плане освещения или теней от предыдущего теста, и какие были впечатления относительно и безотносительно предыдущего теста. Впечатления оценивались по следующим критериям:
Заметим, что на 3й пункт сильно будет влиять производительность, но у нас получился +- адекватный фреймрейт для оценки визуального комфорта.
Так как включать или нет трассировку на каждом тесте выбирается случайно, то количество тестов для каждого игрока, в которых была включена трассировка разное и количество таких тестов будет указано в таблице результатов. Оценка впечатлений от трассировки идет через сравнение с предыдущим тестом, если он был без трассировки. Если предыдущий тест был также с трассировкой, то берется впечатление безотносительно него.
Принявшие участие в тестировании люди:
1. Игрок № 1, 31 год (я) - пару раз в год играю в относительно новые игры, за последние года 3 играл в Cyberpunk 2077, Control, HL Alyx, Deus Ex Mankind Divided, Dishonored 2, Prey, Hunt, кажется что-то еще, не помню уже.
2. Игрок № 2, 33 года - играл относительно недавно в Witcher 3, PUBG, Hitman, про трассировку лучей слышал, но не видел
3. Игрок № 3, 30 лет - последний раз играл 12 лет назад в GTA 4, Crysis, Bioshock, больше вообще не играл (разве что только на мобильном), пользовался только неигровым ноутбуком, про трассировку лучей вообще ничего не слышал.
В таблице внизу подсчитаны ответы игроков на вопросы после каждого теста.
| Nvidia RTX 2070 super | |||
| Проверяемый критерий | Игрок 1 | Игрок 2 | Игрок 3 |
| Сколько раз угадал, была ли смена настройки RTX | 9 из 10 | 7 из 10 | 7 из 10 |
| Картинка стала красивее при RTX=ON | 0 из 4 | 2 из 4 | 3 из 7 |
| Картинка стала реалистичнее при RTX=ON | 1 из 4 | 4 из 4 | 7 из 7 |
| Играть стало комфортнее при RTX=ON | 2 из 4 | 3 из 4 | 5 из 7 |
| NVidia RTX 3090 | |||
| Сколько раз угадал была ли смена настройки RTX |
10 из 10 | не участвовал | 7 из 10 |
| Картинка стала красивее при RTX=ON | 3 из 6 | не участвовал | 2 из 3 |
| Картинка стала реалистичнее при RTX=ON | 3 из 6 | не участвовал | 3 из 3 |
| Играть стало комфортнее при RTX=ON | 4 из 6 | не участвовал |
2 из 3
|
Итого:
Некоторые результаты для меня были очевидные, но кое-что меня сильно удивило.
Ну вот и все, заморочились мы на несколько часов, но было достаточно весело (мне, по крайней мере).
Покупать или нет rtx видеокарту - выбор каждого, я пока не вижу чего-то фундаментально прорывного от трассировки, с чем не справятся классические шейдеры, но возможно надо просто прекратить искать эффект там, где надо просто расслабляться.