RTGL1 — это библиотека, целью которой является упрощение процесса переноса 3D-приложений на трассировку пути в реальном времени с помощью аппаратно ускоренной трассировки лучей, алгоритмов шумоподавления (A-SVGF) и алгоритмов выборки (ReSTIR, ReSTIR GI) для улучшения качества изображения за счет повторного использования. пространственно-временные данные.
Требования:
Клонировать репозиторий
git clone https://github.com/sultim-t/RayTracedGL1.git
Настройка с помощью CMake
RG_WITH_SURFACE_WIN32
RG_WITH_SURFACE_METAL
RG_WITH_SURFACE_WAYLAND
RG_WITH_SURFACE_XCB
RG_WITH_SURFACE_XLIB
mkdir Build
cd Build
cmake ..
Build/x64-Debug
или Build/x64-Release
Строить
cmake --build .
Создание шейдеров
Source/Shaders/GenerateShaders.py
с помощью Python3, он сгенерирует файлы SPIR-V в папку Build
.RgInstanceCreateInfo::pBlueNoiseFilePath
. Готовый к использованию ресурс можно найти здесь: Tools/BlueNoise_LDR_RGBA_128.ktx2
RTGL1 поддерживает горячую перезагрузку шейдеров (целевое приложение устанавливает RgStartFrameInfo::requestShaderReload=true
во время выполнения).
Но чтобы облегчить процесс создания шейдеров, вместо запуска GenerateShaders.py
из терминала вручную вы можете установить к нему расширение Visual Studio Code и Script Runner. Откройте папку Sources/Shaders
, добавьте такую конфигурацию в файл настроек .json
VS Code (TODO: рабочая область VS Code).
"script-runner.definitions": { "commands": [ { "identifier": "shaderBuild", "description": "Build shaders", "command": "cls; python .\GenerateShaders.py -ps", "working_directory": "${workspaceFolder}", }, { "identifier": "shaderGenAndBuild", "description": "Build shaders with generating common files", "command": "cls; python .\GenerateShaders.py -ps -g", "working_directory": "${workspaceFolder}", } ], },
Затем назначьте горячие клавиши shaderBuild
shaderGenAndBuild
в меню File->Preferences->Keyboard Shortcuts
.
В некоторых играх нет материалов PBR, но для их добавления RTGL1 предоставляет функцию «переопределения текстуры»: приложение запрашивает загрузку исходной текстуры и указывает ее имя, затем RTGL1 пытается найти файлы с таким именем (добавляя некоторые суффиксы, например _n
для нормальных карт или none для карт альбедо) и загружает их вместо оригинальных. Эти файлы имеют формат .ktx2
со специальным сжатием и содержат данные изображения.
Чтобы создать такие текстуры:
Python3
Tools/CreateKTX2.py
, создайте папку с именем Raw
and Compressed
.INPUT_EXTENSIONS
) в папке Raw
.ktx2
в папке Compressed
, сохраняя иерархию При инициализации RTGL1 RgInstanceCreateInfo::pOverridenTexturesFolderPath
должен содержать путь к папке Compressed
.