Skip to content

RenderToy is an experimental path tracing rendering library for academic purposes.

License

Notifications You must be signed in to change notification settings

CodingEric/RenderToy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RenderToy

RenderToy is an experimental path tracing rendering library for academic purposes.

We implement:

  • 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).
  • Triangulated mesh system.
    • Bounding Volume Hierarchy (BVH) acceleration structure.
  • Physically-based perspective camera.
    • Presets:
      • Academy Format.
      • IMAX HD.
      • Maxivision.
  • 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.

Getting Started

Pre-requirements:

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.

Launch Targets

  • 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.

Render Results & Comparison

comparison

oidn

smooth

Features

  • 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.

Our plan:

  • Procedural texture and mesh module.
  • A richer compositor.
  • Importing SDR/HDR texture image.
  • Exporting HDR image.
  • Physical sky.
  • Code optimization.

License

MIT.

OSS Usage

--------
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.
--------

Reference

About

RenderToy is an experimental path tracing rendering library for academic purposes.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published