Git Product home page Git Product logo

fusionframe-engine's Introduction

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;

GLFWwindow* window = FUSIONUTIL::InitializeWindow(width, height, 4, 6, "FusionFrame Engine");
FUSIONUTIL::DefaultShaders Shaders;
FUSIONUTIL::InitializeDefaultShaders(Shaders);
FUSIONCORE::SHAPES::InitializeShapeBuffers();
  • Importing a HDRI
FUSIONCORE::CubeMap cubemap(*Shaders.CubeMapShader);
FUSIONCORE::ImportCubeMap("Resources/rustig_koppie_puresky_2k.hdr", 1024, cubemap, Shaders.HDRIShader->GetID(), Shaders.ConvolutateCubeMapShader->GetID(), Shaders.PreFilterCubeMapShader->GetID());
  • 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

fusionframe-engine's People

Contributors

kaganbaldiran avatar m0rningdawning avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

m0rningdawning

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.