RTGL1 é uma biblioteca que visa simplificar o processo de portabilidade de aplicações 3D para path tracing em tempo real , via ray tracing acelerado por hardware, algoritmos de remoção de ruído (A-SVGF) e algoritmos de amostragem (ReSTIR, ReSTIR GI) para melhorar a qualidade da imagem reutilizando dados espaço-temporais.
Requisitos:
Clonar o repositório
git clone https://github.com/sultim-t/RayTracedGL1.git
Configurar com 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
Construir
cmake --build .
Construir sombreadores
Source/Shaders/GenerateShaders.py
com Python3, ele irá gerar arquivos SPIR-V para a pasta Build
RgInstanceCreateInfo::pBlueNoiseFilePath
. Um recurso pronto para uso pode ser encontrado aqui: Tools/BlueNoise_LDR_RGBA_128.ktx2
RTGL1 oferece suporte ao recarregamento a quente do shader (um aplicativo de destino define RgStartFrameInfo::requestShaderReload=true
em tempo de execução).
Mas para facilitar o processo de construção dos shaders, em vez de executar GenerateShaders.py
manualmente a partir de um terminal, você pode instalar o Visual Studio Code e a extensão Script Runner nele. Abra a pasta Sources/Shaders
, adicione essa configuração ao arquivo de configurações .json
do VS Code (TODO: espaço de trabalho do 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}", } ], },
Em seguida, atribua teclas de atalho aos comandos shaderBuild
e shaderGenAndBuild
em File->Preferences->Keyboard Shortcuts
.
Alguns jogos não possuem materiais PBR, mas para adicioná-los, o RTGL1 fornece a funcionalidade de 'substituição de textura': o aplicativo solicita o upload de uma textura original e especifica seu nome, então o RTGL1 tenta encontrar arquivos com esse nome (anexando alguns sufixos, por exemplo, _n
para mapas normais ou nenhum para mapas de albedo) e os carrega em vez dos originais. Esses arquivos estão no formato .ktx2
com compactação específica e contêm dados de imagem.
Para gerar tais texturas:
Python3
são necessáriosTools/CreateKTX2.py
, crie uma pasta chamada Raw
e Compressed
.INPUT_EXTENSIONS
) na pasta Raw
.ktx2
correspondente à pasta Compressed
, preservando a hierarquia Na inicialização do RTGL1, RgInstanceCreateInfo::pOverridenTexturesFolderPath
deve conter um caminho para a pasta Compressed
.