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
文件夹的路径。