Ray tracing with Physically Based Rendering
Offline rendering application by ray tracing.
C++14 or higher. Tested on MSVC v141, no tested on other comilper yet.
Reflection
Refraction & Translucent shadow
A procedural texture compute the color while sampling instead of using stored data.
The checkerboard 2D procedural texture is pretty straightforward. If the sample point fall within the bottom-left or upper-right region it return the main color, otherwise it return the secondary color.
Checkerboard 2D texture on the plane
Perlin noise is a type of gradient noise developed by Ken Perlin in 1983[1]. This program use a improved version of Perlin noise[2]. The Java implementation written by Ken Perlin himself can be found here.
Perlin noise on the plane
Multisample anti-aliasing with 4 rays per pixel. After tried out multiple sampling pattern, I found 4-Rooks pattern (Rotated grid supersampling) produced the best result in visual.
No anti-aliasing.
With MSAA4x anti-aliasing.
Side by side comparison.
There are multiple ways to convert the HDR image into LDR space. However the ACES film tone mapping is the most widely accepted and used tone mapping algorithm.
Jietong Chen