Developing Microsoft® DirectX®12 applications
Microsoft® DirectX®12 provides low-level APIs for creating games and other graphics applications.
Here on GPUOpen, we not only provide tools and libraries to help you with the development of your Vulkan application, but we’ve produced quite a few detailed blogs and videos to support you along the way too.
Jump to the section you need:
Graphics feature architect Rys Sommefeldt provides a short presentation on the major advantages of the new API, and how to best utilize it on AMD RDNA™ 2-based hardware.
Engineer Stephan Hodes provides a short description how VRS works, and how AMD’s FidelityFX Variable Shading technique can assist with integrating VRS into your engine.
Engineer Colin Riley provides a short description of Sampler Feedback and Mesh Shaders, as well as important performance guidelines that graphics developers should consider when using AMD RDNA™ 2-based GPUs.
This talk by AMD’s Adam Sawicki at Digital Dragons in 2018 discusses how to port your engine to Vulkan® or DirectX®12.
If you’re just getting started with DirectX12, these presentations are an excellent place to start to understand the concepts.
Dr. Matthäus G. Chajdas and Dominik Baumeister give a (slightly) more in-depth look for people interested in graphics programming. They prepare the mental model for explicit graphics APIs such as DirectX12 and Vulkan.
Adam Sawicki introduces memory management in Vulkan and DirectX 12 with a detailed presentation on the different memory types, gives some tips and tricks, and discusses the libraries involved.
Don’t miss more presentations on DirectX and other topics available on GPUOpen!
Sample - "HelloD3D12"
Ready to put things into practice? Our “HelloD3D12” sample is a great way to get hands-on and see how everything works.
We have more DirectX samples further down the page too.
HelloD3D12 is a small, introductory Direct3D 12 sample, which shows how to set up a window and render a textured quad complete with proper uploading handling, multiple frames queued and constant buffers.
Libraries and tools
If you’re looking for some welcome help with allocating and managing memory, our Direct3D 12 Memory Allocator (D3D12MA) library is exactly what you need!
Our very popular Radeon Developer Tool Suite is a package containing several tools to help you analyze and optimize your DirectX application, and now includes ray tracing analysis.
Radeon™ Raytracing Analyzer (RRA) is a tool which allows you to investigate the performance of your raytracing applications and highlight potential bottlenecks.
Radeon™ Memory Visualizer (RMV) is a tool to allow you to gain a deep understanding of how your application uses memory for graphics resources.
RGP gives you unprecedented, in-depth access to a GPU. Easily analyze graphics, async compute usage, event timing, pipeline stalls, barriers, bottlenecks, and other performance inefficiencies.
Radeon GPU Analyzer is an offline compiler and performance analysis tool for DirectX®, Vulkan®, SPIR-V™, OpenGL® and OpenCL™.
Ready to learn more?
This blog series provides detailed explanations, analysis, use-case examples, tutorials, and advice about mesh shading.
This sample demonstrates how to use most of Cauldron’s features. It is also a useful reference for getting started with developing your own samples and prototypes.
This sample demonstrates how to enable Freesync Premium Pro (HDR) with the DirectX® 12 and Vulkan® APIs.
This sample demonstrates how to use the explicit Crossfire™ application programming interface (API).
This is a slightly modified version of the Microsoft D3D12nBodyGravity sample, This sample demonstrates the use of asynchronous compute shaders (multi-engine) to simulate an n-body gravity system.
This sample demonstrates some of the ways in which to reduce scene aliasing without using a post process technique.
This SDK sample implements PN Triangles and Phong tessellation. It also shows how to optimize performance by using adaptive tessellation techniques.
This sample presents a technique for achieving highly optimized, user-defined separable filters.
This sample demonstrates a post-process pixel shader technique that applies fullscreen anti-aliasing to an image.
This sample demonstrates how to implement a simple GPU-based particle system.
This sample provides an example implementation of the Forward+ algorithm, which extends traditional forward rendering to support high numbers of dynamic lights while maintaining performance.
The DepthBoundsTest11 sample shows how to use the Depth Bounds driver extension.
This sample provides an example implementation of two tile-based light culling methods: Forward+ and Tiled Deferred.
Other GPUOpen samples that use DirectX12
Explore the fantastic DirectX®12 Developer resources available from our partners at Microsoft®
Latest DirectX news on GPUOpen
In addition, AMF on Linux can now be used with AMD Pro Vulkan and experimentally with RADV drivers. Download Advanced Media Framework now!
AMD is pleased to support Microsoft’s recently released DirectStorage 1.1 with GPU Decompression. DirectStorage must be enabled by developers to realize the benefits.
The upcoming AMD Radeon Software Adrenalin Edition release offers full Shader Model 6.7 support to align with the new update to Agility SDK from Microsoft.