Здравствуйте, уважаемые читатели сайта Uspei.com. 20 августа Nvidia показала свою новую линейку видеокарт 20-й серии.
Все принялись обсуждать грядущие карты, но мало кто понял, что за трассировка лучей, за что платить такие деньги и где, собственно, производительность?
Я попробую объяснить, что нас ждет с появлением новых карт, и почему это – революция.
Начнём с архитектуры. Помимо стандартного набора блоков, присутствующих в прошлом поколении, новых интерфейсов, новой более быстрой памяти и нового мостика SLI, который наконец-то должен заработать более продуктивно, в архитектуре Turing появился отдельный блок для трассировки лучей и тензерные ядра для глубокого машинного обучения.
В общем, новые видеокарты будут с поддержкой искусственного интеллекта. Который будет применяться для создания более сложных изображений и новых типов сглаживания.
Технология Ray tracing – это, пожалуй, самое непонятное и самое революционное в новых видеокартах. Хотя метод этот давно применяется для визуализации в профессиональном софте для 3D.
До сих пор в играх применялся метод треугольников с z-буфером. То есть, на экране мы видели проекции полигонов, а чтобы понимать, какой из них перекрывает остальные, использовался этот самый z-буфер – расстояние от полигона до плоскости экрана.
Все фокусы со светом, отражениями и прочими ништяками – эмуляция с помощью шейдеров. Например, настоящих зеркал в играх на самом деле нет – кто-то замыливает картинку с бликом, кто-то подставляет туда отдельно отрендеренную комнату.
Трассировка лучей – наиболее реалистичный способ расчета сцены, примерно так же и мы видим мир – в виде отраженного от предметов света. (Подробнее на Хабре).
Испускаемый источником свет будет падать на объекты, отражаться от них, преломляться, картинка станет реалистичной и правильной.
В этом примере ниже камера просматривает экран в мир, содержащий источник света (желтая лампочка) и объект сцены (красная сфера).
Теперь, если вы запустите трассировщик лучей, он будет использовать информацию из этой настройки, чтобы рассчитать, как должно выглядеть изображение, пиксель за пикселем. Полученное изображение будет выглядеть примерно так:
Трассировка лучей уже использовалась ранее в 3D моделировании, фильмах и компьютерной графике. Но для игр она была слишком ресурсоёмкой.
Чтобы сделать освещение, как в жизни, Nvidia разместила на новых картах отдельный блок, который будет заниматься траcсировкой лучей. По сути это ASIC, спроектированный для просчета конкретных задач, и делает он это в 10 раз быстрее, чем видеокарты прошлого поколения.
Для справки: Требования к обработке Ray-Tracing
“Текущие системы рендеринга в реальном времени не используют трассировку лучей, потому что она требует очень высокой вычислительной мощности. Для создания одного сложного изображения может потребоваться до 50 часов и более на ПК высокой скорости общего назначения.
В 1980 году Т. Уитт опубликовал статистический анализ, часто цитируемый в литературе. Уайт отметил, что 95% времени вычислений расходуется на поиск примитивного объекта (треугольника), который впервые попадает под заданный луч. Таким образом, осуществимость чипа Avalon в основном зависит от реализации этого треугольного алгоритма пересечения. Чтобы оценить сложность исчерпывающего поиска по всем треугольникам данной сцены, количество операций вычисляется с использованием реалистичных параметров.
Если методы сглаживания опущены, разрешение экрана 1024×768 пикселей будет генерировать 786 432 первичных луча, то есть один первичный луч на пиксель. Чтобы избежать сглаживания и учитывать вторичные (отраженные / преломленные) лучи, более 3 000 000 лучей более реалистичны.
Для подробной среды требуется около 500 000 треугольников. Если каждый луч проверен на всех треугольниках, это вызывает тесты пересечения 1.5E12 для всего кадра изображения. Частота кадров в 25 кадров в секунду требует пересечений 37,5E12 в секунду. Как поясняется ниже, одно пересечение имеет сложность как минимум 27 высокоточных умножений.
Таким образом, исчерпывающий тест пересечения всех треугольников вызывает около 1E15 умножений в секунду, которые определенно не могут быть реализованы. Это приводит к требованию расширенного алгоритма поиска для самой первой точки пересечения луча с треугольником. Поэтому система AVALON подразделяет всю сцену на адаптивную трехмерную сетку.”
На данный момент уже есть 21 игра, поддерживающая Ray tracing. И эта цифра будет быстро расти. Так как внедрение этой технологии не требует больших затрат.
По сути, этот метод проще реализовать, чем возиться с шейдерами и оптимизацией полигонов. AMD, кстати, тоже заявила о поддержке трассировки лучей в реальном времени, но пока не показала видеокарт, у которых был бы отдельный вычислительный блок для этого.
Помимо красивого освещения, которое не будет отражаться на производительности видеокарты, блок Ray tracing сможет просчитывать и смежные задачи.
Если он вычисляет движение фотонов, то что мешает применять его для вычисления распространения звуковых волн, траекторий пуль или взгляда ботов.
В общем, это должно добавить больше реализма и при этом освободить ресурсы центрального процессора для других задач.
В свою очередь тензорные ядра должны обеспечить просчёт сложных эффектов, нового типа сглаживания Deep Learning Super Sampling (DLSS), и, возможно, даже поведения персонажей в играх.
В общем, с учётом, что ранее эти же ядра применялись для работы искусственного интеллекта в беспилотных автомобилях, при прогнозировании климатических условий и разработке лекарств от рака, область применения тензорных ядер может быть шире, чем мы думаем.
Главное, чтобы майнеры не сразу додумались, как это использовать для своих гнусных целей.
В целом, архитектура новых видеокарт очень интересная, а производительность обещают в два раза выше, чем у предыдущего поколения. Так что я жду не дождусь возможности проверить их в деле.