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
,它將產生SPIR-V檔案到Build
資料夾RgInstanceCreateInfo::pBlueNoiseFilePath
。現成的資源可在此處找到: Tools/BlueNoise_LDR_RGBA_128.ktx2
RTGL1 支援著色器熱重載(目標應用程式在執行時設定RgStartFrameInfo::requestShaderReload=true
)。
但為了簡化建置著色器的過程,您可以安裝 Visual Studio Code 和 Script Runner 擴展,而不是從終端手動執行GenerateShaders.py
。開啟Sources/Shaders
資料夾,將此類配置新增至 VS Code 的.json
設定檔(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}", } ], },
然後在File->Preferences->Keyboard Shortcuts
中將熱鍵分配給shaderBuild
和shaderGenAndBuild
指令。
有些遊戲沒有 PBR 材質,但為了添加它們,RTGL1 提供了「紋理覆蓋」功能:應用程式要求上傳原始紋理並指定其名稱,然後 RTGL1 嘗試尋找具有該名稱的檔案(附加一些後綴,例如_n
對於法線貼圖,或對於反照率貼圖沒有)並加載它們而不是原始貼圖。這些檔案採用特定壓縮的.ktx2
格式,並包含影像資料。
要生成這樣的紋理:
Python3
Tools/CreateKTX2.py
,建立名為Raw
和Compressed
資料夾。Raw
資料夾中的檔案(使用INPUT_EXTENSIONS
).ktx2
檔案到Compressed
資料夾,保留層次結構在 RTGL1 初始化時, RgInstanceCreateInfo::pOverridenTexturesFolderPath
應包含Compressed
資料夾的路徑。