Многие из читающих данную статью, уже слышали об технологии raytracing. На русском звучит как трассировка лучей. На рынке появились видеокарты, которые ее поддерживают, с подзаголовком RTX. Технологии и продукты не создаются на пустом месте и реализацию трассировки лучей мы можем увидеть в играх, фильмах, а так же в других коммерческих проектах (рекламные ролики, рендеры и т.д.).
Что же такое rayrtacing и почему о нем столько разговоров.
Собственно, сама трассировка лучей позволила полностью отказаться от такой базовой вещи, как "запекание" сцены, а вернее, света на сцене. Для непосвященных расскажу вкратце.
Свет - это основа любой компьютерной сцены, будь то игра или фильм. Без источников света мы не будем видеть на экране ровным счетом ничего. Черный экран. Стоит добавить хотя бы один источник света и все объекты начнут отбрасывать тени. К примеру, вас не что-то не устраивает, решили сменить текстуру на одном объекте и немного передвинуть второй. И вот тут кроется главный подвох: пока вы не проведет новые расчеты по освещению, текстура не поменяется, а тень от предмета останется на старом месте. И так каждый раз. В итоге, чтобы довести свой проект до финальной картинки, требуются долгие часы ожидания рендера сцены.
Трассировка лучей - это полный рилтайм, т.е. все изменения с вашими объектами, их положением в пространстве будут видны сразу, что не только значительно ускоряет работу, но и позволяет сделать процесс гораздо более удобным, наглядным и качественным.
Многие возразят, что в том же движке unreal engine 4 есть не только статическая модель освещения, но и динамическая. Динамическая, это тоже рилтайм, т.е. все изменения вы видите сразу и "запекание" света не требуется. Все здорово и замечательно, если бы не одно большое НО.
Динамическое освещение, это гораздо более упрощенная система. Сделано это для того, чтобы ваш графический ускоритель смог в реальном времени успевать обрабатывать всю сцену и все изменения на ней. Однако, упрощена она настолько сильно, что разница бросается в глаза сразу. Ни о какой реалистичности речи не идет, картинка выглядит плоской, картонной... прилагательные можно подбирать бесконечно, но суть одна - разочарование.
Совсем другое дело с трассировкой лучей. Физически корректное поведение света, феноменальное взаимодействие с качественными текстурами. Картинка сразу преображается на глазах и это при том, что с вашей стороны не требуется ровным счетом ничего. Все делает технология raytracing.
Обратной стороной медали, является то, что настоящая трассировка путей луча, чрезвычайна требовательна к ресурсам видеокарты. На данный момент в играх используется только часть возможностей raytracing. Почему только часть? Все просто - ни одна видеокарта не вывезет полную и честную трассировку лучей при 60 кадрах в секунду. Или все же одна найдется?
(все вышенаписанное сжато до предела и сильно упрощенно)
Переходим к самому интересному.
Недавно вышел новый тест, который показывает и тестирует видеокарты при полноценной трассировке лучей - 3DMark DirectX Raytracing.
На нем можно полноценно определить мощность видеокарт при работе с технологией raytracing.
Как для геймеров, то тут все грустно: выдать производительность близкую к 60к/с может только rtx3090. Но, данный тест обращен в первую очередь не к геймерам, а к тем, кто работает в индустрии 3d.
Если оперировать рабочими приложениями, такими как unreal engine 4, то комфортно воплощать свои мечты в реальность можно, начиная от 30 кадров в секунду, поэтому для этих целей подойдут следующие видеокарты: rtx 2080ti, rtx3070, rtx3080 и наконец rtx3090. Но это только на первый взгляд.
Для тех, кто делает синематики или рекламные ролики и другую продукцию подобного рода знает, что рилтайм это здорово, круто и молодежно, но чтобы твой ролик увидел весь мир, нужно заснять ролик. Выставили камеры, дали им путь, скорость, начали снимать шоты и внезапно ошибка - нехватка видеопамяти. Я лично сталкивался с такой проблемой несколько раз на своей 8 Гб карте. Поэтому, нам нужно больше памяти. У 2080ti 11Гб, 3080 -10Гб и 3090 - аж 24Гб. rtx 3090 будет гораздо предпочтительнее не только потому что она в два раза мощнее в обработке raytracing (в случае сравнения с 2080ti), но и потому что памяти больше: 11 Гб против 24 Гб и тут конечно выбор становится очевиден: для работы с трассировкой лучей годится только rtx 3090. Если объем видео памяти не так важен в ваших задачах, то подойдет rtx 3080.
Хорошим отражением реальной работы видеокарт в соответствии с тестом 3DMark DirectX Raytracing является сцена Medieval Game Environment от компании quixel, которую можно бесплатно загрузить на сайте unreal engine 4.
В данной сцене используется полная трассировка луча, без всяких ухищрений и упрощений. Выглядит просто невероятно. Да, ребята, именно так будут выглядеть игры в недалеком будущем и это здорово.
Все скриншоты вы можете посмотреть на сайте: https://quixel.com/blog/2021/2/11/medieval-game-environment-creating-atmospheric-terror-in-realtime
И да, кол-во кадров в данной сцене сходится с тестом 3dmark и комфортно перемещаться по сцене можно только на rtx3090 и с большими оговорками на rtx3080. Лично пробовал rtx 2070 super при разрешении 3440на1440 в среднем было 12-15 кадров. На обычном 1440p мониторе было бы примерно 19 кадров, что крайне печально.
Еще одним хорошим примером полного рейтресинга, является игра QUAKE II RTX. На данный момент, только эта игра использует достаточно сложную геометрию и при этом полный путь трассировки луча. При разрешении 1440p rtx 3090 выдает в среднем 80-85 кадров в секунду, rtx 3080 - 60-65к/с.
Если в обычных играх с упрощенной трассировкой лучей rtx 3080 отстает от 3090 в среднем на 10%, то в задачах с полной трассировкой пути - разница возрастает до 20%, что уже является достаточно большой разницей.
Надеюсь, мне удалось понятно раскрыть тему трассировки лучей и для чего она нужна и важна.
Сразу хочется отметить, что если вы не видите в играх разницу между трассировкой лучей и без нее, то это еще не значит, что raytracing плохо работает. Это значит только то, что игровые художники поработали на славу и выложились на 100%, чтобы сделать картинку реалистичной. Представляете сколько времени и сил на это потребовалось? Я представляю... Надеюсь, что трассировка лучей и дальше будет активно внедряться в игровую индустрию. Если это случиться, то хороших и качественных игр с крутой картинкой будет гораздо больше.
А на этом все. Если у вас есть вопросы, то обязательно пишите их в комментариях.