Skip to content
This repository has been archived by the owner on Dec 9, 2022. It is now read-only.
/ DigitalVox3 Public archive

Entity-Component Based Graphics Engine rendered by Metal

License

Notifications You must be signed in to change notification settings

yangfengzzz/DigitalVox3

Repository files navigation

Depreciate!!! If you like C++ please refer to DigitalVox4, Or SwiftArche

DigitalVox3 - Metal Graphics Engine

This project is inspired by Oasis which is an ECS-liked based engine(not very strict) . Based on entity and component, it is easy to combine other open-source ability:

  1. ImGui: GUI system
  2. OZZ-Animation: CPU Animation System
  3. PhysX: Physical System
  4. fluid-engine-dev: Fluid Simulation and CPU Particle System

Which can load a lot of model format including:

  1. FBX: FBX loader with Ozz animation
  2. GLTF: GLTF Loader with GPU-based Skinning Animation
  3. Other: OBJ and other format loaded by ModelIO Framework

Features

GLTF Loader

Example about GLTF Loader which based on GLTF GLTF Scene

GPU Skinning Animation with GLTF

Example can also load animation which control the tree of entities. GPU Skinning Animation limit the joint weight have only four component.

GPU Animation

CPU Animation System with FBX

Example about CPU animation system which is based on OZZ-Animation. Ozz support CPU skinning, blending, IK and other animation ability. The CPU animation system does not limit the number of weights of the bones, so it will be more free to use. Animation Simulation

CPU Particle System

Example about CPU particle system which can load fluid-engine-dev solvers. Particle Simulation

Physics System

Example about Physics System which is based on PhysX. Collider, Joint, Character Controller are all wrapped as component which is more easy to use.

PhysX

PBR

Example use IBL to render basic pbr scene. The specular-map is generated by using compute shader. The diffuse-map is generated by Model I/O framework

IBL

Shadow System

Example support multi-shadow from three kind of lights. All these based on ShadowMap.

  1. spot light: single shadow map
  2. directional light: cascaded shadow map(render four times)
  3. point light: shadow cube map (render six times)

Multi Shadow Cube Shadow from Point

Deferred Render Pipeline

Example use 256 point lights to shader the whole scene which need deferred render pipeline to reduce fragment wastes.

Deferred Render Pipeline

GUI

Editor use IMGUI to render gui and FrameBuffer Picker to link the scene with panel. ImGuizmo and imgui-node-editor build the basic infrastructure of editor.

Editor

About

Entity-Component Based Graphics Engine rendered by Metal

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published