This is a game engine I'm making.
Use Cargo.
Install Rust nightly
and its dependencies.
You need a GPU driver with support for Vulkan 1.3.
This is a Rust rewrite of my C engine.
The engine is/will be made of these components:
platform
- Platform abstraction, handles OS functions, also handles "video" (another Quake 2 idea sort of), through functions that hide most details about the underlying window and such.engine
- Currently contains a camera structure and function, a transform structure, and some ECS stuff.rendersystem
(engine/rendersystem
) - API-independant frontend for rendering, also inspired a bit by Quake 2.rendersystem-vk
(engine/rendersystem/vulkan
) - Vulkan render backend, probably most of the code.rendersystem-dx
(engine/rendersystem/directx
) - DirectX 12 backend, planned but currently empty.texture
(util/texture
) - Texture format library. No compression, basically a header and pixels in RGB, RGBA, or depth (32-bit float) formats.texturetool
(util/texture
) - Converts to and from the texture format. Similar tools will exist for other formats.model
(util/model
) - Model format library. Extremely primitive, like the texture format.
I suck at optimization, but I'm also trying to avoid worrying about it until it's an issue.
I heard that Doom Eternal uses thread jobs for everything so I hope to figure out how to do something like that.
- Make video backends more idiomatic by using nested functions or whatever the Rust way is
- Make my own formats instead of using OBJ and PNG
See Cargo.toml