Skip to content

Latest commit

 

History

History
81 lines (73 loc) · 3.24 KB

README.md

File metadata and controls

81 lines (73 loc) · 3.24 KB

Strontium

Yet another open-source C++17 game engine using OpenGL.

This project started while I was taking a class on intermediate computer graphics, but has spiraled out of control to become something far more than just a practice repo.

test

sponza

Current Features

  • Graphics:
    • A deferred 3D physically based renderer using the Cook-Torrance BRDF.
    • A dynamic skybox system for fast, fully integrated atmospheric lighting.
    • Dynamic image-based lighting for the skyboxes mentioned above.
    • Directional lights with support for a single light with cascaded shadows.
      • A variety of shadow quality options which include percentage-closer soft shadows.
    • Many point and spot lights through deferred tiled light culling.
    • Rectangular analytical area lights (LTCs).
    • Unified volumetrics for fog and haze.
      • Supports bounding box fog volumes, spherical fog volumes, depth-based fog, and exponential height fog.
    • Horizon-based ambient occlusion.
    • Physically-based materials using a metallic workflow.
    • HDR rendering.
    • Skeletal and rigged animation.
  • Physics
    • A robust implementation of Jolt Physics.
    • Several colliders (sphere, box, cylinder, capsule).
    • Collision callbacks for:
      • A contact being added between two shapes.
      • A contact persisting between two shapes.
      • A contact being removed between two shapes.
  • Other:
    • Custom scene serialization and loading.
    • Custom material serialization and loading.
    • A syncable prefab system for rapid scene prototyping. Currently a WIP.
    • Multithreaded asset loading for many supported model formats (using Assimp) and images.
    • A modern editor (with docking) designed with rapid prototyping in mind.
    • And lots more!

Planned Features

  • Graphics:
    • 2D rendering for particles, sprites and billboards.
    • Transparent object support.
    • Screen-space glossy reflections.
    • Screen-space voxel global illumination.
    • Point and spot light shadow maps.
  • C# Scripting.

Building

Strontium builds using CMake, so ensure that you have CMake installed before you attempt to build the project. As Strontium is fully platform agnostic, both Windows and Linux builds are possible (although the Linux buildsystem is WIP). Start by recursively cloning the repo using git:

git clone https://github.com/ksawatzky777/Strontium.git --recursive

Then, create a build directory in the repo source

cd Strontium
mkdir build

Afterwards, you can run CMake from the build directory and specify that source directory is in Strontium:

cd build
cmake ../

If you're on Windows, you can open the StrontiumEngine.sln solution file. Set the startup project to StrontiumEditor and build with Visual Studios.

Dependencies

  • Assimp
  • EnTT
  • Glad
  • GLFW
  • GLM
  • Dear ImGui
  • ImGui-Addons (notably for the cross-platform Dear ImGui-based file browser)
  • ImGuizmo
  • stb_image and std_image_write
  • yaml-cpp
  • Jolt Physics