Skip to content

PanosK92/SpartanEngine

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date
Oct 19, 2023
Oct 8, 2023
Sep 25, 2023
Oct 24, 2023
Oct 24, 2023
Oct 24, 2023
Sep 25, 2023
Jun 2, 2019
Jun 18, 2016
Apr 22, 2023
Aug 13, 2023
Oct 24, 2023
Sep 27, 2023
May 31, 2021
Sep 8, 2022
Mar 30, 2023
Mar 30, 2023
Jul 22, 2023
Oct 13, 2023

Repository files navigation

Spartan is a research-focused game engine designed for real-time solutions, providing a dynamic experience. Not intended for game development yet, it serves as a valuable study resource due to its clean, modern, and high-quality architecture.

  • For occasional updates regarding the project's development, you can follow me on twitter.

  • For questions, suggestions, help and any kind of general discussion join the discord server.

  • For issues and anything directly related to the project, feel free to open an issue.

  • Adhering to the MIT license is appreciated. This means that you can copy all the code you want as long as you include a copy of the original license.

Status

build_status Discord

Media

Video: Livestream of FSR 2 integration Video: A demonstration of the engine's capabilities (old)
Image1 Image2
Screenshot: Bistro Screenshot: Minecraft

Worlds

Upon launching the engine, you'll be greeted with a selection of default worlds to load. Each world is physics-enabled, allowing you to walk around, pick objects using your mouse, and even drive a car. These worlds are designed to offer a diverse and enjoyable experience.

Sponza Forest

The Sponza building, found in Dubrovnik, is showcased here with a true-to-life scale.

A height map-generated forest featuring water bodies amidst tens of thousands of trees and plants, all set in a walkable terrain.
Car Doom

A drivable car implemented with a highly realistic tire friction formula, simulation of gearbox, anti-roll bar, and more.

This is a simple scene with the soundtrack from E1M1

Features

Rendering

  • 128-byte push constant buffer for lightning fast GPU data transfer.
  • AMD FidelityFX suite for enhanced visuals and performance.
  • Bloom effect inspired by Resident Evil 2's RE Engine.
  • Unified deferred rendering with transparency (BSDF with same render path and shaders).
  • Camera-controlled depth of field, motion blur and chromatic aberration.
  • Comprehensive debug rendering options.
  • Frustum culling.
  • Physical light units (intensity from lumens and color from kelvin).
  • Physically based camera.
  • GPU-based mip generation (single dispatch).
  • Advanced shadow features with penumbra and colored translucency.
  • Screen space global illumination, reflections, and shadows.
  • Temporal anti-aliasing for smooth visuals.
  • Vulkan and DirectX 12 backends with universal HLSL shaders.
  • Volumetric lighting for atmospheric effects.

System

  • One-click build for easy setup.
  • Entity-component and event systems for flexible architecture.
  • Universal input support, including mouse, keyboard, and controllers (tested with a PS5 controller).
  • Comprehensive physics features.
  • CPU & GPU profiling for performance tuning.
  • XML support for data handling.
  • Thread pool for efficient multitasking.

Formats

  • Wide file format support: 10+ for fonts, 20+ for audio, 30+ for images, and 40+ for models.

Roadmap

  • Keep an eye on Vulkan, it's stable but you never know.
  • Continue switching to bindless.
  • Continue work on D3D12 (on going and non blocking since Vulkan is there).
  • Skeletal Animation.
  • Atmospheric Scattering.
  • Eye Adaptation.
  • Subsurface scattering.
  • Ray traced reflections & shadows.
  • Dynamic resolution scaling (and use FSR 2, to properly reconstuct).
  • Export on Windows.
  • Improved the editor style/theme.
  • Scripting.
  • Linux port.

If you are looking at what to do, there are more ideas in the issues section.

Wiki

Don't forget that there is a wiki that can help answer some of your questions. Here are some of it's contents: