Skip to content

m0rningdawning/FusionFrame-Engine

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub language count GitHub top language GitHub last commit License: MIT

FusionFrame-Engine

Fusion Frame engine is a framework type game engine that focuses on delivering a compact and easy-to-use interface for 3d game development while preserving speed. It also supports different physics algorithms to speed up the game development.

Rendering Abilities

  • Deferred rendering(soon to be clustered deferred as well as forward+ as an option)
  • Omnidirectional shadows for point lights
  • Linear shadows for directional lights
  • PBR-IBL shading
  • HDRI and cubemap support
  • Deferred and forward mesh instancing
  • Compute shader based particle emitter
  • Skeletal animation support
  • Deferred ScreenSpace decals

Also planning to implement a voxel based GI soon.

Physics Abilities and Data Structures

  • Oct/Quad tree for general object class
  • Half-edge mesh structure
  • Easy collision mesh creation from meshes and bounding boxes
  • AABB and SAT collisions

Also using half-edge data structure , wrote couple of premature mesh algorithms like subdivision for triangular meshes. Mesh utility algorithms like quickhull to create collision boxes are also in the TO-DO list

Ray/Path Tracing

Currently has a ray/path tracer with reflections , indirect lighting and shadows. Ray tracing is done on a compute shader using a hybrid BVH(top and bottom) for acceleration.

Here is a quick demo scene with basic pbr shading and visualization of the BVH structure. image image

Documentation

The overall API is pretty simple and user friendly. I'll try to demonstrate some of the functionality to get you started

  • Initializing the window and the resources
const int width = 1000;
const int height = 1000;

FUSIONCORE::Window ApplicationWindow;
ApplicationWindow.InitializeWindow(width, height, 4, 6, false, "FusionFrame Engine");

FUSIONUTIL::InitializeEngineBuffers();
FUSIONUTIL::DefaultShaders Shaders;
FUSIONUTIL::InitializeDefaultShaders(Shaders);
  • Importing a HDRI
FUSIONCORE::CubeMap cubemap(*Shaders.CubeMapShader);
FUSIONCORE::ImportCubeMap("Resources/rustig_koppie_puresky_2k.hdr", 1024, cubemap, Shaders);
  • Engine supports both deferred and forward rendering so you can use a gbuffer to use deferred rendering.
const FUSIONUTIL::VideoMode mode = FUSIONUTIL::GetVideoMode(FUSIONUTIL::GetPrimaryMonitor());
FUSIONCORE::Gbuffer Gbuffer(mode.width, mode.height);
FUSIONCORE::FrameBuffer ScreenFrameBuffer(mode.width, mode.height);

Current Look

winter_scene_fusion_frame image image image image image image image image image image image

Releases

No releases published

Packages

No packages published

Languages

  • C++ 93.3%
  • C 5.2%
  • GLSL 1.4%
  • CMake 0.1%