- Rust 100%
| .helix | Add Helix workspace config | |
| examples | Efficient UVs + rewrite shaders | |
| models | cube.obj: Update UVs, add a texture | |
| src | use || instead of bitwise or. am i stupid?? | |
| .gitignore | cargo init | |
| Cargo.lock | I did some things??? I forgot | |
| Cargo.toml | I did some things??? I forgot | |
| LICENSE | Initial commit | |
| README.md | Update README.md | |
| TODO.md | optimizations! | |
The Renderer
A personal project of mine to try and make a 3D rasteriser on the CPU, inspired by Quake. PRs/issues welcome!
The Renderer has three goals: - Recreate the OpenGL pipeline on the CPU - Offer extra abstractions to store and render meshes, control the camera, and act like GLM - Optimize the hell out of it
If you're looking for another cool project, I recommend this Quake engine someone made.
P.S Feel free (and please) use The Renderer to make games! Few things are documented at the moment, but hopefully the examples can be a good starting point.
Running examples
The Renderer uses an experimental rewrite of softbuffer-quickstart. Make sure to clone that and use the 0.3.0 branch in a folder beside where you cloned The Renderer.
From there, feel free to run any of the examples with cargo run --release --example {sierpinski|meshes|fps}.
The Sierpinski example renders Sierpinski triangles, demonstrating OpenGL-like draw calls, and you can control subdivisions with the arrow keys. The FPS example offers an example of what The Renderer would look like in a game setting, where you can use the arrow keys to look and WASD to move.
Using as a library
The Renderer is designed to be used as a library in other projects. You can use it just like any other (local) dependency with Cargo. (Hopefully I'll upload it to crates.io and get it documented soonTM)