RenderToy is an experimental path tracing rendering library for academic purposes.
- Highly abstracted mathematics module.
- Modern color system with multiple color standards.
- ITU-R BT.709
- ITU-R BT.601
- ITU-R BT.2020
- SMPTE 240M
- Fully multi-threaded path-traced GI.
- Direct Light Sampling (DLS).
- It also produces fast-GI results.
- Disney PBR BSDF.
- Multiple importance sampling (MIS).
- Direct Light Sampling (DLS).
- Triangulated mesh system.
- Bounding Volume Hierarchy (BVH) acceleration structure.
- Physically-based perspective camera.
- Presets:
- Academy Format.
- IMAX HD.
- Maxivision.
- Presets:
- Multi-pass ray-casting renderer, including normal pass, albedo pass & depth pass.
- Can be linked with denoising library such as Intel® OIDN & Nvidia OptiX™ AI-Accelerated Denoiser. The image buffer pointer can be directly passed to OIDN.
- Physically-based principled BSDF material system.
- Procedural Texture.
- Checkerboard.
- Wave.
- Perlin Noise.
- A compositor for post-processing.
- Gaussian blur.
- Convolution with customized kernels.
- Edge detection.
- Bloom.
- Basic 2D drawing support.
- Mesh to OpenGL VBO converter.
- File IO.
- Importing wavefront OBJ model file.
- Exporting PPM & BMP SDR image file.
Pre-requirements:
- CMake 3.10+
- GCC 9.4.0+ or Clang 15.0.7+
- OpenMP 5+
- Catch2 3.2.1+ (for unit tests)
Intel® OIDN used by denoising demo has special hardware requirements. Please refer to https://www.openimagedenoise.org/ for more info. This does not affect the compilation of RenderToy library itself.
LLVM Clang is recommended to compile the project.
Important notice for LLVM Clang: Compiler optimizations of some Clang version prior to Clang 15.0.7 can cause sensible precision problems with RenderToy's floating-point calculations. Use the latest Clang version whenever possible.
Meanwhile we recommend you use VSCode as it is well integrated with CMake. After opening the project directory in VSCode, press Ctrl+Shift+P then enter CMake: Configure - VSCode will do everything you need.
- Tests - Unit test module for the project.
- CornellBox - A demo rendering the famous Cornell Box scene.
- WithOIDN - A demonstration of Intel® Open Image Denoise integration.
- ProceduralTexture - A demo rasterizing procedural textures supported by RenderToy.
- SmoothShading - A demonstration of smooth shading.
- Drawing - 2D drawing demo.
- Unique project structure, unlike any other open source ray tracers.
- High abstraction.
- Extensive adoption of compile-time code like SFINAE etc.
- Provides a variety of interfaces for secondary development.
- Procedural texture and mesh module.
- A richer compositor.
- Importing SDR/HDR texture image.
- Exporting HDR image.
- Physical sky.
- Code optimization.
MIT.
--------
siv::PerlinNoise
Perlin noise library for modern C++
MIT License.
Copyright (C) 2013-2021 Ryo Suzuki <reputeless@gmail.com>
--------
Blackbody Converter
MIT License.
Copyright (c) 2020 Christopher J. Howard.
--------
- GLSL Path Tracer by knightcrawler25 (https://github.com/knightcrawler25/GLSL-PathTracer) and its simplified port on ShaderToy by Asif Ali (https://www.shadertoy.com/view/sltXRl). Their designs were referenced for the Disney PBR portion of this project.
- Color standards from ITU-R (http://www.itu.int/rec/) and Andreas Paul from Dept of Informatics, Technical University of Munich (https://www5.in.tum.de/lehre/vorlesungen/graphik/info/csc/COL_33.htm).
- Minilight: A minimal global illumination renderer by HXA7241 (https://www.hxa.name/minilight/). It had an important impact on the structural design of this project.
- Smallpt: Global Illumination in 99 lines of C++ (https://www.kevinbeason.com/smallpt/). Excellent demo for learning path tracing.
- Blender (http://blender.org/). The demo model for this project was created using Blender. And many designs, such as the compositor and PCG part, draw inspiration from Blender.
- RGB/XYZ Matrices by Bruce Justin Lindbloom (http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html).
- Scratchapixel: A free educational site that progressively introduces you to the world of computer graphics. (https://www.scratchapixel.com/)