This is the source code for the path tracing application described in the SIGGRAPH Asia 2024 paper
GPU Coroutines for Flexible Splitting and Scheduling of Rendering Tasks
For the underlying computing framework, LuisaCompute's coroutine version, please refer to LuisaCompute-coroutine.
⚠️ Note: we have archived this repository as we are re-designing the IR layer for the main-stream LuisaCompute. The coroutine features will be re-implemented on that new IR in the future.
LuisaRender is a high-performance cross-platform Monte-Carlo renderer for stream architectures based on LuisaCompute.
LuisaRender is also the rendering application described in the SIGGRAPH Asia 2022 paper
LuisaRender: A High-Performance Rendering Framework with Layered and Unified Interfaces on Stream Architectures.
See also LuisaCompute for the underlying framework as described in the paper; and please visit the project page for other information about the paper and the project.
LuisaRender follows the standard CMake build process. Basically these steps:
-
Check your hardware and platform. Currently, we support CUDA on Linux and Windows; DirectX on Windows; Metal on macOS; and ISPC and LLVM on all the major platforms. For CUDA and DirectX, an RTX-enabled graphics card, e.g., NVIDIA RTX 20 and 30 series, is required.
-
Prepare the environment and dependencies. We recommend using the latest IDEs, Compilers, CMake, CUDA drivers, etc. Since we aggressively use new technologies like C++20 and OptiX 7.1+, you may need to, for example, upgrade your VS to 2019 or 2022, and install CUDA 11.2+.
-
Clone the repo with the
--recursive
option:git clone --recursive https://github.com/LuisaGroup/LuisaRender.git
Since we use Git submodules to manage third-party dependencies, a
--recursive
clone is required. -
Configure the project using CMake. E.g., for command line,
cd
into the project folder and typecmake -S . -B <build-folder>
. You might also want to specify your favorite generators and build types using options like-G Ninja
and-D CMAKE_BUILD_TYPE=Release
. A typical, full command sequence for this would be likecd LuisaRender cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
-
If the configuration succeeds, you are now able to build the project. Type
cmake --build <build-folder>
in the command line, or push the build button if you generated, e.g., a VS project. (And in case the configuration step unluckily failed :-(, please file an issue). -
After building, you will find the CLI executable at
<build-folder>/bin/luisa-render-cli
.
See also BUILD.md for details on platform requirements, configuration options, and other precautions.
Use command line to execute LuisaRender:
<build-fodler>/bin/luisa-render-cli -b <backend> [-d <device-index>] <scene-file>
To print the help message about the command line arguments, simply type
<build-fodler>/bin/luisa-render-cli -h
or
<build-fodler>/bin/luisa-render-cli --help
LuisaRender supports a JSON-based and a custom text-based formats for scene description. We maintain the demo scenes in a separate repo. We sincerely thank all the authors, Rendering Resources, Poly Heaven, and Blender Demo Files for sharing these amazing resources.
We also provide a simple script at tools/tungsten2luisa.py
to convert Tungsten scenes into LuisaRender's custom scene description language; and a CLI application at src/apps/export.cpp
(compiled to <build-folder>/bin/luisa-render-export
) to convert glTF scenes to LuisaRender's JSON-based format. But please note that both tools are not perfect. Manual tweaks are sometimes necessary to fix conversion errors and/or align the converted scenes to their original appearances.
Download: LuisaRender
- Credit: Mareck (CC0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1024x1024
- Samples: 65536
- Tonemapping: ACES (exposure = -0.5)
Download: LuisaRender
- Credit: SlykDrako (CC0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1280x720
- Samples: 65536
- Tonemapping: Uncharted2
Download: LuisaRender
- Credit: All resources in the scene are from Poly Heaven (CC0, see the contained
README.txt
for the detail of each resource) - Resolution: 3840x2160
- Samples: 65536
- Tonemapping: Uncharted2
Download: LuisaRender
- Credit: Jay-Artist (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1280x720
- Samples: 65536
- Tonemapping: ACES
Download: LuisaRender
- Credit: thecali (CC0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1920x1080
- Samples: 16384
- Tonemapping: Uncharted2
Download: LuisaRender
- Credit: NewSee2l035 (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1024x1024
- Samples: 65536
- Tonemapping: Uncharted2 (exposure = +1)
Download: LuisaRender
- Credit: Wig42 (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1080x1920
- Samples: 16384
- Tonemapping: Uncharted2 (exposure = +0.5)
Download: LuisaRender
- Credit: cekuhnen (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1200x1800
- Samples: 16384
- Tonemapping: Uncharted2 (exposure = +0.5)
Download: LuisaRender
- Credit: NovaZeeke (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1920x1080
- Samples: 16384
- Tonemapping: Uncharted2 (exposure = +0.5)
Download: LuisaRender
- Credit: Wig42 (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1920x1080
- Samples: 16384
- Tonemapping: Uncharted2 (exposure = +0.5)
Download: LuisaRender
- Credit: Wig42 (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1920x1080
- Samples: 16384
- Tonemapping: Uncharted2 (exposure = +0.5)
Download: LuisaRender
- Credit: Jay-Artist (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1280x720
- Samples: 65536
- Tonemapping: ACES (exposure = +0.5)
Download: LuisaRender
- Credit: Wig42 (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1280x720
- Samples: 65536
- Tonemapping: Uncharted2
Download: LuisaRender
- Credit: aXel (CC0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1920x1080
- Samples: 16384
- Tonemapping: Uncharted2
Download: LuisaRender
- Credit: nacimus (CC BY 3.0)
- Converted from Tungsten version at Rendering Resources
- Resolution: 1280x720
- Samples: 65536
- Tonemapping: Uncharted2 (exposure = +1)
Download: LuisaRender
- Credit: Carlo Bergonzini / Monorender (CC-BY)
- Converted from Blender Cycles format at Blender Demo Files
- Resolution: 6000x4000
- Samples: 65536
- Tonemapping: Uncharted2 (exposure = +1)
Download: LuisaRender
- Credit: Blender Studio (CC0)
- Converted from Blender Cycles format at Blender Demo Files
- Resolution: 3840x2160
- Samples: 1024
- Tonemapping: Uncharted2 (exposure = +1)
Download: LuisaRender
- Credit: Akshaykhedkar97 (CC BY 4.0)
- Resolution: 1920x1080
- Samples: 1024
- Tonemapping: Uncharted2 (exposure = +0.5)
Download: LuisaRender
- Credit: eric3dee (CC BY 4.0)
- Camera and environment configuration from GLSL-PathTracer
- Resolution: 1920x1080
- Samples: 4096
- Tonemapping: Uncharted2