Content Creation Tools and Multi-GPU

When it comes to multi-GPU (mGPU), most developers immediately think of complicated Crossfire setups with two or more GPUs and how to make their game …

Optimizing Terrain Shadows

There are many games out there taking place in vast environments. The basic building block of every environment is height-field based terrain – there’s no …

Vulkan barriers explained

Vulkan™’s barrier system is unique as it not only requires you to provide what resources are transitioning, but also specify a source and destination pipeline …

Performance Tweets Series: Root signature & descriptor sets

Before Direct3D® 12 and Vulkan™, resources were bound to shaders through a “slot” system. Some of you might remember when hardware did have only very …

Performance Tweets Series: Multi-GPU

Multi-GPU systems are much more common than you might think. Most of the time, when someone mentions mGPU, you think about high-end gaming machines with …

Performance Tweets Series: Debugging & Robustness

Prior to explicit graphics APIs a lot of draw-time validation was performed to ensure that resources were synchronized and everything set up correctly. A side-effect of this robustness …

Performance Tweets Series: Rendering and Optimizations

Direct3D® 12 and Vulkan™ significantly reduce CPU overhead and provide new tools to better use the GPU. For instance, one common use case for the …

Performance Tweets Series: Streaming & Memory Management

As promised, we’re back and today I’m going to cover how to get resources to and from the GPU. In the last post, we learned …

GCN Shader Extensions for Direct3D and Vulkan

The GCN architecture contains a lot of functionality in the shader cores which is not currently exposed in current APIs like Vulkan™ or Direct3D® 12. One …

Fast compaction with mbcnt

Compaction is a basic building block of many algorithms – for instance, filtering out invisible triangles as seen in Optimizing the Graphics Pipeline with Compute. …