RayTracerRTX – приложение для рендеринга трёхмерных сцен методом трассировки лучей на GPU NVIDIA RTX. Расчёт кадра выполняется средствами NVIDIA OptiX и CUDA, окно приложения и пользовательская панель построены на GLFW, OpenGL и Dear ImGui.
Проект реализован на C++20 для Windows x64. Приложение загружает сцену, подготавливает геометрию и материалы, строит структуры ускорения OptiX, запускает трассировку лучей и выводит рассчитанный кадр в окно.
- GPU-рендеринг через NVIDIA OptiX и CUDA;
- трассировка лучей для сфер и полигональных моделей;
- расчёт освещения, теней, отражений и преломлений;
- режим реального времени и прогрессивное накопление кадра;
- шумоподавитель OptiX для прогрессивного режима;
- загрузка OBJ/MTL и glTF/GLB;
- загрузка текстур PNG, JPG и PPM;
- материалы: матовый, металлический, зеркальный и стеклянный;
- сохранение и загрузка JSON-сцен;
- редактор сцены с изменением объектов, материалов, света, камеры и параметров рендера;
- строка статистики с FPS, GPU time, числом объектов и треугольников;
- модульные тесты, компонентные проверки и GPU smoke-тесты.
| Компонент | Назначение |
|---|---|
| C++20 | основная реализация приложения |
| NVIDIA OptiX | запуск трассировки лучей и работа со структурами ускорения |
| CUDA | работа с памятью видеокарты и GPU-буферами |
| GLFW | создание окна и обработка ввода |
| OpenGL | вывод рассчитанного изображения |
| Dear ImGui | панель управления сценой |
| Visual Studio 2022, MSBuild | сборка проекта |
| Docker, Docker Compose | вспомогательные проверки окружения и документации |
- Windows 10/11 x64;
- видеокарта NVIDIA RTX;
- драйвер NVIDIA с поддержкой CUDA;
- Visual Studio 2022;
- CUDA Toolkit 13.1;
- NVIDIA OptiX SDK 9.1.0.
Пути к CUDA Toolkit и NVIDIA OptiX SDK задаются в свойствах проекта Visual Studio. При нестандартной установке OptiX нужно обновить путь к каталогу SDK в настройках проекта.
Откройте RayTracerRTX.sln в Visual Studio 2022 и соберите конфигурацию Debug|x64 или Release|x64.
Сборка из PowerShell:
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" RayTracerRTX.sln /m /p:Configuration=Debug /p:Platform=x64Исполняемый файл после сборки:
x64/Debug/RayTracerRTX.exe
Запуск приложения:
.\x64\Debug\RayTracerRTX.exeЗапуск с JSON-сценой:
.\x64\Debug\RayTracerRTX.exe --scene RayTracerRTX\assets\scenes\material_room_scene.jsonЗапуск с OBJ-моделью:
.\x64\Debug\RayTracerRTX.exe --mesh RayTracerRTX\assets\meshes\demo.obj| Ввод | Действие |
|---|---|
W/A/S/D |
перемещение камеры |
Space |
перемещение камеры вверх |
Shift |
ускорение движения камеры |
| мышь | поворот камеры при активном управлении |
H |
показать или скрыть панель сцены |
G |
переключить демонстрационную сцену |
C |
сбросить камеру и свет текущей сцены |
F5 |
перезагрузить текущую JSON-сцену |
Q |
переключить качество рендера |
P |
переключить режим реального времени и режим накопления |
N |
включить или выключить шумоподавитель OptiX |
Esc |
закрыть приложение |
Поддерживаемые форматы:
json– описание сцены, камеры, света, окружения, объектов и материалов;obj,mtl– полигональные модели, материалы и ссылки на текстуры;gltf,glb– модели с геометрией, материалами, текстурами и трансформациями узлов;png,jpg,ppm– текстуры материалов.
Ограничения загрузчиков:
- многоугольники OBJ разбиваются на треугольники fan-методом;
- glTF/GLB загружает статическую геометрию, материалы, текстуры и простые трансформации;
- анимации, skinning и morph targets не входят в поддерживаемый набор glTF/GLB;
- embedded base64 buffers в glTF не используются.
.
|-- RayTracerRTX.sln
|-- RayTracerRTX/
| |-- src/
| | |-- app/ # приложение, сцена, редактор, камера, загрузчики, UI
| | |-- gpu/ # OptiX/CUDA-рендерер и GPU-программы
| | `-- common/ # общие структуры для CPU- и GPU-кода
| |-- assets/
| | |-- meshes/ # демонстрационные модели и текстуры
| | `-- scenes/ # JSON-сцены
| |-- docs/ # архитектура, API, анализ, производительность
| `-- tests/ # тестовое приложение
|-- scripts/
|-- Dockerfile
`-- docker-compose.yml
Сборка тестового проекта:
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" RayTracerRTX\tests\RayTracerRTX.Tests.sln /m /p:Configuration=Debug /p:Platform=x64Запуск тестов:
.\RayTracerRTX\tests\x64\Debug\RayTracerRTX.Tests.exeКонтрольная строка успешного запуска:
All tests passed. Tests: 166, skipped: 0, checks: 810
GPU smoke-тесты требуют видеокарту NVIDIA с поддержкой используемой версии CUDA и OptiX.
- Архитектура
- API
- Статический анализ
- Результаты производительности
- Зависимости
- Docker-проверка
- Применение AI-инструментов
Docker используется для вспомогательных проверок. Интерактивный запуск OptiX-приложения выполняется в Windows, поскольку программе нужны локальный драйвер NVIDIA, доступ к GPU и графическое окно.
