A Doom 1 & 2 renderer written in Rust, featuring a modern OpenGL 3+ pipeline and 100% safe code.
Rust Doom is a renderer for Doom 1 and 2 written entirely in Rust, implementing the game's graphics pipeline from scratch using modern OpenGL. It solves the problem of recreating classic Doom visuals with contemporary, safe code practices, avoiding direct ports of the original C source.
Rust developers interested in graphics programming, game engine enthusiasts, and those learning low-level rendering techniques through a well-known retro game.
Developers choose Rust Doom for its 100% safe Rust implementation, modern OpenGL 3+ approach, and educational value as a clean-room reimplementation that avoids legacy code pitfalls.
A Doom Renderer written in Rust.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses VBOs and shaders instead of immediate mode, rendering floors as convex polygons from BSP data for a contemporary graphics approach, as detailed in the goals.
Implements the original 256-color palette and colormaps via fragment shader lookups, replicating classic lighting effects authentically, based on README descriptions.
Contains no unsafe blocks, emphasizing Rust's memory safety guarantees and idiomatic practices, as highlighted in the project goals.
Built from scratch using Doom Wiki and specs rather than porting C code, making it a valuable resource for learning rendering techniques and Rust.
Missing key elements like sprite-player collisions, sprite animations, and BSP frustum culling, as admitted in the todo list, limiting it as a full game engine.
Requires users to provide their own WAD file from the original game, adding setup complexity and potential sourcing hurdles, noted in the build instructions.
Author admits it was written while learning Rust and might not be the best example, indicating possible inefficiencies or non-idiomatic patterns in the codebase.