Skip to content

aduvenhage/raytracer

Repository files navigation

--> About Me <--

Raytracing

Never did raytracing before, but tried it now and I'm hooked :-)

Gallery

Some images I have made so far:

Clean raytracing (no monte carlo) Mandlebulb (raymarched) Raymarched goodness Tracing many object fast Volume scattering Volume scattering Raymarched goodness Refraction Refraction Refraction Many bulb materials Just some shapes More fog Cornell box Cornell box

Features

List of implemented features:s

  • Basic Features

    • rays and viewport
    • camera position and orientation
    • depth-of-field
    • gamma correction (fixed 2.0 correction)
  • Primitives and Meshes

    • spheres, boxes, planes
    • sphere UV mapping
    • triangle mesh rendering
    • volumes / fog
    • raymarched objects
    • generic materials: diffuse, metal, glass, checkered diffuse
    • procedural materials: fractals, etc.
    • textured objects (texture images)
  • Rendering and optimisations

    • monte-carlo based sampling and materials
    • russian roulette early exit
    • multi-threaded rendering
    • rotated and translated objects, and re-used objects (instancing)
    • axis aligned box intersections
    • bounding volume hyrarchy hit optimisations for scene objects
    • bounding volume hyrarchy hit optimisations for triangles within a mesh
    • optional memory manager (optimised small object allocations) to ensure objects are located close together in main memory
  • Advanced Features

    • cloud runner (tested on AWS and DigitalOcean)
    • procedural/textured lights

Todo:

  • triangle mesh loading (see https://github.com/assimp/assimp)
  • procedural content using noise (https://github.com/Auburn/FastNoiseLite)
  • replace axis-math with matrix math
  • add shadow rays
  • optisation through importance sampling (for lights)
  • data based optimisations
  • de-noising
  • z-buffer and rasterised debug views (like viewing BVH volumes)
  • support larger scenarios rendering multiple frames or multiple scenes per cloud VM (specific to cloud runner)
  • optimize cloud VM promisioning (cloud-local images, smaller images, faster building, etc.)

Feature blog

Ramblings on cool features and implementation details. And, actually trying to write something down makes me think of improvements.

Resources

About

My raytracer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages