- camera controls
- custom keybindings
- skycolour, skybox: sphere
- export frame
- primitives: planes, spheres, triangles
- mesh: triangle meshes (.obj)
- BVH: binning + SAH + top-level
- basic pathtracer (area lights, materials, speculars, dielectrics, beer's law)
- frame energy
- tone mapping: Aces, Hable/Uncharted
- microfacet materials
- GGX-Smith conductor
- GGX-Smith dielectric
- GGX NDF importance sampling
- blinn shading
- reflection
- refraction
- absorption
- multithreading
- post: gamma, vignetting, chromatic aberration
- AA: randomly sampled
- textures: albedo, normal, roughness, metalic
- barrel distortion, fish eye lens
- progressive anti aliasing
- adaptive resolution
- bilinear texture sampling for all supported texture maps
- utilize top-level BVH
Two examples of keybindings, one in qwerty with wasd gaming bindings and one in qgmlwy leaving your hands in touch typing position. Can be rebound to anything you want.
Layout | Style | Move: up, down, forward, backward, left, right | Look: up, down, left, right | Toggle focus mode | Export frame |
---|---|---|---|---|---|
QWERTY | Gaming | Q, E, W, S, A, D | I, K, J, L | U | O |
QGMLWY | Typing | G, L, M, T, S, N | U, E, A, O | F | B |
- reintroduce SBVH as choice
- rewrite cpu bvh traversal on bufferized bvh
- gpu top level bvh traversal
- reintroduce texture maps on gpu
- rust-gpu rewrite
- GGX VNDF importance sampling
- wavefront
- portals
- hdr skybox
- sphere skybox only tophalf option
- skybox cubemap
- procedural sky
- denoising
- optimize pow: gamma correct images before upload
- optimize vector loading: use vload3 and allign the buffer for it
- preprocess kernel: optimize branches away, insert constants
- Next event estimation (NEE)
- Russian roulette (RR)
- Importance sampling of BRDF
- Importance sampling of lights
- Depth of field
- Blue noise
- Multiple importance samplign (MIS)
- Spectral rendering
- motion blur
- path regularization option (biased)
- energy clamp option (biased)
- ray marching
- Tonemapping; Matt Taylor (2019)
- Tonemapping; Krzysztof Narkowicz (2016)
- Microfacets; Brian Karis (2013)
- Microfacets; Walter et al. (2007)
- Microfacets; Joe Schutte (2018)
- Microfacets; Jacco Bikker (2016)
- Fast AABB intersection; NVIDIA (2018)
- Recursion-less gpu tree traversal adapted from nvidia article
- Wang hash found here
- Random vector in hemisphere; UMONS
- random vector in the hemisphere along normal; Shadertoy
- On fast Construction of SAH-based Bounding Volume Hierarchies; Iglo Wald
Copyright (C) 2022 Cody Bloemhard
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.