Lysa is a hobby gpu-driven 3D Engine written in modern C++.
Features
Hybrid Rendering: GPU-driven forward and deferred renderers.
- Advanced Shaders & Post-processing: Integrated with Slang shaders.
- PBR: Simplified Physically Based Rendering.
- Transparency: Weighted Blended Order-Independent Transparency (OIT).
- Shadows: Support for Directional and Point light shadow maps. Optional colored shadows for transparent objects.
- Culling: GPU-driven Frustum Culling.
- Post-processing: Bloom, GTAO, SSAO, FXAA, SMAA, TAA, AND CAS, HDR Tone-mapping (Reinhard/ACES).
- Physics Engine: Integrated with Jolt Physics and NVIDIA PhysX for high-performance 3D physics.
- Collision Objects & Filtering: Support for collision objects with object layer collision matrix.
- Raycasting: Raycasting with layer-based filtering.
- Event Integration: Physics contacts and collisions integrated with the engine's centralized event system.
- Debug Rendering: Real-time visualization of physics shapes and constraints.
- Core Systems:
- Asynchronous Task Pool: Multi-threaded task execution and deferred command buffering.
- Event System: Centralized observer-based event dispatcher.
- Virtual File System: Portable path resolution using
app:// and user:// URI schemes.
- Logging: Flexible logging to console, file, or virtual debug window.
- Resource Management: Dedicated managers for Meshes, Textures, and Materials with automatic GPU uploading.
- Modern C++: Built with C++23, utilizing C++ modules for clean architecture.
- Multi-API Support: Vulkan and DirectX 12 support through Vireo RHI.
- Cross-Platform: Designed for Windows (DirectX 12 & Vulkan), Linux (Vulkan) and macOS (Vulkan with KosmicKrisp).
- Scripting: Lua bindings for high-level logic and rapid prototyping.
- Editor: Add-on to use Blender as an editor
Released under the MIT license.
Architecture of the engine
Additional features
Lysa Nodes is a scene graph system using OOP node tree for the Lysa Engine.
Lysa UI is a user interface library Lysa Engine.
Contact
For more information, contact the project maintainers at https://codeberg.org/LysaEngine/lysa_engine
Notes
This project was created for learning purpose. This engine is not intended to be a full-featured 3D Engine.