Prisma Engine is an OpenGL-based rendering engine designed for creating dynamic 3D applications. It is a personal project created to showcase the capabilities of modern OpenGL. The engine is constantly evolving, so there could be significant changes from one version to another.
- OpenGL 4.6 Support
- Clustered rendering pipelines
- Directional and Omni Lights
- Omni shadows and Cascaded shadow maps
- Animations/Animations blending
- Jolt Physics Integration
- Indirect Drawing
- HDR
- Omni and Directional lights Shadows
- glTF Loader
- Physically Based Rendering (PBR)
- Image Based Lighting (IBL)
- Screen space reflections
- Scene Graph
- Bloom
- Postprocessing effects
- Particle effects
- Volumetric Clouds
- Heightmap landscapes
- Procedural texture generation
- Grass optimized by frustum culling
- GPU sorted transparencies
- Thread safe animations
- GPU frustum culled meshes
- Rigidbodies and soft bodies
- Editor:
- Run/Debug modes
- Transform Modifier
- Physics Modifier
- Show Scene Graph
- Animation Viewer
- Change Render Pipeline (Forward clustered/Deferred clustered)
- Texture debugger
To start using Prisma Engine in your projects, follow these steps:
- Clone the repository:
git clone --recursive https://github.com/deni2312/prisma-engine.git
- Install dependencies with vcpkg:
cd prisma-engine
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate install
cd ..
.\vcpkg\vcpkg install
-
Open the project with visual studio
-
Open Tools -> Options -> Vcpkg then change the vcpkg directory to the path of vcpkg executable
-
Click on main.cpp and run the default scene
-
(Optionally) In
configuration\settings.json
file you can change some settings like width, height and name of the window.
An example of a demo scene with deferred clustered shading and forward to run smoothly many lights, with some updates like GPU sorted transparencies, terrain rendering and height based texture, frustum culled grass, that has also animations , it runs at 120 FPS 500+ different animated meshes that run updates in different threads. (Click on the image for the youtube video)
https://www.youtube.com/watch?v=ylrV2Ebg6FA
An example of a demo scene with animation blending, particle effects and screen space reflections. (Click on the image for the youtube video)
An example of a Sponza scene that utilizes 1000 point lights through clustered shading, with some post-processing, and includes animations taken from Mixamo. (Click on the image for the youtube video)
https://www.youtube.com/watch?v=T0_1JGvYyl0
An example of a scene with bullet physics, point shadows and the dynamic loading of a sponza scene (Click on the image for the youtube video)
An example of NVIDIA Orca scene that has Cascaded Shadow Maps, animations and 1000 lights rendered in realtime. (Click on the image for the youtube video)
https://www.youtube.com/watch?v=PT4RTldmVqc
The scene models showcased can be found on the official repository for KhronosGroup's glTF Sample Models:
https://github.com/KhronosGroup/glTF-Sample-Models
We welcome contributions to Prisma Engine! Whether it's bug fixes, new features, or documentation improvements, your contributions help make Prisma better for everyone.
If you encounter a bug, please submit an issue with detailed information about how to reproduce it.
- Code refactoring/Eventual bug fixes
All the software is under MIT (see the LICENSE file) and the icons are from Icons8
The NVIDIA Orca scene has a CC BY-NC-SA 4.0 ( https://creativecommons.org/licenses/by-nc-sa/4.0/ )
If you have a feature request, open an issue and describe the feature you would like to see.
Thank you for contributing to Prisma Engine!