Open-source project
PanosK92/SpartanEngine avatar
PanosK92/SpartanEngine

SpartanEngine: one engineer, and the README says the code is the documentation

A game engine with a fully bindless, GPU-driven renderer featuring real-time path-traced global illumination, hardware ray tracing, and a physics simulation running at 200Hz, built over 10+ years of R&D.

3,236 stars282 forksC++MIT

At a glance

What is it?
A bindless, GPU-driven C++ engine with ReSTIR path tracing, IES photometric light profiles and a 200 Hz vehicle model, written by one person since a university project in 2014. It has no tutorials and no support promise, its release tags carry a build timestamp down to the second, and one of the three newest releases is dated after the last recorded commit.
Who is it for?
This is an engine to read rather than to adopt, and the README is candid about that. If you want a renderer to study, the architecture section is unusually specific and the captures are all real time rather than offline renders, so the claims can be checked against the same binary.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • PanosK92/SpartanEngine3,236 ★ · +138
Star history
Repository2026-08-022026-11-13
PanosK92/SpartanEngine3.1k3.2k

138 Stars in the last 103 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The README rules out the readers it cannot help

The second paragraph of the document is a refusal, and it is worth quoting before any feature list. The source is open, but this is not a product and there is no hand-holding: no tutorials, no support queue, no compatibility promise, and the code is the documentation. It says the engine lives on the bleeding edge and moves fast, and expects engineers with the agency to read the source and find their own answers. The scale is stated in the heading above it: one engineer, twelve years, built from scratch, with the body text dating the start to a university project in 2014. What it does claim about reach is specific: the rendering technology now runs in Godot Engine and in S.T.A.L.K.E.R. Anomaly, it appears in a published programming book, and more than 600 engineers follow the development on Discord.

The GPU owns the data and the CPU issues one indirect draw

The renderer is organised around a single principle, that the GPU owns the data. Geometry, materials, textures, lights, transforms and bounds live in persistent, globally accessible buffers, with no per-draw descriptor updates, no per-draw resource binding and no CPU-side draw loops. The consequences are specific. All per-draw data sits in one bindless storage buffer, and push constants carry only an index. A single global vertex and index buffer holds all geometry, an approach the README credits to id Tech, and vertex pulling bypasses the Input Assembler while being shared by rasterisation and ray tracing. Culling is per meshlet with frustum, Hi-Z occlusion and backface cone tests, after which the CPU issues a single indirect draw call per pass. Geometry is clustered into meshlets by meshoptimizer, using mesh shaders where they exist and falling back to vertex pulling where they do not.

Assets are processed on the GPU at load time, not baked offline

One architectural decision saves a whole pipeline. Mip generation uses the FidelityFX spatial denoiser code and texture compression uses Compressonator, both run on the GPU when a texture is loaded rather than being produced offline and committed. Everything else follows from treating the asset as runtime data rather than a build artefact. Shaders are written in one universal HLSL dialect and compiled for two targets, Vulkan through SPIR-V and DirectX 12, which is why the engine can sit behind two graphics APIs with one source of shading code. Rendering is unified and deferred, with opaque and transparent surfaces sharing a single BSDF and a single pass. And ambient occlusion plus screen-space shadows are moved onto async compute so they run in parallel with shadow rasterisation rather than after it.

IES photometric profiles, which the README calls a commercial engine feature

Spot lights in this engine emit the measured beam of a real fixture rather than a cone approximation. The profiles follow the LM-63 photometric standard, and the README names the range: car headlights with their regulation cut-offs through to architectural downlights, with correct lumens and candela maintained across direct lighting, volumetric fog and path tracing. The document says outright that this is a feature usually reserved for the large commercial engines, which is the kind of claim worth checking against the source rather than taking at face value. The supporting machinery is there too: clustered deferred shading with a logarithmic-Z grid built on the GPU and cone-versus-box tests per spot, so a large number of local lights stays close to constant cost per pixel. Hardware ray queries handle reflections and shadows.

Path tracing, froxel fog and an ocean that runs an inverse transform on the GPU

Global illumination is ReSTIR path tracing with spatiotemporal reservoir resampling, aimed at multi-bounce light in real time. Volumetric fog uses froxels: one view-aligned volume carrying height fog, distance fog, sun shafts and underwater caustic shafts, with temporal reprojection and shadowing. The ocean is an FFT approach with a Tessendorf spectrum and a multi-cascade inverse transform running in compute, feeding a camera-following clipmap with choppy displacement, dynamic normals and crest foam. Clouds are volumetric in the Nubis style, baked into the sky panorama with cumulus and cirrus layers, multiple scattering and aerial perspective. Ambient occlusion is XeGTAO, screen-space shadows are credited to an inspiration from Days Gone, and the shadow map is an atlas with fast filtering and penumbra estimation.

Upscaling is two vendor SDKs and a temporal fallback of its own

Upscaling covers three paths. NVIDIA DLSS 4.5 Super Resolution at SDK 310.9.1 and Intel XeSS 2.0.2 at SDK 3.0.2 are the vendor options, and the engine ships its own as well: TAAU, temporal anti-aliasing with built-in upsampling, Halton jitter and a variance-clipped history. Alongside them sit variable rate shading and dynamic resolution scaling. Distance is handled by foliage impostors used as the final level of detail, so a dense forest stays cheap far from the camera, and textures stream inside a fixed memory budget rather than whatever the machine can hold. For debugging there are custom GPU breadcrumbs, which is the sort of feature that only matters after something has already gone wrong on a driver, and which is a decent signal about who this is written for.

Three release tags carry timestamps, and one is later than the last commit

The release names are dates and times. The three newest are 2026.10.01.16.56, 2026.10.01.17.12 and 2026.10.04.23.31, so every build gets its own tag down to the second, and two of the three landed on the same afternoon sixteen minutes apart. The last recorded commit on the default branch master is dated 2026-10-01, yet the newest tag carries a date two days later than that. That is not a contradiction inside the repository, since a tag can be cut from a local build, but it does mean the tag string is a build clock rather than a description of a change, and a reader comparing a release against the source will find dates that do not line up. The release titles themselves are just the tag repeated, so there is no change note to read on the release page either.

Every world is physics enabled, and the project files are generated

The captures are described as real time rather than offline renders, and the world list is where the engine's scope shows. There is an island roughly 30 kilometres across with towns, an airport, more than 200 spline roads, instanced forests and an FFT ocean; a coastline scene with dynamic time of day, atmospheric scattering and shallow-water caustics; a showroom with layered car paint, clearcoat and ray-traced reflections; two passes over the Sponza scene, one with no light probes and no bake and one showing multi-bounce light through cloth and stone; and a procedural, streamed space lit only by path-traced global illumination. Launching the engine means picking a world, and none of them is a canned demo because every world is physics enabled. The tree holds worlds, source, third party code, data and tools, plus a shell and a batch script for generating the project files themselves.

Editorial conclusion

This is an engine to read rather than to adopt, and the README is candid about that. If you want a renderer to study, the architecture section is unusually specific and the captures are all real time rather than offline renders, so the claims can be checked against the same binary. If you want to ship a game on it, the absence of tutorials, support and any compatibility promise is the deciding factor, and you should expect to read source to answer your own questions. Two things to verify before building: the licence, since the packaging data records none and the only file is a lowercase license.md, and which build you are actually getting, since the newest release tag carries a timestamp later than the last recorded commit.

Frequently asked questions

What is PanosK92/SpartanEngine?

A bindless, GPU-driven C++ game engine written by one engineer, started as a university project in 2014, with real-time path-traced global illumination, hardware ray tracing and a vehicle simulation at 200 Hz. Its rendering technology also runs in Godot Engine and in S.T.A.L.K.E.R. Anomaly.

Is SpartanEngine a good fit for a beginner?

Not by its own account. The README states the source is open but this is not a product, with no tutorials, no support queue and no compatibility promise, and that the code is the documentation. It expects competent engineers to read the source and answer their own questions.

Which graphics APIs does SpartanEngine target?

Vulkan and DirectX 12, from one universal HLSL shader dialect compiled to SPIR-V and to the DirectX path. Mesh shaders are used when available, with vertex pulling as the fallback.

Does SpartanEngine need light probes or baked lighting?

Not for the scenes shown. One Sponza capture is described as ReSTIR path tracing with no light probes and no bake, and mip generation and texture compression are done on the GPU at load time rather than baked offline.

What licence does SpartanEngine use?

The packaging data records no licence for the repository. A lowercase license.md file sits at the root, and the badge beside the README title links to it, so the file rather than the metadata is where the terms have to be read from.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/panosk92-spartanengine.svg)](https://hysenlabs.com/projects/panosk92-spartanengine)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/panosk92-spartanengine.svg)](https://hysenlabs.com/projects/panosk92-spartanengine)

Was this useful?