Skip to content

abstractalgo/reyes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reyes

REYES renderer in C++

complementary slides about the algorithm and the implementation: https://www.slideshare.net/DraganOkanovic/reyes-59489937

example renderer output algorithm
cover2 image

file structure

Source code is divided as following:

ls

  • core/: responsible for systems independent of the reyes algorithm
  • reyes/
    • settings.hpp: modifies behavior and data structures
    • pipeline.hpp: main rendering procedure and heart of the system
    • shape.hpp: main abstraction of the input
    • shading.hpp: abstraction of a material and shading system
    • grid.hpp: microgrid abstraction
    • scene.hpp: convenient data structure
    • camera/
      • scene.hpp: abstraction of the virtual camera
      • film.hpp: abstraction of the image's film
      • film/: different implementations of the film
    • lib/: different implementations of the core parts of the shading system
      • lights/
      • materials/
      • samplers/
      • shapes/
    • misc/: vector math and matrices

v1.0

  • basic buffer (1 sample per pixel)
  • no bucketing
  • no splitting and bounding (dice entire primitives, each and every)
  • basic pipeline
  • basic rasterizer

v2.0

  • transformations (translate, scale)
  • dicing
  • bounding and splitting
  • entire reyes pipeline
  • finalize quadrilaterals and triangles
  • G-buffer
  • improved memory management and speed
  • geometry: plane, sphere, disc, cubic bezier patch, Utah teapot
  • support for different materials (custom "shaders")
  • texture samplers in "shaders"
  • support for lights: directional, point

v3.0

  • threaded renderer
  • improved memory managment
  • A-buffer
    • stochastic (multi)sampling
    • transparency support
    • inject optimizations
  • dof
  • motion blur
  • task (job) manager
  • profiling
  • bucketing
  • (progress indicator)
  • (camera; perspective and orthographic)
  • (Klein bottle)
  • (SH light)

v4.0

  • optimized memory layout
  • (GP)GPU implementation
  • (pseudo) real-time

v5.0

  • alogirthms for fixing cracks
  • fix elongated micropolygons
  • dice criterium different
  • dynamic dicing

v6.0

  • shadow mapping
  • additional post-processing effects
  • animations
  • materials (toon, phong, ggxD)
  • additional geometry
    • catmull-clark subdiv
    • more bezier
    • nurbs (b-spline)
    • loop subdiv
  • full Renderman specification