<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>D3d12 on Jendrik Illner - 3D Programmer</title>
    <link>https://www.jendrikillner.com/tags/d3d12/</link>
    <description>Recent content in D3d12 on Jendrik Illner - 3D Programmer</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>&amp;copy; 2023 · Jendrik Illner</copyright>
    <lastBuildDate>Wed, 29 Dec 2021 04:00:00 +0000</lastBuildDate>
    
        <atom:link href="https://www.jendrikillner.com/tags/d3d12/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Reader Question Answered 1 - Learning D3D12</title>
      <link>https://www.jendrikillner.com/post/d3d12-learning-plan/</link>
      <pubDate>Wed, 29 Dec 2021 04:00:00 +0000</pubDate>
      
      <guid>https://www.jendrikillner.com/post/d3d12-learning-plan/</guid>
      <description>

&lt;blockquote&gt;
&lt;p&gt;There are a lot of tutorials and articles on Vulkan. I found very few tutorials for D3D12.
Do you have some recommendations on how to start learning D3D12?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&lt;/h2&gt;

&lt;p&gt;To get started with the API quickly, I can recommend the following resource: &lt;a href=&#34;https://alain.xyz/blog/raw-directx12&#34; target=&#34;_blank&#34;&gt;Raw DirectX 12&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Provides a starting point repository that implements all the necessary elements to render a triangle into a window. The blog post walks through the code and briefly explains all used concepts.&lt;/p&gt;

&lt;p&gt;If you have experience with other APIs, keep &lt;a href=&#34;https://alain.xyz/blog/comparison-of-modern-graphics-apis&#34; target=&#34;_blank&#34;&gt;A Comparison of Modern Graphics APIs&lt;/a&gt; bookmarked to compare as you go along.&lt;/p&gt;

&lt;h2 id=&#34;api-detailed-walkthrough&#34;&gt;API detailed walkthrough&lt;/h2&gt;

&lt;p&gt;If you enjoy reading an in-depth walkthrough of the API and concepts, I recommend the &lt;a href=&#34;https://www.3dgep.com&#34; target=&#34;_blank&#34;&gt;3dgep&lt;/a&gt; series.&lt;/p&gt;

&lt;p&gt;Part 1 and 2 give an introduction to the D3D12 API itself and how it interacts with the Windows environment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.3dgep.com/learning-directx-12-1/&#34; target=&#34;_blank&#34;&gt;Part 1 - Initialize DirectX 12&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.3dgep.com/learning-directx-12-2/&#34; target=&#34;_blank&#34;&gt;Part 2 - Rendering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 3 builds on top and presents possible implementations for higher-level abstractions. This also covers several related topics, such as memory management and resource state management.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.3dgep.com/learning-directx-12-3/&#34; target=&#34;_blank&#34;&gt;Part 3 - Framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 4 explains texturing in detail.
This does not only cover the API but also explains related concepts such as texture filtering. Additionally presents how to use compute-shaders to generate mipmaps (smaller versions of textures) using the GPU.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.3dgep.com/learning-directx-12-4/&#34; target=&#34;_blank&#34;&gt;Part 4 - Textures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;api-specification&#34;&gt;API specification&lt;/h2&gt;

&lt;p&gt;Questions about the specifics of the API? Or what the intended behavior should be?
Start by looking into the official specification. These are available on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://microsoft.github.io/DirectX-Specs/&#34; target=&#34;_blank&#34;&gt;DirectX-Specs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What isn&amp;rsquo;t covered in the D3D12 specification can typically be found in the &lt;a href=&#34;https://microsoft.github.io/DirectX-Specs/d3d/archive/D3D11_3_FunctionalSpec.htm&#34; target=&#34;_blank&#34;&gt;Direct3D 11.3 Functional Specification&lt;/a&gt; as many concepts still apply.&lt;/p&gt;

&lt;h2 id=&#34;applied-uses&#34;&gt;Applied uses&lt;/h2&gt;

&lt;p&gt;Interested in how others applied the concepts for their own engines and frameworks?&lt;/p&gt;

&lt;p&gt;Articles about the D3D12-based implementation of &lt;a href=&#34;http://diligentgraphics.com/diligent-engine/architecture/d3d12/&#34; target=&#34;_blank&#34;&gt;Diligent Engine&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Microsoft Samples contain several samples to learn more about specific features you might be interested in the &lt;a href=&#34;https://github.com/Microsoft/DirectX-Graphics-Samples&#34; target=&#34;_blank&#34;&gt;DirectX-Graphics-Samples&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Especially the &lt;a href=&#34;https://github.com/Microsoft/DirectX-Graphics-Samples#miniengine-a-directx-12-engine-starter-kit&#34; target=&#34;_blank&#34;&gt;mini-engine&lt;/a&gt;. This provides a good starting point for experimentation as well as looking into how aspects got implemented.&lt;/p&gt;

&lt;h2 id=&#34;performance-best-practices&#34;&gt;Performance Best Practices&lt;/h2&gt;

&lt;p&gt;With the power of the API also comes the responsibility to think about performance.
Each manufacturer has recommendations on how best to take advantage of their hardware.&lt;/p&gt;

&lt;p&gt;Below is a collection of some resources:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AMD&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://gpuopen.com/performance/&#34; target=&#34;_blank&#34;&gt;RDNA2 - Performance Guide&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Nvidia&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://developer.nvidia.com/dx12-dos-and-donts&#34; target=&#34;_blank&#34;&gt;Game Works - DX12 Do&amp;rsquo;s And Don&amp;rsquo;ts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Intel&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.intel.com/content/www/us/en/developer/articles/guide/developer-and-optimization-guide-for-intel-processor-graphics-gen11-api.html&#34; target=&#34;_blank&#34;&gt;Optimization Guide for Graphics Gen11 &lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&#34;the-road-ahead&#34;&gt;The road ahead&lt;/h2&gt;

&lt;p&gt;This should give an excellent starting point to keep you busy on your D3D12 learning journey.
There is a lot more information out there. But I hope with the provided information it will be easier to find.&lt;/p&gt;

&lt;p&gt;For example, take a look at my &lt;a href=&#34;https://www.jendrikillner.com/article_database/&#34; target=&#34;_blank&#34;&gt;Graphics Programming Article Database&lt;/a&gt; to find some of them.&lt;/p&gt;

&lt;p&gt;Is anything missing, or do you have a question about something else?
Feel free to reach out on Twitter &lt;a href=&#34;https://twitter.com/jendrikillner&#34; target=&#34;_blank&#34;&gt;@jendrikillner&lt;/a&gt;, and I will try to find the information and expand the guide so everyone can benefit.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Inspired by &lt;a href=&#34;https://www.hanselman.com/blog/do-they-deserve-the-gift-of-your-keystrokes&#34; target=&#34;_blank&#34;&gt;https://www.hanselman.com/blog/do-they-deserve-the-gift-of-your-keystrokes&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
  </channel>
</rss>