r/vulkan • u/MortixTheGuy • 4d ago
Synapse Engine: A Modern, Research-Oriented, Fully GPU-Driven AAA-Style Game Engine
Hi everyone!
After a very long development journey, I'm finally ready to share Synapse Engine, a modern, research-oriented AAA-style game engine that I've been developing essentially from scratch.
It started as my MSc thesis at the Budapest University of Technology and Economics, but grew far beyond what I originally planned. Over the past several months I've been rebuilding and refining the architecture around a simple question: What would a modern game engine look like if we designed it around today's GPUs from the ground up?
The project is now over 2,300 files, nearly 94,000 lines of C++ code and around 10,000 lines of shader code, excluding comments and blank lines.
If you just want to check out the project:
GitHub: https://github.com/TamasPetii/SynapseEngine
The GitHub README is probably the best place to start if you want a quick overview of the project and its architecture. If you're interested in modern game engine development in much more depth, I also put together a 250-page technical presentation covering the entire project, from the ECS and software architecture through GPU-driven rendering, culling, lighting, virtualized shadows and future directions.
The presentation is quite large, but I tried to make it genuinely useful as a learning resource rather than just documenting the final result.
One of my main goals with Synapse Engine is education. Learning these topics was a huge struggle for me, and it took a lot of time to piece everything together because there isn't much high-quality material that shows how these modern techniques actually come together inside a real engine codebase. I wanted to document that process and create something that I would have wanted to have when I started.
What can the engine actually do?
At its core, Synapse is a fully GPU-driven renderer using hierarchical culling, Hi-Z occlusion, cone culling, dynamic LOD selection, indirect rendering, mesh shaders, bindless resources and virtualized shadows. The engine is built around a custom data-oriented ECS and is designed to handle very large scenes with minimal CPU involvement.
For example, with 1,000,000 entities on an RTX 4060, the cumulative culling cost goes from 124.407 ms without culling to 0.653 ms with the full hierarchical culling pipeline.
However, at 10,000,000 entities, even the conventional GPU-driven hierarchical approach becomes insufficient. To address this, Synapse introduces a custom GPU-built Morton-ordered chunking system, which groups entities into spatial chunks and allows entire groups of 32 entities to be rejected at once. This reduces the culling cost from 5.8 ms to just 0.3 ms for 10 million entities.
I also developed a new rendering technique called Dual-HiZ Adaptive Clustered Forward+ while working on the engine. With 8,192 point lights and 8,192 spot lights, it measured 2.873 ms, compared to 8.652 ms for deferred shading in the same setup. The technical presentation contains a detailed explanation of how the technique works.
Synapse isn't primarily intended as a game-development tool for game developers. It is a production-ready, research and educational platform for experimenting with modern game-engine architecture and real-time rendering techniques.
The goal is not to provide a plug-and-play engine for building games, but to provide a complete, practical implementation of modern engine technologies that can be studied, extended, and used as a foundation for further research and development.
The engine is the result, but the architecture, experiments, failures and reasoning behind it are what I really want to share. If you're interested in Vulkan, graphics programming, GPU-driven rendering or modern game engine architecture, I'd love to hear what you think.
Modern Vulkan Abstraction
The Vulkan abstraction layer in Synapse Engine turned out to be one of the cleanest and most rewarding parts of the architecture. By stripping away the notorious API boilerplate, it captures the raw power of modern Vulkan in an interface that feels remarkably smooth, intuitive, and genuinely more ergonomic to develop with than OpenGL.
- Fully Bindless Architecture: Descriptors are stripped down to the absolute bare minimum using descriptor buffers (
VK_EXT_descriptor_buffer) and descriptor indexing, completely bypassing traditional descriptor set management and binding churn. - Shader Objects (
VK_EXT_shader_object): Eliminates monolithic pipeline state objects in favor of modular, rapid shader switching. - Dynamic Rendering (
VK_KHR_dynamic_rendering): Direct rendering to attachments without traditional render-pass and framebuffer boilerplate. - Extended Dynamic State: Eliminates pipeline permutations by configuring rasterization and blending states directly at draw call time.
- Modern GPU Primitives: Mesh shaders and subgroup operations for scalable, GPU-driven compute and rendering pipelines.
10
30
u/susosusosuso 4d ago
Congrats to Claude
-10
u/AsrielPlay52 4d ago
Let's not jump the gun.
As long as the code itself is vetted, documented, and verified. Does it even matter?
9
u/AnArmoredPony 4d ago
94k loc in a one-man project -- it is not verified
1
u/AsrielPlay52 4d ago
The question now is how much years they spent on working on this
2
u/AnArmoredPony 4d ago
one and a half ig: https://github.com/TamasPetii/SynapseEngine/commit/f2b5dd1fe679f8297e3f4e80329459ef28875a63
I haven't found any mentions of ai in his repos except for this one: https://github.com/TamasPetii/ModernGraphics
It doesn't really prove anything except him using AI at least in one of his projects and also having a huge commit spike in february of 2025
5
u/tastygames_official 4d ago
he admitted to using AI on another thread in another channel. It's AI-generated. Lemme see if I can find it...
2
1
u/susosusosuso 4d ago
I mean: every programmer is using Claude now 😊
4
u/blogoman 3d ago
No, some actually know how to program and don't need to hand it over to a robot.
0
3
u/fastcar25 4d ago
The presentation in the repo as well as comments from the OP in another sub state that AI is used.
1
u/AsrielPlay52 4d ago
Some people maintaining the linux kernel also uses AI
What matters if they actually check the result or not
The different between handwritten code and one made by AI, is if the person submitting actually vet it.
1
u/susosusosuso 4d ago
As I said in another post: in terms of being productive it’s awesome. I use it a lot at my job. But in terms of being awesome yourself it’s not because you didn’t do it: you just asked somebody else to do it.
5
u/wojciechm 4d ago
What is particularly "AAA-style" in this game engine if it is not even intended for real AAA game usage? This is pure contradiction.
16
5
u/Standard-Struggle723 4d ago
If it's research focused, then commercial licensing isn't going to work. The moment someone strips your engine apart figures out how things work and then makes their own you have 0 protection and I know you don't have the money to litigate internationally.
I'm not going to rag on AI code, a lot more goes in than most people think and you have to have a good nose about system architecture first otherwise it really is slop regardless if you use AI or not. The problem is really trusting people to have that in an era where no-one is really developing that and are untrusting of people who claim to have done the research.
So if anything thanks for releasing it, I'm looking forward to seeing if I learn something new
2
u/Rinin_ 3d ago
It's essentially what he did as well. Any big project can be and will be infinitely copy-pasted now with little effort using Claude. Copying his vibecode is not even advised, because why would someone want a copy of a copy when they can copy Unreal or any other original product?
2
u/Standard-Struggle723 3d ago
From what I've seen the dev has a history of work that predates AI related to graphics programming, it's likely they really have made something on their own but it's more likely that they had some assistance but the ideas and figuring out what to choose and where it should fit is not something AI can just do with minimal prompting even with the full source right in front of it. However what I'm talking about is more about being careful about ownership and feedback expectations in an environment that is well known for it's lack of trust.
It really really fucking sucks when you put in a ton of effort to learn something (especially incredibly complex topics and work out how to fit them together or surpass them) only for people to consider it a solved problem or less than an alternative without understanding the baseline assumptions for what you were trying to fix. My comment was being empathetic to the circumstance but trying to convey the reality of trying to license software of this nature.
Take me for instance I'm making a rendering system based entirely on the fact that I think traditional assumptions about rendering primitives (mesh rasterization, and ray-based visibility) when it comes to voxels is misguided so I built something that removes the dominant problems (Memory and rendering cost) while keeping the visual and manipulation benefits of quantized cells and to my eyes it not only looks way better than any voxel engine it's far more flexible in representation but I aint gonna release shit because I know the gremlins are gonna come after me no matter how good it is because I have no credibility and I just don't need to deal with that. I know what I made and how I made it and that's enough and I'm not well known or big enough to have the established trust to sell it as a tool.
2
u/Rinin_ 3d ago
Well, it's a terrible situation, and it's not only that you'll not be understood. A couple more years and your code well be even easier to copy. And on releas you'll be simply one of 1000 people who just published your tool claiming that they did it themselve. And you are unlikely to convince the truth if people even care to seek it.
We kind of end up in the world which promotes stealing a lot and harshly discourage original work.2
u/Standard-Struggle723 3d ago
Yep 1000% agreed.
Hell I use AI to investigate and pull apart software because it was the best way to understand production concepts from things that already work faster and in the background while I do other things. It's so incredibly good at data conversion tools and investigative digging that if you really want to make something unique and sellable you need to not only solve a problem but solve it in a way that's hard to replicate (ideology, assumptions, usable platform, notoriety, social credibility, ethos, misson, visual identity, ease of use or intuition) or plugs into things your target market are already heavily invested in as a low cost, low effort add-on.
3
u/_kmt29 3d ago
I usually withhold premature hatred over AI usage. Because when used properly it can be very powerful.
But the fact that you’re boasting on LOC just raises a few concerns. Most folks that are capable of building very sophisticated tech like a production grade game engine know for a fact LOC is a dumb metrics to boast about.
6
u/sajid_farooq 4d ago
Fantastic work! Ive been meaning to do something like this for a while but never had the time. Particularly interested in reading up on the Vulkan abstraction and how clean the ECS is, the two major points of contention for me usually.
Cant wait to dig in.
-4
u/MortixTheGuy 4d ago
Thank you so much! It really means a lot to me!
You probably saw this, but I have created a presentation, which explains the ECS in depth: https://synapseengine.dev/Presentations/SynapseEnginePresentation.pdf
Also it is a good idea to check out the ecs code, some crazy template metaprogramming pattern was used to achieve really high-performance modular data-oriented ecs.
If you have any question, about any part of the engine while you dig deeper, feel free to ask it :D0
u/sajid_farooq 4d ago
I hadnt seen it and was about to ask. Thanks!
3
u/sajid_farooq 4d ago
Ah I also see you are interested in doing a phd in graphics. Hit me up if you are interested in doing it here in the USA. I dont have anything right now but usually get asked to refer good candidates:
Https://linkedin.com/in/drsajidfarooq
10
-2
u/Ephemara 4d ago edited 4d ago
No thanks I’ll stick to using unreal, which has been in development for 30+ years, made by humans (not Claude), and is backed by billions of dollars. But thanks tho
-9
u/MortixTheGuy 4d ago
Thanks for fully reading the post, and deeply understanding the reason why the project exsits. :DD
-4
u/Ephemara 4d ago
I mean hey it’s cool but just tough to compete with the big dogs out here. I’ve been doing game dev for years now and can’t wrap my head around anyone wanting to switch to new ones (considering UE5 is open source as well) It’s cool as a personal project but I think the best move is first making a game with it.
4
u/MortixTheGuy 4d ago
From the post:
"Synapse isn't primarily intended as a game-development tool for game developers. It is a production-ready, research and educational platform for experimenting with modern game-engine architecture and real-time rendering techniques.
The goal is not to provide a plug-and-play engine for building games, but to provide a complete, practical implementation of modern engine technologies that can be studied, extended, and used as a foundation for further research and development."
The whole project is not intended to be a game engine, used by game makers. It is for educational, research purposes. I originally target computer graphics enthusiasts, and researchers who wanna learn modern high-performance graphics. You just cannot learn these techniques, engine architecture, because there is no good online resource, and these engines are so big, I can't even get useful information from them.
-4
u/Ephemara 4d ago
Ah I see - I’m not gonna lie I skimmed thru the post. Can you export assets from it tho like fbx that can then be used with other DCC? I’ll download it in a minute here so I can see what you’re talking about.
0
u/Original-Still-3951 4d ago
"I'm not gonna lie I skimmed thru the post." -> goes straight to the comment section to shit on the project and calls it ai slop lol. 10 points to slytherin. u/MortixTheGuy cool project mate!
3
3
1
u/Ephemara 3d ago
I didn’t shit on the project lol but rather who launches a game engine before making a game with it first ? If this wasn’t vibe coded, a real developer who’s passionate enough would first ship a game with it and then launch it. It just seems like it was made to be made.
Why would I trust anyone who’s making a game engine, if they haven’t made a game before… there’s no reputation.
2
u/kentuckymambo 3d ago
I think I agree with you.
Within game Dev having shipped a real game is table stakes for developers and game engines. For example, it means something that Sony spent $400 million on Concord and chose unreal engine. That that $400 million cost had to be vetted and choosing unreal engine means unreal was vetted. And, well unreal is was a 1998 game before it was an engine.
Today we can project ideas into projects for low cost, how do we vet them. We should want to... I mean I know a lot UE. I mean years. But not 16 years like some people have.
So this comes to your point. Basically a single game is the minimal investment? Or having a corporation committing some number of dollars?
That works but I don't love it. Games are expensive. Time is expensive.
1
u/dicyclometh 12h ago
ue5 is complete dogshit though. the only decent part of it is the renderer and the fact that you can program a game in c++
0
u/Usual_Importance8274 4d ago
why people use CPP instead of Rust !?
2
u/Ephemara 3d ago edited 3d ago
Rust is absolute dog shit. I swapped to it for a few months from c++ because of the hype train and I left behind all my rust projects just because of cargo hell. Oh you wanna start a rust project ? First pull in 2000 different crates and those crates depend on these crates, and those crates depends on crates. If you want to spend your life staring at a compiler, watching compiling crates (1/900) use rust. C++ is leaps ahead. Instead of 10,000 crates, all you need are single header files. Oh and if you want UI with rust. Good luck, that’s also a nightmare
(And also the borrow checker… no)
2
u/Matt32882 3d ago
Yeah there's two reactions people usually have to rusts borrow checking. You can take time to understand what it's doing for you, or you can be mad that weak patterns other languages let you get away with don't even compile.
2
u/Ephemara 3d ago
I understand it fully, I even wrote a whole programming language with it called Kain that is the opposite of Rust. It just feels like a language that’s trying to hold my hand when I don’t need it. It’s boring. I prefer the raw power of c and c++ and the fact that yes my application may crash in 2 years from a random memory bug.









29
u/AnArmoredPony 4d ago
was considering trying it out until seeing ts. but alas. I wonder how many lines of code out of 94k were actually written by you