EvoEngine is an early-stage, cross-platform interactive application and rendering engine for Windows and Linux.
Here are the features that already exist in the EvoEngine.
- Modularized design
- EvoEngine is designed with layers. WindowLayer, RenderLayer, EditorLayer, etc.
- E.g. Offscreen rendering by disabling WindowLayer and EditorLayer.
- Plugin support.
- EvoEngine is designed with layers. WindowLayer, RenderLayer, EditorLayer, etc.
- Data-oriented entity component system
- Cache-friendly data component, for systematic behavior of large quantity of entites. E.g. boids.
- Customizable private component, for individual behavior.
- Multi-threading
- Job system
- Editor
- Entity managements
- Inputs
- Profiler
- File I/O
- Asset managements
- Registry
- Serialization
- Project managements
- Msg console
- Rendering:
- Vulkan
- GPU-driven rendering
- Unified renderInstance/geometry/texture storage
- Built-in deferred + forward rendering pipeline.
- Support external rendering commands
- Lighting & shadows
- PCSS
- Cascaded shadow map (CSM)
- Environmental map
- Light probe/reflection probe
- Skybox
- Support procedural generation from sky illumination model
- Particle system
- High-level rendering API
- Post-processing
- Ray-tracing
- Custom BVH construction
- CPU/compute shader/hardware ray-tracing support
- Skeletal animation
- Input/Event system
- Python binding
- Note: Visual Studio 2019 or 2022 is recommended. EvoEngine is tested on Windows and Linux platform, other platform is not supported. We primarily focus on Windows platform.
- Build requirements
- For Linux platform, the following libaries are required (Ubuntu):
- clang-14
- cmake
- ninja-build
- libwayland-dev
- libxkbcommon-dev
- xorg-dev
- Vulkan-SDK (From LunarG)
- python3.12-dev
- For Windows platform, make sure the following components are installed on Visual Studio:
- Desktop development with C++
- For Linux platform, the following libaries are required (Ubuntu):
- Step 1: Clone the repository with the following command:
git clone --recursive /~https://github.com/edisonlee0212/EvoEngine
- Step 2: If the repository was cloned non-recursively previously, clone all submodules with the following command:
git submodule update --init --recursive
- Step 3: Build:
- For Windows:
- run build.cmd
- For Linux:
bash build.sh
- For Windows:
- Additional resources:
- See
/EvoEngine/Resources/Building/
for additional ways to build/run/test EvoEngine.
- See
- To directly build the project, scripts under the root folder build.cmd (for Windows) and build.sh (for Linux) is provided for building with a single command line.
- Rendering demo
- Planet demo
- Star cluster demo
- The Star Cluster demo shows the potential of Job System with ECS by rendering hundreds of thousands of stars at the same time with instanced rendering. The position of each star is calculated in real-time in parallel with a single lambda-expression-based API similar to the m_entities.ForEach() in Unity.
- 100k stars:
- Digital forestry demo
- The digital forestry demo shows our latest procedural tree growth model for generating large scale synthetic tree datasets for ML training and simulating natrual phenomena.
- Publications:
- [SIGGRAPH Asia 2021] Learning to Reconstruct Botanical Treesfrom Single Images
- [SIGGRAPH 2023] Rhizomorph: The Coordinated Function of Shoots and Roots
- [TVCG 2023] DeepTree: Modeling Trees with Situated Latents
- [SIGGRAPH 2024] Latent L-systems: Transformer-based Tree Generator
- [ECCV 2024] Tree-D Fusion: Simulation-Ready Tree Dataset from Single Images with Diffusion Priors
- [SIGGRAPH 2024] Interactive Invigoration: Volumetric Modeling of Trees with Strands
- Interactive framework:
- Tree Fracture:
- Visualization:
- Digital agriculture demo
- Documentation
- Node editor