Software Engineer, #neovim contributor.

Joined March 2012
2 Photos and videos
Nicolas Hillegeer retweeted
This dude made a game engine for making PS1 games, it's such a quirky piece of hardware I honestly didn't see this happening. youtu.be/eFv2Yi0Z6E0
3
13
96
7,550
Nicolas Hillegeer retweeted
** Sega Genesis 3D engine Day 2 ** Added solid filled triangles. Added colors ( full 15 color buffer ) . All code in C so far apart form the buffer clear and DMA buffer sending so should be some good speedups to come yet once line / triangle routines are ported to 68k Assembly. I've done basic filling optimisations in C such as where we can write longs eg fill 8 pixels at once for interior parts of the triangle the function will utilise that. Still using 3 divisions per triangle setup , I think i will see if I can use a cheaper reciprical multiplication instead. All rotations vertices are calculated live , in 2d space at present. #SGDK #SegaGenesis #SegaMegadrive
14
75
466
17,375
Nicolas Hillegeer retweeted
.@runevision shared a breakdown of his GPU-friendly terrain erosion filter, designed to emulate erosion without simulation and simple to generate in chunks. The code is available: 80.lv/articles/fast-terrain-…
6
52
526
38,914
Nicolas Hillegeer retweeted
meshoptimizer 1.1 is out! Featuring two new major features, meshlet topology compression and opacity micromaps, as well as a few smaller features and improvements! Meshlet codec is heavily optimized for CPU decompression and output can be compressed further with Zstandard; opacity micromap rasterizer outputs hardware ready data representation and is fast and easy to integrate. Boosts and repository stars are welcome! github.com/zeux/meshoptimize…
3
100
606
30,076
Nicolas Hillegeer retweeted
Keep in mind, these guys were not skimming through a library of mp3s - they were pulling these samples from a vast collection of vinyl records in their basement. This is art.
French electronic band Daft Punk releases its second album, Discovery.
84
3,352
35,334
1,336,337
Nicolas Hillegeer retweeted
I switched from per mesh vertex and index buffers to a single global geometry buffer that holds everything. This is the same idea id Software used in id Tech for Doom, and you can see the vertex and index binding counts drop, which opens the road for easier GPU driven rendering.
10
4
172
33,026
Nicolas Hillegeer retweeted
It’s been 15 years since Nicolas Winding Refn gave us this unforgettable intro. Kavinsky’s ‘Nightcall’ sets the tone perfectly. Drive is a masterpiece and one of Ryan Gosling’s finest performances. Pure perfection.

58
298
2,054
77,427
Nicolas Hillegeer retweeted
Unreal Tournament 2004 is now available for free. ...well, I mean, you probably could've grabbed a GOG offline installer out the back of a truck earlier, but NOW it's Official/Legal and has the in-development community patch built in for ongoing support. oldunreal.com/downloads/ut20…
114
1,256
6,207
357,150
Nicolas Hillegeer retweeted
WHERE THE HECK DID THIS COME FROM? This is actually amazing!!!! makingsoftware.com/
31
218
2,114
94,897
Nicolas Hillegeer retweeted
Here is @antovsky walking me through a Dreams-like State Management known by many names and using couple of concepts (intrusive lists, slot maps, fat struct) I had no idea, that by putting pointers into elements, you can make everything be running based off an array, preserving parent-child, and sibling relationships! It was illuminating! We coined yet another term, Large Arrays of Things™. Do NOT confuse this with Entity Component System! @antovsky thank you!
6
10
262
12,639
RT @its_mirrors: One fun modeling trick to make spaces of ground look less dull is to add an alpha blended trim across its perimeter. Rare…
65
Nicolas Hillegeer retweeted
today was my last day as on my last hourly contract. officially full-time building my C engine. with me luck 🤞
just finished my ECS system in C and it turns out it's ~17x faster than @unity DOTS on the web that's 100k boids at ~90 FPS instead of 17 FPS sharing the code and link for this demo soon, details below 🧵
102
91
3,031
255,540
Nicolas Hillegeer retweeted
My dad (Richard Feynman) had a side hustle doing industrial consulting. He'd spend a few hours visiting a company, talking to the engineers, looking at stuff, and then maybe have a good suggestion. Sometimes he would bring his son along. I only recall one of his suggestions, but it made the company he was consulting for way better off, so I guess his exorbitant consulting fees were worth it. We could have been wealthier if he had done it systematically, but he didn't want to be organized about looking for jobs, so it just happened when someone asked.
We need more mercenary polymaths
282
1,472
23,738
2,507,354
Nicolas Hillegeer retweeted
The script for the "How I made a PS1 game in 2025 (Making of Yume Nikki PS)" is now 100% finished. It's the best thing I've ever written. The video will go hard. It's the type of content that I want to see more of.
24
294
4,045
79,968
Nicolas Hillegeer retweeted
SDF shadows (WebGPU). This is full cone-tracing implementation, that is - we get contact hardening and accurate penumbras. This is shadows-only view. The SDF resolution is 512x504x512, but the scene is pretty big. Tricky part is handing self-occlusion. Handling with 3 separate techniques: 1. Receiver plane bias 2. Occluder dilation 3. Statistical confidence estimate for near hits
3
16
274
12,271
Nicolas Hillegeer retweeted
Dolphin’s dev blogs are some of the best technical writing on internet and not enough people read them. My favorite is their “Ridiculous Ubershader”. Pre-Compilation of the GameCube’s graphical effects is impossible: 5.64 x 10^511 possible states! So what do you do?
42
619
9,330
401,681
Nicolas Hillegeer retweeted
Replying to @GustawMackay
There are also vertex normal tricks, when your game is not flat shaded/unlit. Source: wiki.polycount.com/wiki/Vert…
3
40
2,441
Nicolas Hillegeer retweeted
Why the character movement in my custom game engine felt janky and how I fixed it. In a game engine, most often, a character moves using the physics engine. Meaning, the player is not just a coordinate in space but a physical body. It has velocity, it handles collisions, and it interacts with the world. Now, as you might know, physics engines need stability. If you run them at variable framerates, things start breaking. Objects phase through walls or fly off into space because the math becomes unpredictable. This is why most game engines lock their physics loop to a 60Hz fixed rate. But here’s the problem: If you have a high-end system, you don't want to limit it at 60 FPS. That's a waste of good hardware. Now, that said, if the GPU is rendering at 144 FPS but the player's position (physics driven) only updates 60 times a second, it creates a micro-stutter that ruins the "smooth" feel of the game. A good way to fix this is to treat the character as two separate things: 1. The Physics Body (Invisible part): This is the "real" character. It lives in the 60Hz physics world, it moves the player and handles collisions. 2. The Visual Model and Camera (Visible part): This is what the player actually sees. It doesn't care about collisions, its only job is to look nice and smooth at whatever framerate the GPU is pushing. Once you have this separation, you can use interpolation to keep them in sync. Every time the physics clock ticks, you save the previous position of the invisible body before moving it to the new one. Between those ticks, calculate how far we are between the last physics update and the next one. By using this to drive the visible parts of the game, the stutters disappear. The physics loop stays fixed behind the scenes, while the visuals slide smoothly between the snapshots. Example: - Right after a tick: blend_weight= 0.0 (The visual model stays at the old physics position). - Halfway to the next: blend_weight= 0.5 (The visual model slides to the middle point). - Just before the next: blend_weight= 0.9 (The visual model is almost at the new physics position). Pro-Tip A critical mistake I made initially, and one many devs make, is parenting the camera and visible parts directly to the player body. If you do this, the camera inherits the discrete 60Hz physics movement by default. In that setup, interpolation won't work because the camera is "stuck" to the physics clock. For this fix to work you must decouple the camera and visuals from the body and move them separately. Player movement processing in Detis Engine: - fixed_process: Physics runs at 60Hz. Handles collisions and raw movement. - process: Variable rate. Mainly used for player input caching in the player case. - late_process: Variable rate. Handles interpolated camera movement after physics and everything else is done being processed. - render. Submits the final interpolated transforms to the GPU. The test environment in the video is running on an old 2070-based laptop. Hopefully the video compression won't introduce any stutter... I’m sharing this in hopes it helps a fellow dev. Cheers.
How it Started vs. How it’s Going 2025 I built a custom C /OpenGL 3D game engine and editor from scratch in less than a year, and just ~2h average a day. Now, let's see how far I can push it with a small proof-of-concept game next. As the year closes, I want to thank the group of people who has been following along while I created this project. The comments and reactions on every post motivated me to climb another step every day. Cheers!
18
44
606
48,517
Nicolas Hillegeer retweeted
Reuters is reporting that China's classified EUV project has reverse engineered and successfully built a prototype EUV machine with the help of former ASML engineers.
108
389
2,900
366,456
Nicolas Hillegeer retweeted
Meshoptimizer is used by Wicked Engine for LOD gen, meshlet cluster gen, physics mesh gen, provoking vertex optimization, general mesh optimization. It's an invaluable tool, go try it if you can!
After nine years of development, meshoptimizer has reached its first major version, 1.0! This release focuses on improvements in clusterization and simplification as well as stabilization. Release announcement with more details on past, present and future is below; please RT!
12
196
13,325