4
4
Fork
You've already forked renderer
0
OpenGL-like CPU renderer for Rust, with abstractions to load and render 3D objects.
  • Rust 100%
2026年01月11日 20:26:50 -08:00
.helix Add Helix workspace config 2026年01月11日 20:26:25 -08:00
examples Efficient UVs + rewrite shaders 2026年01月06日 16:09:56 -08:00
models cube.obj: Update UVs, add a texture 2025年10月05日 16:39:40 -06:00
src use || instead of bitwise or. am i stupid?? 2026年01月11日 20:26:50 -08:00
.gitignore cargo init 2024年06月10日 15:45:15 -06:00
Cargo.lock I did some things??? I forgot 2025年12月20日 23:13:47 -08:00
Cargo.toml I did some things??? I forgot 2025年12月20日 23:13:47 -08:00
LICENSE Initial commit 2024年05月07日 21:13:40 +00:00
README.md Update README.md 2025年04月24日 02:23:12 +00:00
TODO.md optimizations! 2026年01月04日 19:39:27 -08:00

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)

image