https://github.com/tyanyuy3125/rendertoy2
RenderToy2 is the Monte-Carlo-estimated PBR final project for Advanced Computer Graphics (Fall 2023, IIIS, Tsinghua University). Course grade is A+.
https://github.com/tyanyuy3125/rendertoy2
final-project path-tracing physically-based-rendering
Last synced: about 1 month ago
JSON representation
RenderToy2 is the Monte-Carlo-estimated PBR final project for Advanced Computer Graphics (Fall 2023, IIIS, Tsinghua University). Course grade is A+.
- Host: GitHub
- URL: https://github.com/tyanyuy3125/rendertoy2
- Owner: tyanyuy3125
- Created: 2023-10-24T12:54:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-13T12:22:40.000Z (about 2 years ago)
- Last Synced: 2024-06-28T20:34:36.837Z (over 1 year ago)
- Topics: final-project, path-tracing, physically-based-rendering
- Language: C++
- Homepage:
- Size: 37.2 MB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RENDERTOY2 (WIP)
As the final project of Advanced Computer Graphics (Fall 2023, IIIS, Tsinghua Univ. ), RenderToy2 is a completely refactored version of the first generation RenderToy.
RenderToy2 是清华大学交叉信息研究院2023年秋课程《高等计算机图形学》的期末大作业,也是初代 RenderToy 完全重构的迭代版本。
## Gallery

## Implemented
### Rendering Techniques
* BSDF Path Tracing
* Direct Light Sampling (power weighted)
* Approximated Volume Rendering (Single Scattering)
* Motion Blur
* Depth of Field
* HDRI Map (importance sampled)
* SDF Ray Marching via Sphere Tracing
### Sampling Strategies
* Adaptive Sampling
* Multiple Importance Sampling
* Inverse Transform Methods
* Alias Sampling
* Rejection Sampling
* ...
### Material
* Lambertian BRDF
* Oren-Layar BRDF
* Specular BRDF
* Transmissive BSDF
* Principled BSDF
* Alpha Test (testing A channel of RGBA, if given)
* Fresnel
* Beckmann microfacet distribution
* Texture Mapping (similar to pbrt and Cycles, use `ISamplable` to abstract the texture type)
### Geometry
* SAH-BVH
* Normal mapping
* Mixed geometric representation
* Mesh
* SDF
### Post Processing & Visual Effects
* Tone mapping
* Custom aperture (rejection sampled)
* Denoiser using Intel® Open Image Denoise
* Programmable shader to manipulate pixels on images
* Layer-based image composition
* Bitmap font watermark
## Not yet implemented
* ...
## May be implemented
* LOD
* Bidirectional Path Tracing
* Caustics
* GPU Acceleration
* ...
## Requirements
* glm
* OpenImageIO
* assimp
* tbb
* OpenImageDenoise
## License
This project is a course assignment and is not for profit. I would not license it, use it at your own risk.
Part of the PBR-related code is borrowed from pbrt-v3 & pbrt-v4. pbrt license:
```
pbrt source code is Copyright(c) 1998-2017
Matt Pharr, Greg Humphreys, and Wenzel Jakob.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
```