RTGL1 est une bibliothèque qui vise à simplifier le processus de portage d'applications 3D vers le traçage de chemin en temps réel , via le traçage de rayons accéléré matériellement, des algorithmes de débruitage (A-SVGF) et des algorithmes d'échantillonnage (ReSTIR, ReSTIR GI) pour améliorer la qualité de l'image en réutilisant données spatio-temporelles.
Exigences:
Cloner le référentiel
git clone https://github.com/sultim-t/RayTracedGL1.git
Configurer avec 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
ou Build/x64-Release
Construire
cmake --build .
Construire des shaders
Source/Shaders/GenerateShaders.py
avec Python3, cela générera des fichiers SPIR-V dans le dossier Build
RgInstanceCreateInfo::pBlueNoiseFilePath
. Une ressource prête à l'emploi peut être trouvée ici : Tools/BlueNoise_LDR_RGBA_128.ktx2
RTGL1 prend en charge le rechargement à chaud des shaders (une application cible définit RgStartFrameInfo::requestShaderReload=true
lors de l'exécution).
Mais pour faciliter le processus de création des shaders, au lieu d'exécuter manuellement GenerateShaders.py
à partir d'un terminal, vous pouvez y installer Visual Studio Code et l'extension Script Runner. Ouvrez le dossier Sources/Shaders
, ajoutez cette configuration au fichier de paramètres .json
de VS Code (TODO : espace de travail 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}", } ], },
Attribuez ensuite des raccourcis clavier aux commandes shaderBuild
et shaderGenAndBuild
dans File->Preferences->Keyboard Shortcuts
.
Certains jeux n'ont pas de matériaux PBR, mais pour les ajouter, RTGL1 fournit une fonctionnalité de « remplacement de texture » : l'application demande de télécharger une texture originale et spécifie son nom, puis RTGL1 essaie de trouver des fichiers portant ce nom (en ajoutant quelques suffixes, par exemple _n
pour les cartes normales, ou aucune pour les cartes d'albédo) et les charge à la place des cartes originales. Ces fichiers sont au format .ktx2
avec une compression spécifique et contiennent des données d'image.
Pour générer de telles textures :
Python3
sont requisTools/CreateKTX2.py
, créez un dossier nommé Raw
and Compressed
.INPUT_EXTENSIONS
) dans le dossier Raw
.ktx2
correspondant dans le dossier Compressed
, en préservant la hiérarchie Lors de l'initialisation RTGL1, RgInstanceCreateInfo::pOverridenTexturesFolderPath
doit contenir un chemin d'accès au dossier Compressed
.