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. It utilizes OpenGL as the graphics API.

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

Path Tracing

It has a monte-carlo path tracer that's compatible with rest of the engine. Path tracing is done on a compute shader using a hybrid BVH(top and bottom) for acceleration. Currently the BVH construction done on the CPU but GPU based construction is in the bucket list for the future. The estimator can sample emissive lights using NEE(Next Even Estimation) and the analytical lights used in the rastered scenes alike.

Here are quick demo scenes. Scenes don't belong to me. Car Renderman Canons

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

About

2D Engine for a University Project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 93.0%
  • C 5.0%
  • GLSL 1.9%
  • Other 0.1%