Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

sultim-t/RayTracedGL1

Repository files navigation

RTGL1

RTGL1 is a library that aims to simplify the process of porting 3D applications to real-time path tracing, via hardware accelerated ray tracing, denoising algorithms (A-SVGF) and sampling algorithms (ReSTIR, ReSTIR GI) to improve the image quality by reusing spatio-temporal data.

Build

  1. Requirements:

  2. Clone the repository

    • git clone https://github.com/sultim-t/RayTracedGL1.git
  3. Configure with CMake

    • on Windows, with Visual Studio:
      • open the folder as CMake project
    • otherwise:
      • specify windowing systems to build the library with, by enabling some of the CMake options:
        • RG_WITH_SURFACE_WIN32
        • RG_WITH_SURFACE_METAL
        • RG_WITH_SURFACE_WAYLAND
        • RG_WITH_SURFACE_XCB
        • RG_WITH_SURFACE_XLIB
      • configure
      mkdir Build
      cd Build
      cmake ..
      
      • but make sure that projects that use RTGL1 can find the compiled dynamic library, as it usually assumed that it's in Build/x64-Debug or Build/x64-Release
  4. Build

    • cmake --build .

Notes:

  • RTGL1 requires a set of blue noise images on start-up: RgInstanceCreateInfo::pBlueNoiseFilePath. A ready-to-use resource can be found here: Tools/BlueNoise_LDR_RGBA_128.ktx2

Tools

Shader development

RTGL1 supports shader hot-reloading (a target application sets RgStartFrameInfo::requestShaderReload=true in runtime).

But to ease the process of building the shaders, instead of running GenerateShaders.py from a terminal manually, you can install Visual Studio Code and Script Runner extension to it. Open Sources/Shaders folder, add such config to VS Code's .json settings file (TODO: VS Code workspace).

"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}", } ], },

Then assign hotkeys to shaderBuild and shaderGenAndBuild commands in File->Preferences->Keyboard Shortcuts.

Textures

Some games don't have PBR materials, but to add them, RTGL1 provides 'texture overriding' functionality: application requests to upload an original texture and specifies its name, then RTGL1 tries to find files with such name (appending some suffixes, e.g. _n for normal maps, or none for albedo maps) and loads them instead of original ones. These files are in .ktx2 format with a specific compression and contain image data.

To generate such textures:

  1. Compressonator CLI and Python3 are required
  2. Create a folder, put Tools/CreateKTX2.py, create folder named Raw and Compressed.
  3. The script:
    1. scans files (with INPUT_EXTENSIONS) in Raw folder
    2. generates corresponding .ktx2 file to Compressed folder, preserving the hierarchy

On RTGL1 initialization, RgInstanceCreateInfo::pOverridenTexturesFolderPath should contain a path to the Compressed folder.

Projects

AltStyle によって変換されたページ (->オリジナル) /