RTGL1 adalah perpustakaan yang bertujuan untuk menyederhanakan proses porting aplikasi 3D ke penelusuran jalur waktu nyata , melalui penelusuran sinar yang dipercepat perangkat keras, algoritma denoising (A-SVGF) dan algoritma pengambilan sampel (ReSTIR, ReSTIR GI) untuk meningkatkan kualitas gambar dengan menggunakan kembali data spatio-temporal.
Persyaratan:
Kloning repositori
git clone https://github.com/sultim-t/RayTracedGL1.git
Konfigurasikan dengan 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
atau Build/x64-Release
Membangun
cmake --build .
Bangun shader
Source/Shaders/GenerateShaders.py
dengan Python3, itu akan menghasilkan file SPIR-V ke folder Build
RgInstanceCreateInfo::pBlueNoiseFilePath
. Sumber daya yang siap digunakan dapat ditemukan di sini: Tools/BlueNoise_LDR_RGBA_128.ktx2
RTGL1 mendukung hot-reload shader (aplikasi target menetapkan RgStartFrameInfo::requestShaderReload=true
saat runtime).
Namun untuk memudahkan proses pembuatan shader, daripada menjalankan GenerateShaders.py
dari terminal secara manual, Anda dapat menginstal ekstensi Visual Studio Code dan Script Runner ke dalamnya. Buka folder Sources/Shaders
, tambahkan konfigurasi tersebut ke file pengaturan .json
VS Code (TODO: ruang kerja 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}", } ], },
Kemudian tetapkan tombol pintas ke perintah shaderBuild
dan shaderGenAndBuild
di File->Preferences->Keyboard Shortcuts
.
Beberapa game tidak memiliki material PBR, namun untuk menambahkannya, RTGL1 menyediakan fungsionalitas 'texture overriding': aplikasi meminta untuk mengunggah tekstur asli dan menentukan namanya, lalu RTGL1 mencoba mencari file dengan nama tersebut (menambahkan beberapa sufiks, misalnya _n
untuk peta normal, atau tidak sama sekali untuk peta albedo) dan memuatnya alih-alih peta asli. File-file ini berformat .ktx2
dengan kompresi tertentu dan berisi data gambar.
Untuk menghasilkan tekstur seperti itu:
Python3
diperlukanTools/CreateKTX2.py
, buat folder bernama Raw
and Compressed
.INPUT_EXTENSIONS
) di folder Raw
.ktx2
yang sesuai ke folder Compressed
, menjaga hierarki Pada inisialisasi RTGL1, RgInstanceCreateInfo::pOverridenTexturesFolderPath
harus berisi jalur ke folder Compressed
.