James Yarwood
jamesyarwood.bsky.social
James Yarwood
@jamesyarwood.bsky.social
Software Engineer and #indiedev. Writing a hybrid C++ and .NET/C# #Vulkan #gameengine in my spare time.
Inbetween other life events, I've been continuing work on the engine's interop generator. It's come a long way. Now auto-generates wrapper methods, string interop and pointer translation/casting where needed.

#gameengine #interop #indiedev #gamedev
October 4, 2026 at 9:09 PM
Today I'm continuing last weekend's work on the C# interop generator. Improving support for C++ multiple inheritance and adding support for generating interop within C# extension classes/blocks.

Plenty to go!

#interop #gameengine #indiedev #gamedev
June 27, 2026 at 4:34 PM
Today I've been expanding the engine's C# interop generator to handle enums, which has allowed me to clean-up around 1000 lines of old LibaryImportAttribute interop.

Mostly done with support for #cplusplus enum class and typedef enums.

Still more work to do on it!

#indiedev #gamedev #gamengine
June 21, 2026 at 8:57 PM
The past few weeks have been spent on expanding the render graph system, so nothing shiny to show off yet!

I've also been working on semi-automated C++ to C# interop generation using a pure-virtual class and V-Table wrapper approach to avoid P/Invoke

#gameengine #gamedev #indiedev #cplusplus
June 20, 2026 at 9:55 PM
Following on from Friday's post - Multi-GPU support for compute tasks now works in the #gameengine.

A lot of cleanup to do around cross-GPU asset management for stuff like shaders, textures and models. But, one step at a time!

#vulkan #indiedev #gamedev
May 24, 2026 at 9:05 PM
A very crude, but very successful first test of #computeshaders in the engine, with the result being read back in C# once the shader completes.

A bit of cleaning up to do, then a trial run with offloading parts of the ECS onto the GPU.

#gamedev #indiedev #vulkan #gameengine
May 22, 2026 at 9:23 PM
This weekend I'm working on compute shader support in my #gameengine. The shader compiler, asset manager and renderer needed a few changes.

Also working on improvements to GPU management. Aiming to allow certain compute tasks to be offloaded to secondary GPUs.

#gamedev #indiedev #vulkan
May 17, 2026 at 12:36 PM
I've spent some time working on the shutdown/cleanup side of the #gameengine. To name a few:
- Improvements to GFX object destructor queues
- Properly tracking GPU resources/objects
- Cleanup of scenes on shutdown

The #Vulkan validation layer is complaining a lot less now!

#gamedev #indiedev
May 12, 2026 at 9:21 PM
It's bank holiday in UK today and I've used the time to improve data density/packing in the ECS to remove indirection when iterating entity components, along with some GPU data transfer optimisation. 270k entities, 60FPS.

#gamedev #indiedev #vulkan #gameengine
May 4, 2026 at 9:24 PM
This weekend, major performance improvements to the ECS by moving component storage into archetypes to improve iteration speed. Entity count now doubled to 200k and holding at 60FPS+

Next up will be improvements to frame-staging, as it has now hit its limit.

#gameengine #gamedev #vulkan #indiedev
May 3, 2026 at 5:04 PM
Many improvements this week, including: per-frame, linear allocated buffers for pushing entity data to the GPU. Rewrite and optimization of the ECS and a pile of stability fixes. Now able to handle 100k+ active entities at 60 FPS.
youtu.be/foEuMwZdNHM

#gameengine #gamedev #indiedev #vulkan
Dev Update #3: Vulkan Game Engine - ImGui & ECS Improvements
YouTube video by James Yarwood
youtu.be
April 17, 2026 at 2:14 PM
This weekend, a (very) basic RAM and GPU/VRAM memory viewer. Now able to see per-heap GPU memory allocation and overall consumption. Next step is to visualize the sub-allocations for VRAM usage.

#vulkan #gamedev #indiedev #gameengine
April 3, 2026 at 3:58 PM
This morning, improvements to device initialization. Also finished off the primary-secondary device system. Initially, secondary devices will be used to offload certain compute tasks.

Also the beginning of a useful render metrics GUI!

#vulkan #imgui #gamedev #indiedev #gameengine
March 29, 2026 at 3:16 PM
This weekend, optimization and improvements around buffer usage. I've also successfully integrated ImGui a few minutes ago!

#ImGui #gameengine #Vulkan #gamedev #indiedev
March 28, 2026 at 4:01 PM
This weekend, I've been working on stability and render performance. Now at a point where 40000 entities can be drawn/updated. A massive increase from the 1500 in last week's post.

www.youtube.com/watch?v=MuMM...

#gamedev #gameengine #vulkan #indiedev
Dev Update #2: Vulkan Game Engine - Optimization
YouTube video by James Yarwood
www.youtube.com
March 21, 2026 at 10:58 PM
This weekend, I've added keyboard and mouse support to my #Vulkan #gameengine. It's nice to finally be able to move!

#gamedev #indiedev
March 15, 2026 at 6:33 PM
Finally back up and running after separating the engine into .NET/C# while keeping the #Vulkan renderer and @shader-slang.bsky.social compiler in C++.

Added a few performance improvements too, but still a long way to go!

#gameengine #indiedev #gamedev
March 9, 2026 at 2:16 PM
I've gone down a rabbit hole with building my own interop generator this month, to allow my engine to be used from #csharp. SWIG and CppSharp exist, but I wanted to attempt my own.

I've made a lot of progress on it already, but still a lot to be done!

#gameengine #interop #dotnet #cpp
November 29, 2025 at 10:35 AM
With most of the pipeline management stuff out of the way, I've started implementing depth buffering support. The difference isn't very obvious in the screenshots!

#Vulkan #gameengine #gamedev #indiedev
October 12, 2025 at 6:44 PM
Not much visual progress this month. I've been working on the beginnings of a render graph system which is progressing nicely. Now it's able to render more than 1 type of mesh/shader to the same render target.

#Vulkan #GameEngine #indiedev #gamedev
September 25, 2025 at 7:06 PM
With memory allocation out of the way, I've been working on a custom #glTF loader. It's now able to load basic mesh data, but there is still lot of work to do on it.

For the video, I'm using planet.gltf from the vulkan samples library.

#vulkan #gamedev #gameengine #indiedev
August 17, 2025 at 8:14 PM
I've been working on a custom #vulkan memory allocator, for self-teaching. Works better than expected, with block allocation, basic defragmentation, typed memory, virtual map/unmap and more.

But, I recommend using VMA if you want to skip memory management: gpuopen.com/vulkan-memor...

#gamedev
August 8, 2025 at 4:59 PM
Many hours have gone into implementing automatic shader binding, but it would have been many more without #RenderDoc. This tool helps immensely in finding issues with your vulkan/DX API calls!

It provides a detailed breakdown of the GPU state for any captured frame.

#gamedev #gameengine #vulkan
July 13, 2025 at 7:35 PM
Everything is back up and running in my vulkan renderer after implementing automatic shader mapping/binding using the @shader-slang.bsky.social API.

It's now possible to set shader parameters by name instead of using the raw descriptor set/write API.

#vulkan #gameengine #rendering #gamedev
July 13, 2025 at 7:05 PM
Finally completed the initial implementation of @shader-slang.bsky.social in my engine. Now working on descriptor pool/set management and a shader <-> mesh binding system.

Will hopefully have something nice to show soon!
#vulkan #gameengine #gamedev
June 28, 2025 at 2:27 PM