toastmod / Ember

WIP rendering engine using OpenGL API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ember Engine

The Ember engine is a work in progress 3D rendering engine targeted for the Windows operating system using the OpenGL specification.

Platforms

This project was built with the thought of cross compatability in mind, meaning it would succesfully build and run on windows, macos and linux. However, the MacOS version was unstable and did not perform as inteded. This means that I will switch to windows development for the time being.

This shift will allow me to focus more on adding the features I want to add without worrying about cross platform specifications. This isnt to say that this project will stay on windows forever and in the future Im making it a goal to fully incorporate cross platform capabilities.

Build

First clone the repository using: git clone --recursive git@github.com:Brett-Constantinoff/Ember.git

To build run .\bin\premake\premake5.exe vs2022 in the root of the project

This will generate a visual studio solution file in the root directory which you can then use the build the poject

How To Use

To move the camera use the WASD keys, to look around hold down the right mouse button and move the mouse. Zoom by using the middle scroll wheel while holding the right mouse button.

Abstraction

Almost every object in Ember needs to be initialized with some creation information (much like the Vulkan specification), this allows for the creation of objects to be much more verbose which increases the freedom the user has to customize their experience however they like. In practice this looks like the following:

CreateInfoStruct createInfo{};

// setup the information stored inside the create info

newEmberObject = std::make_shared<EmberObject>(createInfo);

TO-DO

  • Load Obj files
  • Create fully working GUI
  • Dynamic shadow mapping
  • Textured objects
  • Enhanced lighting
  • Skyboxes
  • PBR
  • Add cross platform support

Progress

  • Load Obj Files Capture

  • Textured Objects Capture

  • Skyboxes Capture

Third Party Libraries

  • GLFW - handles window creation
  • Glad - contains all OpenGL function declarations
  • GLM - a great math library for graphics programming
  • STB - a lightweight header only image loading library
  • IMGUI - a gui library that integrates very well with OpenGL projects
  • TinyOBJ - a lightweight header only library for loading and rendering .obj files

About

WIP rendering engine using OpenGL API

License:MIT License


Languages

Language:C++ 73.7%Language:C 26.1%Language:Lua 0.2%Language:HLSL 0.1%