This post is a follow-up to Shimming d3d12.dll for fun and profit. If you haven’t read it yet I would strongly recommend doing so, as this one builds directly on top of it. The companion article on how to actually use the tools is GPU profiling for WebGPU workloads on Windows with Chrome. What broke and why The short answer is Chrome. The long answer is also Chrome. At some point Chrome…
⚠ Deprecation notice (2026-05-26): The DLL shimming method described in this post no longer works, as Chrome has restricted custom DLL loading. A new approach using a launcher executable is now available, read about it in part 2, or jump straight to the updated usage instructions in the companion blog post. Why would anyone do this? I have been playing around with WebGPU recently, writing a toy…
Update (2026-05-26): The d3d12_webgpu_shim repository has been updated. The old method of placing d3d12.dll directly in Chrome’s application folder is now deprecated, as Chrome has restricted custom DLL loading. The recommended approach now uses a launcher executable (webgpu_profiling_launcher.exe) that injects the hook DLL at runtime. The instructions below have been updated accordingly.…
In this post we’ll be looking at compute shaders, profiling tools and failed experiments to improve performance. This is my journey learning compute shaders first through WebGPU and then Vulkan. My goal was to implement Conway’s Game Of Life algorithm in a brute force manner and to make it run as fast as possible on the GPU . This will not be a tutorial on how to setup compute shaders.
In this post we’ll be looking at integrating Dear ImGui in a custom Vulkan renderer. The audience I’m targeting is beginners still struggling with Vulkan. You should however have a basic Vulkan renderer already up and running. I followed Alexander Overvoorde’s amazing tutorial myself and I will use it as an example. The code is entirely available at vulkan-tutorial (go to the…
This is my own implementation of Ray Tracing in a weekend by Peter Shirley. It’s pretty simple and follows the book closely. The the two main modifications I made were using stb_image.h to output .png files and reorganizing the data a little so that the computation could be parallelized using OpenMP. The performance gain was great compared to the small amount of work it required. If…
In 2017 I started studying computer graphics at school. We were given a lot of boiler plate code during practical exercises. Sometimes it felt like everything was working through some kind of dark magic. It was especially frustrating when something wouldn’t work. There were too many unknowns. So during the summer holiday I gave myself the goal to write my own prototype from scratch. I…