https://github.com/abstractalgo/reyes
REYES renderer in C++
https://github.com/abstractalgo/reyes
cpp micropolygon rendering reyes
Last synced: 6 months ago
JSON representation
REYES renderer in C++
- Host: GitHub
- URL: https://github.com/abstractalgo/reyes
- Owner: abstractalgo
- Created: 2015-11-17T13:39:56.000Z (over 10 years ago)
- Default Branch: dev
- Last Pushed: 2022-01-02T12:52:41.000Z (about 4 years ago)
- Last Synced: 2025-05-06T05:12:56.384Z (11 months ago)
- Topics: cpp, micropolygon, rendering, reyes
- Language: C++
- Homepage: https://www.slideshare.net/DraganOkanovic/reyes-59489937
- Size: 4.33 MB
- Stars: 19
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# reyes
REYES renderer in C++
complementary slides about the algorithm and the implementation: https://www.slideshare.net/DraganOkanovic/reyes-59489937
| example renderer output | algorithm |
| --- | --- |
|  |  |
### file structure
Source code is divided as following:

- **core/**: responsible for systems independent of the reyes algorithm
- [aajob.hpp](src/reyes/aajob.hpp): multithreading management
- [backend.hpp](src/reyes/backend.hpp): win api and opengl init
- [mem.hpp](src/reyes/mem.hpp): memory management
- **reyes/**
- [settings.hpp](src/reyes/settings.hpp): modifies behavior and data structures
- [pipeline.hpp](src/reyes/pipeline.hpp): main rendering procedure and heart of the system
- [shape.hpp](src/reyes/shape.hpp): main abstraction of the input
- [shading.hpp](src/reyes/shading.hpp): abstraction of a material and shading system
- [grid.hpp](src/reyes/grid.hpp): microgrid abstraction
- [scene.hpp](src/reyes/scene.hpp): convenient data structure
- **camera/**
- [scene.hpp](src/reyes/scene.hpp): abstraction of the virtual camera
- [film.hpp](src/reyes/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
- [x] basic buffer (1 sample per pixel)
- [x] no bucketing
- [x] no splitting and bounding (dice entire primitives, each and every)
- [x] basic pipeline
- [x] basic rasterizer
#### v2.0
- [x] transformations (translate, scale)
- [x] dicing
- [x] bounding and splitting
- [x] entire reyes pipeline
- [x] finalize quadrilaterals and triangles
- [x] G-buffer
- [x] improved memory management and speed
- [x] geometry: plane, sphere, disc, cubic bezier patch, Utah teapot
- [x] support for different materials (custom "shaders")
- [x] texture samplers in "shaders"
- [x] support for lights: directional, point
#### v3.0
- [x] threaded renderer
- [x] improved memory managment
- [ ] A-buffer
- [ ] *stochastic (multi)sampling*
- [ ] transparency support
- [ ] inject optimizations
- [ ] dof
- [ ] motion blur
- [x] 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