A cross-platform game engine that integrates a real-time physically based workflow and makes it easy to get started writing games or other graphical applications in C++!
I've been using this to actually develop a game i've been working on, and includes multiple systems to facilitate gameplay (like the UI and audio systems) along with your usual engine systems (like Renderer, and Log). However, the same engine is also proven to be useful for other graphical applications, like the Prism editor.
Although I developed this on macOS, it has been tested on Windows, Linux, iOS, iPadOS and tvOS machines. Apart from some platform glue, these share a majority of the same code!
The sibenik, sponza and buddha models shown are from the [McGuire Computer Graphics Archive](https://casual-effects.com/data/), other models shown are created by me.
* If available on the platform, multiple windows are supported as well.
* Support for querying whether or not the platform is in light/dark mode (where supported). Currently, this only switches between the light/dark dear imgui themes.
* Plenty of custom widgets available for easily creating debug tools, see [imgui_stdlib.h](https://github.com/redstrate/prism/blob/master/extern/imgui/include/imgui_stdlib.h) and [imgui_utility.hpp](https://github.com/redstrate/prism/blob/master/engine/core/include/imgui_utility.hpp)!
* No runtime polymorphism is involved and leverages the native C++ type system. [Components are kept as simple structs](https://github.com/redstrate/prism/blob/master/engine/core/include/components.hpp).
* Where older or underperforming GPUs are supported (for example, an Apple TV 4K, or a Thinkpad X230), the engine supports disabling expensive features like IBL or point light shadows and has other scalability options.
* Real-time physically based rendering including using scene probes for image-based lighting.
* Node-based material editor for easy authoring within the engine.
There is no example available, but if you clone this repository and include it in your cmake tree, use the function `add_platform_executable` from [AddPlatformExecutable.cmake](https://github.com/redstrate/prism/blob/master/cmake/AddPlatformExecutable.cmake) to create a new Prism app.