Skip to content

codybloemhard/clrays

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

clrays

Features

  • camera controls
  • custom keybindings
  • skycolour, skybox: sphere
  • export frame
  • primitives: planes, spheres, triangles
  • mesh: triangle meshes (.obj)
  • BVH: binning + SAH + top-level

GPU

  • 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

CPU

  • 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

Controls

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

wip

  • reintroduce SBVH as choice
  • rewrite cpu bvh traversal on bufferized bvh
  • gpu top level bvh traversal
  • reintroduce texture maps on gpu

Possible things to work on

  • 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

Sources

  1. Tonemapping; Matt Taylor (2019)
  2. Tonemapping; Krzysztof Narkowicz (2016)
  3. Microfacets; Brian Karis (2013)
  4. Microfacets; Walter et al. (2007)
  5. Microfacets; Joe Schutte (2018)
  6. Microfacets; Jacco Bikker (2016)
  7. Fast AABB intersection; NVIDIA (2018)
  8. Recursion-less gpu tree traversal adapted from nvidia article
  9. Wang hash found here
  10. Random vector in hemisphere; UMONS
  11. random vector in the hemisphere along normal; Shadertoy
  12. On fast Construction of SAH-based Bounding Volume Hierarchies; Iglo Wald

License

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks