Skip to content

KaganBaldiran/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

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