{"id":15028961,"url":"https://github.com/panosk92/spartanengine","last_synced_at":"2026-05-14T20:01:22.926Z","repository":{"id":37848553,"uuid":"61415047","full_name":"PanosK92/SpartanEngine","owner":"PanosK92","description":"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\u0026D","archived":false,"fork":false,"pushed_at":"2026-05-12T00:04:59.000Z","size":688786,"stargazers_count":3025,"open_issues_count":20,"forks_count":261,"subscribers_count":77,"default_branch":"master","last_synced_at":"2026-05-12T00:24:05.039Z","etag":null,"topics":["atmospheric-scattering","bindless","bsdf","car-simulation","cpp","cutting-edge","ecs","game-engine","gpu-driven","imgui","livestream","path-tracing","physx","ray-tracing","restir-gi","spartan","ssao","taa","vulkan","xess"],"latest_commit_sha":null,"homepage":"https://panoskarabelas.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PanosK92.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":"funding.yml","license":"license.md","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["PanosK92"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"custom":null}},"created_at":"2016-06-18T03:27:49.000Z","updated_at":"2026-05-12T00:01:07.000Z","dependencies_parsed_at":"2023-10-03T03:33:23.608Z","dependency_job_id":"21e350ed-4108-48b6-b1d9-a1fbdb23a8ed","html_url":"https://github.com/PanosK92/SpartanEngine","commit_stats":null,"previous_names":[],"tags_count":1390,"template":false,"template_full_name":null,"purl":"pkg:github/PanosK92/SpartanEngine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanosK92%2FSpartanEngine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanosK92%2FSpartanEngine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanosK92%2FSpartanEngine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanosK92%2FSpartanEngine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PanosK92","download_url":"https://codeload.github.com/PanosK92/SpartanEngine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanosK92%2FSpartanEngine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33041204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atmospheric-scattering","bindless","bsdf","car-simulation","cpp","cutting-edge","ecs","game-engine","gpu-driven","imgui","livestream","path-tracing","physx","ray-tracing","restir-gi","spartan","ssao","taa","vulkan","xess"],"created_at":"2024-09-24T20:09:26.393Z","updated_at":"2026-05-14T20:01:22.919Z","avatar_url":"https://github.com/PanosK92.png","language":"C++","funding_links":["https://github.com/sponsors/PanosK92"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/data/textures/banner.bmp\" alt=\"Spartan Engine\"/\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eOne engineer. Ten years. A bindless, GPU-driven engine with real-time path-traced global illumination.\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eA personal R\u0026D engine, not a commercial product. No roadmap promises, no support queue, no compromises on the vision.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/PanosK92/SpartanEngine/actions\"\u003e\u003cimg src=\"https://github.com/PanosK92/SpartanEngine/actions/workflows/workflow.yml/badge.svg\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/TG5r2BS\"\u003e\u003cimg src=\"https://img.shields.io/discord/677302405263785986?logo=discord\u0026label=Discord\u0026color=5865F2\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/PanosK92/SpartanEngine/blob/master/license.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://discord.gg/TG5r2BS\"\u003eDiscord\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"https://x.com/panoskarabelas\"\u003eX\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"https://github.com/PanosK92/SpartanEngine/wiki\"\u003eWiki\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"https://github.com/PanosK92/SpartanEngine/issues\"\u003eIssues\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## The Engine\n\nSpartan started as a university project. Ten years of nights and weekends later, its rendering technology runs in **Godot Engine** and **S.T.A.L.K.E.R. Anomaly**, ships in a **published programming book**, and anchors a community of **600+** engineers on Discord.\n\nIt is built around one philosophy: **favor real-time over baked, dynamic over static, modern over safe.** Every system here exists to serve that.\n\n**There is a destination that gives all this tech a purpose.** Curious? **[Read the plan →](https://github.com/PanosK92/SpartanEngine/blob/master/plan.md)**\n\n---\n\n## The Trailer\n\n[![Engine Trailer](https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/video_promo.png)](https://www.youtube.com/watch?v=TMZ0epSVwCk)\n\n---\n\n## Worlds\n\n\u003cimg align=\"left\" width=\"420\" src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/world_selection_4.png\"/\u003e\n\nLaunch the engine and choose from a selection of default worlds. Each is physics-enabled—walk around, pick up objects with your mouse, or take a car for a spin.\n\n\u003cbr clear=\"left\"/\u003e\n\n### Forest\n\n\u003cimg src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/world_forest.jpg\"/\u003e\n\nThe most demanding world: **256 million** procedurally generated grass blades (inspired by Ghost of Tsushima), spanning **64.1 km²** covered with thousands of trees and rocks.\n\n### More Worlds\n\n| Sponza 4K | Basic |\n|:-:|:-:|\n| \u003cimg src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/world_sponza.png\"/\u003e\u003cbr\u003eClassic Dubrovnik building—ideal for path tracing | \u003cimg src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/world_cornell.jpg\"/\u003e\u003cbr\u003eContains some render test objects |\n\n| Liminal Space | Showroom |\n|:-:|:-:|\n| \u003cimg src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/world_liminal_a.png\"/\u003e\u003cbr\u003eReality shifts to a nearby frequency | \u003cimg src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/world_showroom_a.png\"/\u003e\u003cbr\u003eClean showcase—no experimental tech |\n\n| [The Plan](plan.md) |\n|:-:|\n| \u003cimg src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/master/.github/images/world_car_playground.png\"/\u003e\u003cbr\u003eA neon-soaked city, built to push the engine toward real-time path-traced driving through rain-slicked streets at 60fps, that's the plan. |\n\n---\n\n## Rendering\n\nThe renderer is built around one principle: **the GPU owns the data.** Every resource (geometry, materials, textures, lights, transforms, AABBs) lives in persistent, globally accessible buffers. No per-draw descriptor updates, no per-draw resource binding, no CPU-side draw loops.\n\n### Architecture\n\n- **Zero-binding draw path**, all per-draw data lives in a single bindless storage buffer, push constants carry only an index\n- **Single global vertex and index buffer** for all geometry (inspired by id Tech), with **vertex pulling** that bypasses the Input Assembler and is shared by rasterization and ray tracing\n- **GPU-driven indirect rendering** with per-meshlet frustum, Hi-Z occlusion, and backface cone culling, the CPU issues a single `DrawIndexedIndirectCount` per pass\n- **Meshlet clustering** via meshoptimizer, no mesh shader dependency\n- **Bindless everything**: materials, lights, samplers, uber shaders, minimal PSO permutations\n- **Universal HLSL** compiled for both Vulkan (SPIR-V) and DirectX 12\n- **GPU-side asset processing**: mip generation (FidelityFX SPD) and texture compression (Compressonator) at load time, not baked offline\n- **Unified deferred rendering**, opaque and transparent surfaces share the same BSDF and render path\n- **Async compute** for SSAO, screen-space shadows, and cloud shadows, parallel with shadow rasterization\n\n### Lighting and Global Illumination\n\n- **Clustered deferred shading** with a GPU-built logarithmic-Z grid and cone-vs-AABB culling for spots, scales to many local lights at near-constant per-pixel cost\n- **ReSTIR path tracing** with spatiotemporal reservoir resampling for real-time multi-bounce global illumination\n- **Hardware ray-traced reflections and shadows** via ray queries\n- **Atmospheric scattering** and image-based lighting with bent normals\n- **Volumetric fog and clouds** with temporal reprojection and shadow casting\n- **Screen-space shadows** (inspired by Days Gone) and **XeGTAO** ambient occlusion\n- **Shadow map atlas** with fast filtering and penumbra estimation\n\n### Performance and Upscaling\n\n- **Variable rate shading** and **dynamic resolution scaling**\n- **TAAU**, temporal anti-aliasing with built-in upsampling, Halton-jittered with variance-clip history reprojection\n- **Intel XeSS 2** upscaling\n- **FXAA**\n- **Custom breadcrumbs** for GPU crash tracing and post-mortem debugging\n\n### Camera and Post-Processing\n\n- Physically based camera with auto-exposure and physical light units (lumens and kelvin)\n- Tonemappers: ACES, AgX, Gran Turismo 7 (default)\n- HDR10 output\n- Bloom, motion blur, depth of field, chromatic aberration, film grain, sharpening (CAS)\n\n---\n\n## Car Simulation — 200Hz\n\nA full vehicle dynamics simulation running inside the PhysX fixed-timestep loop.\n\n| System              | Details                                                                                            |\n| ------------------- | -------------------------------------------------------------------------------------------------- |\n| **Tires**           | Pacejka MF 5.2 with combined slip, thermal model, pressure, wear, multiple surfaces                |\n| **Suspension**      | Convex hull sweep contact, spring-damper, anti-roll bars, bump stops, bump steer, camber/toe       |\n| **Weight transfer** | Geometric + elastic lateral split via roll center heights and roll stiffness                       |\n| **Drivetrain**      | Engine torque curve, turbo, 7-speed gearbox, rev-match, open/locked/LSD differentials, RWD/FWD/AWD |\n| **Brakes**          | Thermal model with fade, front/rear bias, slip-threshold ABS                                       |\n| **Aerodynamics**    | Drag, front/rear downforce, ground effect, DRS, rolling resistance                                 |\n| **Steering**        | Ackermann geometry, high-speed reduction, self-aligning torque                                     |\n| **Assists**         | ABS, traction control, handbrake                                                                   |\n| **Integration**     | Semi-implicit Euler with consolidated net-torque per wheel                                         |\n| **Input**           | Controllers and steering wheels with haptic feedback                                               |\n| **Camera**          | GT7-inspired chase camera with speed-based dynamics                                                |\n\n---\n\n## Engine Systems\n\n| System            | Details                                                                                           |\n| ----------------- | ------------------------------------------------------------------------------------------------- |\n| **Particles**     | GPU-driven with compute emission and simulation, depth-buffer collision, soft blending            |\n| **Animation**     | Skeletal hierarchies with keyframed clips and four-bone vertex skinning                           |\n| **Physics**       | PhysX with rigid bodies, character kinematics, and vehicle dynamics                               |\n| **Scripting**     | Lua 5.4 via Sol2 with full engine API and lifecycle callbacks                                     |\n| **Audio**         | 3D positional audio, streaming, reverb, procedural synthesis via SDL3                             |\n| **Input**         | Keyboard, mouse, controllers, and steering wheels with haptic feedback                            |\n| **Entity system** | Component-based with transform hierarchies, prefabs, and XML serialization                        |\n| **Threading**     | Hardware-aware thread pool with parallel loops and nested parallelism detection                   |\n| **VR (WIP)**      | OpenXR with Vulkan multiview single-pass stereo across the full pipeline                          |\n| **Profiling**     | Nsight/RGP-style timeline with separate graphics and async compute lanes, RenderDoc integration   |\n| **Asset import**  | 40+ model formats (Assimp), 30+ image formats (FreeImage), 10+ font formats (FreeType)            |\n| **Editor**        | ImGui-based with hierarchy, asset browser, inspector, script and shader editors, gizmos, profiler |\n\n---\n\n## Getting Started\n\n### Building\n\nOne-click project generation—see the **[Building Guide](https://github.com/PanosK92/SpartanEngine/wiki/Building)** for details.\n\n### Learning the Engine\n\nStart with **[Game.cpp](https://github.com/PanosK92/SpartanEngine/blob/master/source/runtime/Game/Game.cpp)**, it shows how default worlds are loaded and is the best entry point for understanding the engine's structure. For gameplay scripting, check out the **[Lua Scripting Guide](https://github.com/PanosK92/SpartanEngine/blob/master/scripting.md)**, it covers the full API, lifecycle callbacks, and examples.\n\n---\n\n## Podcast\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"400\" src=\"https://raw.githubusercontent.com/PanosK92/SpartanEngine/refs/heads/master/.github/images/podcast.png\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cstrong\u003eExploring the tech world and beyond\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n      Meeting the brightest minds across cutting-edge industries.\u003cbr\u003e\u003cbr\u003e\n      📺 \u003ca href=\"https://youtu.be/OZRwCZhglsQ\"\u003eWatch on YouTube\u003c/a\u003e\u003cbr\u003e\n      🎧 \u003ca href=\"https://open.spotify.com/show/5F27nWKn9TZdClc5db9efY\"\u003eListen on Spotify\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Community\n\n### Contributing\n\nContributors get access to **[exclusive perks](https://github.com/PanosK92/SpartanEngine/wiki/Perks-of-a-contributor)** designed to accelerate learning and skill development.\n\n**[Read the Contributing Guide →](https://github.com/PanosK92/SpartanEngine/blob/master/contributing.md)**\n\n### Sponsorship\n\nI cover the Dropbox hosting that makes the one-click setup work. If Spartan has taught you something, or if you just want to fuel another decade of this, **[sponsorship](https://github.com/sponsors/PanosK92)** goes directly into keeping the lights on and the project moving.\n\n---\n\n## Projects Using Spartan\n\n| Project                    | Description                                                                                                                                                                                                                      |\n| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Godot Engine**           | Integrates Spartan's TAA ([view source](https://github.com/godotengine/godot/blob/37d51d2cb7f6e47bef8329887e9e1740a914dc4e/servers/rendering/renderer_rd/shaders/effects/taa_resolve.glsl#L2))                                   |\n| **S.T.A.L.K.E.R. Anomaly** | Rendering addon using Spartan's source ([ModDB](https://www.moddb.com/mods/stalker-anomaly/addons/screen-space-shaders))                                                                                                         |\n| **Programming Book**       | Jesse Guerrero's [beginner programming book](https://www.amazon.com/dp/B0CXG1CMNK) features Spartan's code and community                                                                                                         |\n| **University Thesis**      | Originally created as a portfolio piece while studying at the [University of Thessaly](https://en.wikipedia.org/wiki/University_of_Thessaly) with Professor [Fotis Kokkoras](https://ds.uth.gr/en/staff-en/faculty-en/kokkoras/) |\n\n**Using code from Spartan?** [Reach out](https://twitter.com/panoskarabelas), I'd love to showcase your project!\n\n---\n\n## License\n\n**[MIT License](https://github.com/PanosK92/SpartanEngine/blob/master/license.md)**, free to use with attribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanosk92%2Fspartanengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanosk92%2Fspartanengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanosk92%2Fspartanengine/lists"}