RT-ядра
RT-ядро — это специализированное вычислительное ядро (исполнительное устройство) в составе графического процессора (GPU), предназначенное для аппаратного ускорения вычислений, связанных с трассировкой лучей (ray tracing). RT-ядра выполняют операции пересечения лучей с ограничивающими объёмами (bounding volume hierarchy, BVH) и треугольниками, что позволяет значительно ускорить рендеринг фотореалистичных изображений в реальном времени по сравнению с программной реализацией на универсальных шейдерных ядрах.
История
Предпосылки появления
Трассировка лучей как метод рендеринга известна с 1960-х годов. Однако до конца 2010-х годов её применение в реальном времени было ограничено из-за высокой вычислительной сложности. Основная нагрузка при трассировке лучей приходится на тесты пересечения лучей с геометрией сцены, которые плохо параллелятся на традиционных шейдерных процессорах (CUDA-ядрах, потоковых процессорах). Для ускорения этих вычислений требовалась специализированная аппаратура.
Первое поколение (NVIDIA Turing, 2018)
Первыми коммерческими GPU с выделенными RT-ядрами стали видеокарты NVIDIA серии GeForce 20 (архитектура Turing), представленные в августе 2018 года. Архитектура Turing включала блоки RT Cores, способные выполнять до 10 гигапересечений лучей в секунду. Это позволило впервые реализовать трассировку лучей в реальном времени в играх (например, Battlefield V).
Второе поколение (NVIDIA Ampere, 2020)
В архитектуре Ampere (GeForce RTX 30) RT-ядра были улучшены: добавлена поддержка операций с динамической геометрией, увеличена пропускная способность (до 2× по сравнению с Turing). Также появилась возможность выполнять интерполяцию лучей для снижения шума.
Третье поколение (NVIDIA Ada Lovelace, 2022)
Архитектура Ada Lovelace (GeForce RTX 40) представила RT-ядра третьего поколения с поддержкой технологии Shader Execution Reordering (SER), которая переупорядочивает шейдерные потоки для повышения эффективности обработки лучей. Производительность пересечений лучей выросла до 200 гигапересечений в секунду.
Четвёртое поколение (NVIDIA Blackwell, 2024)
В архитектуре Blackwell (GeForce RTX 50) RT-ядра получили поддержку аппаратного ускорения для трассировки лучей с учётом нескольких отражений и преломлений (multi-bounce). Также реализована функция «мега-геометрия» для эффективной обработки сцен с миллиардами полигонов.
Конкуренты
- AMD (RDNA 2, 2020) — в архитектуре RDNA 2 (Radeon RX 6000) появились блоки Ray Accelerators, которые являются частью вычислительных блоков (Compute Units) и выполняют функции, аналогичные RT-ядрам NVIDIA. Производительность уступала решениям NVIDIA того же поколения.
- Intel (Xe HPG, 2022) — в архитектуре Alchemist (Arc A-series) реализованы аппаратные блоки трассировки лучей (Ray Tracing Units), работающие в связке с трассировщиками лучей на уровне драйвера.
Устройство и принцип работы
Архитектура RT-ядра
RT-ядро представляет собой конечный автомат, специализированный на двух основных операциях:
- Пересечение луча с ограничивающим объёмом (box test) — проверка, пересекает ли луч прямоугольный параллелепипед (bounding box) узла BVH.
- Пересечение луча с треугольником (triangle test) — проверка, пересекает ли луч конкретный треугольник, и вычисление точки пересечения.
RT-ядро оперирует с фиксированной точностью (обычно 32-битные числа с плавающей запятой) и не предназначено для выполнения произвольных шейдерных вычислений.
Взаимодействие с шейдерными ядрами
Процесс трассировки лучей в GPU с RT-ядрами выглядит следующим образом:
- Шейдерная программа (например, HLSL/GLSL) запускает луч.
- Данные луча передаются в RT-ядро, которое выполняет обход BVH-дерева.
- RT-ядро возвращает результат (попадание или промах) и координаты пересечения.
- Шейдерное ядро обрабатывает результат (вычисляет цвет, запускает вторичные лучи).
Структура BVH
RT-ядра работают с иерархией ограничивающих объёмов (BVH), которая строится на этапе предварительной обработки сцены. BVH представляет собой бинарное дерево, где каждый узел — это ограничивающий параллелепипед, содержащий дочерние узлы или треугольники. RT-ядро выполняет обход дерева, начиная с корневого узла, и отсекает ветви, не пересекаемые лучом.
Классификация
По поколениям
- RT-ядра 1-го поколения (Turing) — базовые операции box test и triangle test, поддержка статической геометрии.
- RT-ядра 2-го поколения (Ampere) — улучшенная производительность, поддержка динамической геометрии, аппаратное ускорение для теней и отражений.
- RT-ядра 3-го поколения (Ada Lovelace) — SER, поддержка трассировки с несколькими отражениями, улучшенная работа с полупрозрачными объектами.
- RT-ядра 4-го поколения (Blackwell) — аппаратное ускорение multi-bounce, мега-геометрия.
По производителю
- NVIDIA — доминирующий игрок, RT-ядра интегрированы во все современные GPU GeForce RTX и Quadro RTX.
- AMD — Ray Accelerators в составе Compute Units, менее производительны, но более гибки.
- Intel — Ray Tracing Units в архитектуре Xe HPG, ограниченная поддержка на старте.
Применение
Компьютерные игры
Основное применение RT-ядер — игровой рендеринг. Технологии, использующие RT-ядра:
- Ray-traced shadows — тени с мягкими краями и точной геометрией.
- Ray-traced reflections — отражения на поверхностях (зеркала, вода, металл).
- Ray-traced global illumination — глобальное освещение с учётом многократных отражений света.
- Ray-traced ambient occlusion — окклюзия окружения, улучшающая реалистичность теней в углах и щелях.
Профессиональная 3D-графика
RT-ядра используются в программах для рендеринга (например, Blender, Autodesk Maya, Chaos V-Ray) для ускорения финального рендеринга и интерактивного просмотра сцен.
Научные вычисления
Хотя RT-ядра оптимизированы для графики, они могут применяться в задачах, сводящихся к поиску пересечений (например, моделирование распространения волн, трассировка частиц в физике).
Критика и ограничения
Аппаратная специализация
RT-ядра занимают значительную площадь кристалла GPU, что увеличивает стоимость и энергопотребление. Критики (в том числе компания AMD) утверждают, что более эффективным подходом является использование универсальных вычислительных блоков с программной трассировкой лучей, особенно при низкой плотности лучей.
Ограниченная гибкость
RT-ядра выполняют только фиксированные операции пересечения. Для сложных эффектов (например, объёмное рассеяние, каустика) требуется дополнительная обработка на шейдерных ядрах, что снижает общую эффективность.
Зависимость от BVH
Качество и производительность трассировки лучей сильно зависят от качества построения BVH. Плохо построенное дерево может привести к снижению производительности, несмотря на аппаратное ускорение.
Отсутствие стандартизации
RT-ядра разных производителей имеют различные API и возможности. Это усложняет разработку кроссплатформенных приложений. Основные API (DirectX Raytracing, Vulkan Ray Tracing, OptiX) абстрагируют часть различий, но не полностью.
Интересные факты
- Первым GPU с аппаратной трассировкой лучей стал NVIDIA Quadro GV100 (2017), но он не имел выделенных RT-ядер — использовал тензорные ядра для ускорения.
- В архитектуре NVIDIA Turing RT-ядра занимают около 10–15% площади кристалла GPU.
- Технология DLSS (Deep Learning Super Sampling) часто используется совместно с RT-ядрами для повышения производительности: рендеринг с низким разрешением с трассировкой лучей, затем масштабирование с помощью ИИ.
- В консолях PlayStation 5 и Xbox Series X/S также используются аппаратные блоки трассировки лучей, аналогичные RT-ядрам.
Источники
- NVIDIA Developer Documentation: «RTX Platform» (2018–2024)
- AMD RDNA 2 Architecture Whitepaper (2020)
- Intel Xe HPG Architecture Overview (2022)
- DirectX Raytracing (DXR) Specification (Microsoft, 2018)
- Vulkan Ray Tracing Extension Specification (Khronos Group, 2020)
- Статья «Ray Tracing on NVIDIA GPUs» (ACM Transactions on Graphics, 2019)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →