REYES renderer in C++
complementary slides about the algorithm and the implementation: https://www.slideshare.net/DraganOkanovic/reyes-59489937
example renderer output | algorithm |
---|---|
Source code is divided as following:
- core/: responsible for systems independent of the reyes algorithm
- aajob.hpp: multithreading management
- backend.hpp: win api and opengl init
- mem.hpp: memory management
- 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/
- lib/: different implementations of the core parts of the shading system
- lights/
- materials/
- samplers/
- shapes/
- misc/: vector math and matrices
- basic buffer (1 sample per pixel)
- no bucketing
- no splitting and bounding (dice entire primitives, each and every)
- basic pipeline
- basic rasterizer
- 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
- 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)
- optimized memory layout
- (GP)GPU implementation
- (pseudo) real-time
- alogirthms for fixing cracks
- fix elongated micropolygons
- dice criterium different
- dynamic dicing
- 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