🎮 An Open Source Engine Written in C++! 🎮
-
General:
- ECS
- Audio (OpenAL)
- Parallel thread-safety physics (colliders of different forms, rigidbodies)
- Octree with automatic subdivision
- Support input from keyboard and mouse
- Annotations and code generation
More information about annotations, see the source code: Annotation
Example annotationsg_struct() struct MyStruct { sg_member() float m_myMember = 3.0f; }
- A set of classes for parallel computing
More information about parallel computing, see the source code: Parallel computing
- Small developments in the in-game UI (loading TTF fonts, creating text)
-
Graphics Rendering:
- Preparation for multi-GAPI (GAPI - graphics API) (using only abstractions and avoiding native API functions in external code (outside the implementation of abstract classes for different GAPI))
- Аn additional add-on to the GLSL shader language for dividing shaders into render passes, specifying pass parameters, including shaders, as well as writing different shaders (fragment, vertex, geometric, etc.) in one file
- PBR (Physically Based Rendering) using Cook-Torrance BRDF. Different maps are supporting:
- Albedo Map
- Normal Map
- Roughness Map
- Metallic Map
- Ambient Occlusion Map
- Emission Map
- Shadows (Directional Light only)
- Atmosphere Scattering
-
Post Processing:
- Layered postprocessing (you can add different objects to different layers and apply different postprocessing to them, be it blur, bloom, etc.)
-
Asset Pipeline:
- Plugin Systems(generating a plugin project, connecting plugins to the engine in runtime)
- Load Textures and svg files
- Load many model formats such as .fbx, .obj, etc.
Octree | PBR |
---|---|
Octree demonstartion |
Demonstration pbr shading with shadows |
Post-Processing | Post-Processing |
Demonstration of layered post-processing (bloom) |
Demonstration of layered post-processing |
- 🛠️ Cross Platform
- ✔️ Windows
- ❌ MacOS
- ✔️ Linux
- ❌ Andriod
- ❌ iOS
- ❌ Web
Distributed under the MIT License. See LICENSE.txt
for more information.
Open your console application of choice and run the following console commands:
\> cd <Path to your folder>
\> git clone --recurse-submodules -j8 https://github.com/Pixelfield-ru/SungearEngine
\> cd SungearEngine
\> git checkout main (or the latest tag)
If you encounter any bugs when using Sungear Engine, please report them in the bug tracker. This is hosted at:
https://github.com/Pixelfield-ru/SungearEngine/issues
Make sure to first use the search function to see if the bug has already been reported. When filling out a bug report, make sure that you include as much information as possible to help the developers track down the issue, such as your version of SungearEngine, operating system, architecture, and any code and models that are necessary for the developers to reproduce the issue.
To build up make sure to:
- Build and bootstrap vcpkg.
- Set SUNGEAR_LLVM_MINGW_PATH system variable to your MinGW (cygwin/other-cross-compiler?..) compiler.
Be sure to set up the correct path without illegal-characters (use / in path instead of \ for obvious reasons).