render is a desktop-first C++20 codebase for building a custom 3D rendering engine and a game layer on top of it.
The repository now includes:
- an SDL3-backed platform runtime (
engine/platform) - an engine-owned renderer interface (
engine/render) - a bgfx/bx/bimg-backed renderer implementation hidden behind that interface
- a runnable shell that clears and submits minimal geometry each frame
- a deterministic serialization foundation for save, recipe, item, room, and network payload schemas
- an engine-owned filesystem/resource storage layer with category-based roots for source data, cache, saves, logs, screenshots, and crash dumps
- CTest-integrated unit + headless smoke validation entry points
- shader and packaging validation targets suitable for CI quality gates
- GitHub Actions workflows for PR and main-branch validation
- Engine/game modules should consume internal interfaces in
engine/platform/andengine/render/. - SDL3 usage is isolated to
engine/platform/sdl/and renderer native-window glue. - bgfx/bx/bimg usage is isolated to
engine/render/bgfx/.
Read docs/build.md for full setup.
Example (Linux Debug):
cmake --preset linux-debug -DRENDER_ALLOW_FETCHCONTENT=ON
cmake --build --preset linux-debug
./out/build/linux-debug/bin/render_shelldocs/build.md— build/configure/run commandsdocs/dependencies.md— dependency resolution and override strategydocs/architecture.md— platform + renderer boundary and layering notesdocs/serialization.md— canonical binary encoding, schema/version policy, and migration hooksdocs/filesystem.md— canonical path categories, writable layout, safe write behavior, and dev vs packaged lookup policydocs/testing.md— testing categories, labels, and local validation commandsdocs/ci.md— CI workflow matrix, blocking policy, and artifacts