RTGL1 ist eine Bibliothek, die darauf abzielt, den Prozess der Portierung von 3D-Anwendungen auf Echtzeit-Pfadverfolgung über hardwarebeschleunigtes Raytracing, Rauschunterdrückungsalgorithmen (A-SVGF) und Sampling-Algorithmen (ReSTIR, ReSTIR GI) zu vereinfachen, um die Bildqualität durch Wiederverwendung zu verbessern räumlich-zeitliche Daten.
Anforderungen:
Klonen Sie das Repository
git clone https://github.com/sultim-t/RayTracedGL1.git
Konfigurieren Sie mit 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
oder Build/x64-Release
befindetBauen
cmake --build .
Erstellen Sie Shader
Source/Shaders/GenerateShaders.py
mit Python3 aus. Es werden SPIR-V-Dateien im Build
-Ordner generiertRgInstanceCreateInfo::pBlueNoiseFilePath
. Eine gebrauchsfertige Ressource finden Sie hier: Tools/BlueNoise_LDR_RGBA_128.ktx2
RTGL1 unterstützt Shader-Hot-Reloading (eine Zielanwendung legt RgStartFrameInfo::requestShaderReload=true
zur Laufzeit fest).
Um den Prozess der Erstellung der Shader zu vereinfachen, können Sie GenerateShaders.py
nicht manuell über ein Terminal ausführen, sondern Visual Studio Code und die Script Runner-Erweiterung installieren. Öffnen Sie den Ordner Sources/Shaders
und fügen Sie diese Konfiguration zur .json
Einstellungsdatei von VS Code hinzu (TODO: VS Code-Arbeitsbereich).
"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}", } ], },
Weisen Sie dann den Befehlen shaderBuild
und shaderGenAndBuild
unter File->Preferences->Keyboard Shortcuts
Hotkeys zu.
Einige Spiele verfügen nicht über PBR-Materialien, aber um diese hinzuzufügen, bietet RTGL1 die Funktionalität zum Überschreiben von Texturen: Die Anwendung fordert das Hochladen einer Originaltextur an und gibt ihren Namen an. Anschließend versucht RTGL1, Dateien mit diesem Namen zu finden (und fügt einige Suffixe an, z. B. _n
. für Normalkarten oder keine für Albedokarten) und lädt sie anstelle der Originalkarten. Diese Dateien liegen im .ktx2
Format mit einer bestimmten Komprimierung vor und enthalten Bilddaten.
Um solche Texturen zu erzeugen:
Python3
sind erforderlichTools/CreateKTX2.py
ab und erstellen Sie einen Ordner mit dem Namen Raw
and Compressed
.INPUT_EXTENSIONS
) im Raw
-Ordner.ktx2
Datei im Compressed
Ordner und behält dabei die Hierarchie bei Bei der RTGL1-Initialisierung sollte RgInstanceCreateInfo::pOverridenTexturesFolderPath
einen Pfad zum Compressed
Ordner enthalten.