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.

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: