Skip to content

fireapache/BagualEngine

Repository files navigation

Bagual Engine

It's a general purpose game engine using a custom made pathtracing renderer, no OpenGL, Vulkan or DirectX rendering functionalities are used to render viewports.

Goal

To learn and create a custom game engine and a 3D renderer from scratch, mainly to understand the basics of how a game engine works and to experiment stuff with C++20.

Compiling

Windows:

  • Install Visual Studio 2022
  • Clone repository
  • Run GenerateProjectFiles.bat
  • Open BagualEngine.sln
  • Select Release compilation target for best performance
  • Press F5

Note: You can change engine test module being used by editing BEngine::RegisterModules() function.

Linux:

  • Doesn't compile atm, support not in plans for now

Current State

The engine compiles a game project with engine test modules. It's using ImGUI to aid rendering and debugging. User can create their own modules or simply make engine calls from any other context where the engine is integrate to.

Current Features

  • Scene with node and component structure
  • Multithread CPU renderer
  • 4 rendering methods including BVH and Embree
  • OBJ mesh file importer (only triangles for now, materials not supported atm)
  • Super simple to use straight in main.cpp
  • Very customizable and easy to improve uppon
  • Wireframe rasterizing

Future Features

  • Mirror surfaces
  • Portals
  • Lighting
  • Global Ilumination
  • 3D Navmesh
  • Audio Occlusion
  • Physics
  • Input Bindings
  • GPU Rendering
  • Editor

Current goal

Optimizing rendering and implementing SIMD for math types (BSIMDVector3, BSIMDMatrix3x3, ..)

About

It's a general purpose game engine using a custom made pathtracing renderer, no OpenGL, Vulkan or DirectX raytracing functionalities are used here.

Topics

Resources

License

Stars

Watchers

Forks