diff --git a/Tutorials/Appendices/01-MathBasics/vectors.html b/Tutorials/Appendices/01-MathBasics/vectors.html
index 09c9a2ce..f5b1468c 100755
--- a/Tutorials/Appendices/01-MathBasics/vectors.html
+++ b/Tutorials/Appendices/01-MathBasics/vectors.html
@@ -772,10 +772,8 @@
Gram-Schmidt Orthogonalization
So, we have that
-
\[\mathbf{w_1}=\mathbf{v_1}-\text{proj}_{\mathbf{w_0}}(\mathbf{v_1})\]
-
where \(\ \text{proj}_{\mathbf{w_0}}(\mathbf{v_1})=\displaystyle\frac{\mathbf{v_1}\cdot\mathbf{w_0}}{|\mathbf{w_0}|^2}\mathbf{w_0}\)
To prove that \(\mathbf{w_0}\) and \(\mathbf{w_1}\) are orthogonal to each other, we can first observe that a projection is orthogonal if the direction of projection forms a right angle \((90°)\) with the vector we project onto (see the dashed line in the illustration above). Also, we know that the sum of two vectors is the diagonal of the parallelogram with sides the two vectors. In this case we obtain a rectangle since we just established that an angle of the parallelogram with diagonal \(v_1\) is \(90°\). So, we verified that \(\mathbf{w_0}\) and \(\mathbf{w_1}\) are orthogonal: \(\mathbf{w_0}\ \bot\ \mathbf{w_1}\).
In the 3D case, we introduce a third vector \(\mathbf{v_2}\) that we need to modify in order to make it orthogonal to both \(\mathbf{w_0}\) and \(\mathbf{w_1}\). As before, we start by setting \(\mathbf{w_0}=\mathbf{v_0}\), and we can still use the method of subtracting the projection of \(\mathbf{v_1}\) onto \(\mathbf{w_0}\) to compute \(\mathbf{w_1}\). This is possible because we can consider \(\mathbf{v_0}\) and \(\mathbf{v_1}\) as lying in the same plane, thereby reducing the problem to the 2D case. To calculate \(\mathbf{w_2}\), we proceed similarly. We subtract the projection of \(\mathbf{v_2}\) onto \(\mathbf{w_0}\) from \(\mathbf{v_2}\), obtaining an intermediate vector. Then, we can subtract the projection of \(\mathbf{v_2}\) onto \(\mathbf{w_1}\) from this intermediate vector. By doing this, we ensure that the resultant vector \(\mathbf{w_2}\) is orthogonal to both \(\mathbf{w_0}\) and \(\mathbf{w_1}\).
@@ -916,7 +914,6 @@ HLSL
The color set: \(\ r,g,b,a\)
Specifying one or more vector components is called swizzling. For example:
-
vector<int, 1> iVector = 1; // int iVector = 1;
vector<float, 4> dVector = { 0.2, 0.3, 0.4, 0.5 }; // float4 dVector = { 0.2, 0.3, 0.4, 0.5 };
@@ -961,8 +958,6 @@ C++
However, __m128 variables require 16-byte alignment in memory. This isn’t an issue for global or local variables of this type, as the compiler automatically aligns them. Problems arise when using an XMVECTOR (which is an alias for __m128) as a member of a structure or class, where C++ packing rules might cause misalignment. To address this, DirectXMath provides specific types for including integer or floating-point vectors as class members without alignment concerns.
-
-
Listing 52 DirectXMath.h
// 32-bit signed floating-point components
struct XMFLOAT2
{
@@ -988,8 +983,6 @@ C++
};
-
-
// 32-bit signed integer components
struct XMINTT2
{
@@ -1071,7 +1064,6 @@ C++
-
[WIP]
Support this project
diff --git a/_sources/Tutorials/Appendices/01-MathBasics/vectors.md b/_sources/Tutorials/Appendices/01-MathBasics/vectors.md
index 804ad295..b056ee9c 100755
--- a/_sources/Tutorials/Appendices/01-MathBasics/vectors.md
+++ b/_sources/Tutorials/Appendices/01-MathBasics/vectors.md
@@ -352,12 +352,8 @@ $$\mathbf{v_1}=\mathbf{w_1}+\text{proj}_{\mathbf{w_0}}(\mathbf{v_1})$$
So, we have that
-
-
$$\mathbf{w_1}=\mathbf{v_1}-\text{proj}_{\mathbf{w_0}}(\mathbf{v_1})$$
-
-
where $\ \text{proj}_{\mathbf{w_0}}(\mathbf{v_1})=\displaystyle\frac{\mathbf{v_1}\cdot\mathbf{w_0}}{|\mathbf{w_0}|^2}\mathbf{w_0}$
To prove that $\mathbf{w_0}$ and $\mathbf{w_1}$ are orthogonal to each other, we can first observe that a projection is orthogonal if the direction of projection forms a right angle $(90°)$ with the vector we project onto (see the dashed line in the illustration above). Also, we know that the sum of two vectors is the diagonal of the parallelogram with sides the two vectors. In this case we obtain a rectangle since we just established that an angle of the parallelogram with diagonal $v_1$ is $90°$. So, we verified that $\mathbf{w_0}$ and $\mathbf{w_1}$ are orthogonal: $\mathbf{w_0}\ \bot\ \mathbf{w_1}$.
@@ -526,8 +522,6 @@ The components of a vector can be accessed using the subscript operator, [ ], to
Specifying one or more vector components is called swizzling. For example:
-
-
```{code-block} hlsl
vector
iVector = 1; // int iVector = 1;
@@ -582,8 +576,6 @@ SIMD allows the CPU to execute four operations (denoted as OP in the image below
However, **__m128** variables require 16-byte alignment in memory. This isn't an issue for global or local variables of this type, as the compiler automatically aligns them. Problems arise when using an **XMVECTOR** (which is an alias for **__m128**) as a member of a structure or class, where C++ packing rules might cause misalignment. To address this, DirectXMath provides specific types for including integer or floating-point vectors as class members without alignment concerns.
```{code-block} cpp
-:caption: DirectXMath.h
-:name: vectors-xmfloats-code
// 32-bit signed floating-point components
struct XMFLOAT2
@@ -609,9 +601,8 @@ struct XMFLOAT4
float w;
};
```
-
-```cpp
+```{code-block} cpp
// 32-bit signed integer components
struct XMINTT2
{
@@ -701,8 +692,6 @@ __declspec(align(16)) struct XMVECTORF32
static const XMVECTORF32 vZero = { 0.0f, 0.0f, 0.0f, 0.0f };
```
-[WIP]
-
````{admonition} Support this project
diff --git a/objects.inv b/objects.inv
index 29af0d6e..499d0bcd 100755
Binary files a/objects.inv and b/objects.inv differ
diff --git a/searchindex.js b/searchindex.js
index 6a876f37..e65f897b 100755
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["Tutorials/00-Intro/intro-and-prerequisites", "Tutorials/01-HelloWorld/hello-bundles", "Tutorials/01-HelloWorld/hello-cbs", "Tutorials/01-HelloWorld/hello-frame-buffering", "Tutorials/01-HelloWorld/hello-texture", "Tutorials/01-HelloWorld/hello-triangle", "Tutorials/01-HelloWorld/hello-window", "Tutorials/01-HelloWorld/hello-world", "Tutorials/Appendices/01-MathBasics/math-basics", "Tutorials/Appendices/01-MathBasics/vectors", "presentation"], "filenames": ["Tutorials/00-Intro/intro-and-prerequisites.md", "Tutorials/01-HelloWorld/hello-bundles.md", "Tutorials/01-HelloWorld/hello-cbs.md", "Tutorials/01-HelloWorld/hello-frame-buffering.md", "Tutorials/01-HelloWorld/hello-texture.md", "Tutorials/01-HelloWorld/hello-triangle.md", "Tutorials/01-HelloWorld/hello-window.md", "Tutorials/01-HelloWorld/hello-world.md", "Tutorials/Appendices/01-MathBasics/math-basics.md", "Tutorials/Appendices/01-MathBasics/vectors.md", "presentation.md"], "titles": ["Introduction and Prerequisites", "Hello Bundles", "Hello Constant Buffers", "Hello Frame Buffering", "Hello Texture", "Hello Triangle", "Hello Window", "Hello World", "Math Basics", "Vectors", "Welcome to Learn DirectX"], "terms": {"new": [0, 1, 2, 3, 5, 6, 9], "graphic": [0, 2, 3, 4, 5, 7, 9, 10], "api": [0, 1, 3, 5, 6, 7, 9, 10], "like": [0, 1, 3, 4, 5, 6, 9, 10], "directx": [0, 1, 2, 3, 4, 5, 7], "12": [0, 1, 4, 5, 6, 7], "vulkan": 0, "have": [0, 1, 2, 3, 4, 5, 6, 9], "reput": 0, "being": [0, 1, 3, 4, 5, 9], "difficult": 0, "learn": [0, 1, 4, 6, 9], "beginn": [0, 10], "The": [0, 1, 2, 3, 4, 6, 9], "main": [0, 1, 3, 4, 5, 6, 8], "reason": [0, 1, 2, 4, 5, 6, 9], "i": [0, 1, 2, 3, 4, 5, 6, 9], "modern": 0, "hide": [0, 5, 6], "less": [0, 3, 4, 6, 9], "programm": [0, 1, 4, 5, 9], "than": [0, 1, 2, 3, 4, 5, 6, 9], "old": [0, 3, 6], "ones": [0, 2, 3, 4, 5, 6, 9], "11": [0, 4, 5, 6], "opengl": 0, "so": [0, 1, 2, 3, 4, 5, 6, 9, 10], "you": [0, 1, 2, 3, 4, 5, 6, 9, 10], "just": [0, 3, 4, 5, 6, 9], "end": [0, 1, 3, 4, 5, 6, 9], "up": [0, 1, 2, 3, 4, 5, 6, 9], "studi": 0, "low": [0, 1, 2, 4, 5, 6], "level": [0, 1, 4, 5, 6], "detail": [0, 1, 3, 4, 5, 6, 9, 10], "even": [0, 1, 2, 3, 4, 5, 6, 9], "draw": [0, 3, 4, 5, 6, 9], "singl": [0, 1, 2, 3, 4, 5, 6, 9], "triangl": [0, 1, 2, 3, 4, 6, 7, 9, 10], "howev": [0, 1, 2, 3, 4, 5, 6, 9], "also": [0, 1, 2, 3, 4, 5, 6, 9], "ha": [0, 1, 2, 3, 4, 5, 6, 9], "some": [0, 1, 2, 3, 4, 5, 6, 9], "advantag": [0, 1, 3, 5, 6], "design": [0, 5, 6, 10], "make": [0, 1, 2, 3, 4, 5, 6, 9], "full": [0, 3, 5, 6], "us": [0, 1, 2, 3, 4, 5, 6, 9, 10], "multi": [0, 5, 6], "thread": [0, 1, 5, 6], "get": [0, 1, 2, 3, 4, 5, 6, 7, 9], "finer": 0, "control": [0, 4, 5, 6], "resourc": [0, 1, 2, 3, 4, 6], "manag": [0, 1, 3, 6], "cpu": [0, 2, 4, 5, 6, 9], "gpu": [0, 1, 2, 4, 5, 6], "synchron": [0, 1, 2, 3, 4, 5, 6], "thank": [0, 1, 2, 3, 4, 5, 6, 9, 10], "better": [0, 4, 5, 6, 9], "workload": 0, "more": [0, 2, 3, 4, 5, 6, 9], "evenli": 0, "distribut": [0, 9], "across": [0, 1, 4, 5], "all": [0, 1, 2, 3, 4, 5, 6, 9, 10], "core": [0, 2, 4, 5, 9], "understand": [0, 3, 4, 5, 6, 8, 9, 10], "re": [0, 1, 2, 5, 6], "can": [0, 1, 2, 3, 4, 5, 6, 9, 10], "take": [0, 1, 2, 3, 4, 5, 6, 10], "minim": [0, 3, 5, 6], "upload": [0, 2, 3, 4, 5], "copi": [0, 1, 2, 3, 4, 5, 6], "That": [0, 2, 3, 4, 5, 6, 9], "wai": [0, 1, 2, 3, 4, 5, 6, 9], "free": [0, 3, 6, 9], "time": [0, 1, 2, 3, 4, 5, 6, 9, 10], "increas": [0, 3, 4, 5, 6, 9], "number": [0, 1, 2, 3, 4, 5, 6, 9], "call": [0, 1, 2, 3, 4, 5, 6, 9], "consequ": [0, 2, 3, 4, 5, 6, 9], "enhanc": [0, 2, 4, 5], "perform": [0, 1, 2, 3, 4, 5, 6, 9], "your": [0, 3, 4, 5, 6, 9], "applic": [0, 1, 2, 3, 4, 5, 7, 9, 10], "capabl": [0, 5, 6], "provid": [0, 1, 2, 3, 4, 5, 6, 8, 9], "specif": [0, 1, 3, 4, 5, 6, 9, 10], "remain": [0, 2, 3, 4, 5, 6, 9], "same": [0, 1, 2, 3, 4, 5, 6, 9], "regardless": [0, 3, 5, 6], "develop": [0, 5, 6, 10], "leverag": [0, 6, 9], "those": [0, 3, 5, 6], "In": [0, 1, 2, 3, 4, 5, 6, 9], "particular": [0, 1, 2, 4, 5, 6, 9], "instead": [0, 3, 4, 5, 6, 9], "10": [0, 6], "implement": [0, 1, 2, 3, 5, 6, 10], "render": [0, 1, 2, 3, 4, 6, 9], "techniqu": [0, 4, 5], "might": [0, 1, 2, 4, 5, 6, 9], "necessarili": [0, 3, 4], "result": [0, 1, 2, 3, 4, 5, 6, 9], "boost": 0, "simpli": [0, 1, 2, 3, 4, 5, 6, 9], "becaus": [0, 1, 3, 4, 5, 6, 9], "latest": [0, 3, 5, 10], "version": [0, 1, 2, 4, 6, 9], "mention": [0, 3, 4, 5, 6, 9], "earlier": [0, 3, 4, 5, 6, 9], "offer": [0, 3, 4, 5, 6, 9], "greater": [0, 2, 3, 4, 6, 9], "over": [0, 2, 4, 5, 6], "mani": [0, 3, 4, 5, 6, 9, 10], "aspect": [0, 2, 5, 6], "properli": [0, 2, 5], "lead": [0, 4, 5, 6], "improv": [0, 4, 6], "current": [0, 1, 2, 3, 4, 5, 6], "three": [0, 1, 3, 4, 5, 6, 9], "from": [0, 1, 2, 4, 5, 6, 9, 10], "scratch": [0, 10], "each": [0, 2, 3, 4, 5, 6, 9, 10], "its": [0, 1, 2, 3, 4, 5, 6, 9], "pro": 0, "con": 0, "frank": 0, "luna": 0, "": [0, 1, 2, 3, 4, 5, 6, 9], "book": [0, 6, 10], "3d": [0, 4, 5, 6, 9], "game": [0, 5, 6], "program": [0, 2, 4, 5, 6], "color": [0, 1, 2, 3, 4, 5, 6, 9], "44ffaa": 0, "text": [0, 4, 6, 9], "good": [0, 3, 4, 6, 9], "It": [0, 2, 3, 4, 5, 6, 9, 10], "comprehens": 0, "explan": [0, 3, 5, 6], "both": [0, 1, 2, 3, 4, 5, 6, 9, 10], "theori": [0, 3, 4], "practic": [0, 2, 3, 4, 5, 6, 9, 10], "serv": [0, 3, 4, 5, 9], "an": [0, 1, 2, 3, 4, 5, 6, 9], "comput": [0, 1, 4, 5, 6, 9, 10], "textbook": 0, "especi": [0, 6], "ff6666": [0, 9], "bad": 0, "Being": 0, "omit": [0, 5], "crucial": [0, 1, 2, 4, 5, 9], "reduc": [0, 3, 4, 5, 6, 9], "cost": [0, 3, 5], "size": [0, 2, 4, 5, 6, 9], "addition": [0, 2, 4, 5, 6, 9], "mai": [0, 2, 3, 4, 5, 6, 9], "consid": [0, 1, 2, 3, 4, 5, 6, 9, 10], "somewhat": [0, 1, 2, 3, 4, 5, 6, 9, 10], "date": 0, "onlin": [0, 1], "tutori": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "includ": [0, 2, 3, 4, 5, 6, 9, 10], "youtub": 0, "video": [0, 5, 6], "easi": [0, 2], "follow": [0, 1, 2, 4, 5, 6, 9], "often": [0, 5, 6, 9], "focu": [0, 3, 4, 5, 6, 9], "mainli": [0, 5], "neglect": 0, "mathemat": [0, 8, 9, 10], "theoret": [0, 1, 2, 5, 10], "equat": [0, 9], "without": [0, 2, 4, 5, 6, 9], "suffici": [0, 2, 3, 4, 5], "offici": [0, 1, 4, 6, 9], "repositori": [0, 1, 6, 10], "document": [0, 1, 4, 5, 6, 9], "sourc": [0, 9], "code": [0, 10], "need": [0, 1, 2, 3, 4, 5, 6, 9], "written": [0, 4, 5, 6], "assum": [0, 4, 5, 6, 9], "basic": [0, 2, 3, 4, 5, 6, 10], "architectur": [0, 5], "system": [0, 2, 3, 6], "actual": [0, 1, 2, 3, 4, 5, 6, 9], "noth": [0, 1, 2, 3, 5, 6, 9], "prevent": [0, 4, 5, 6], "onli": [0, 1, 2, 3, 4, 5, 6, 9, 10], "part": [0, 1, 4, 5, 6], "long": [0, 2, 3, 5, 6], "motiv": 0, "enough": [0, 3, 4, 5, 6], "jump": 0, "one": [0, 1, 2, 3, 4, 5, 6, 9, 10], "math": [0, 6, 9, 10], "anoth": [0, 3, 4, 5, 6, 9], "read": [0, 2, 4, 5, 6], "through": [0, 2, 3, 4, 5, 6, 10], "dozen": 0, "page": [0, 6], "gather": 0, "inform": [0, 1, 2, 4, 5, 6, 9], "topic": [0, 2, 4, 5, 6, 8], "my": [0, 6], "goal": [0, 4], "write": [0, 2, 3, 5, 6, 9, 10], "updat": [0, 2, 3, 5, 6], "seri": [0, 1, 5, 6, 9, 10], "delv": [0, 2, 4, 5, 6], "deepli": [0, 5], "kei": [0, 1, 5, 6, 9], "accomplish": 0, "effect": [0, 2, 3, 4, 5, 6], "reader": 0, "becom": [0, 3, 5, 6, 9], "bore": 0, "intimid": 0, "discourag": 0, "extens": [0, 1], "amount": [0, 4, 5, 6, 10], "requir": [0, 1, 2, 3, 4, 5, 6, 9, 10], "master": [0, 6], "typic": [0, 2, 3, 4, 5, 6, 9], "when": [0, 1, 2, 3, 4, 5, 6, 9], "peopl": 0, "start": [0, 2, 3, 4, 5, 6, 7, 9], "thei": [0, 1, 2, 3, 5, 6, 9], "want": [0, 2, 3, 4, 5, 6, 9], "see": [0, 1, 2, 3, 4, 5, 6, 9], "someth": [0, 5, 6, 9], "screen": [0, 1, 2, 3, 4, 5, 6], "gratifi": 0, "reward": 0, "For": [0, 1, 2, 3, 4, 5, 6, 9], "everi": [0, 3, 4, 5, 6, 9], "review": 0, "differ": [0, 1, 2, 3, 4, 5, 6, 9], "sampl": [0, 1, 2, 3, 5, 6, 10], "explain": [0, 2, 3, 4, 5, 6], "feel": 0, "allow": [0, 1, 2, 3, 4, 5, 6, 9], "gradual": [0, 9], "progress": [0, 1, 2, 4, 5, 6], "acquisit": 0, "build": [0, 1, 5, 6, 9], "puzzl": 0, "add": [0, 3, 9], "piec": [0, 5], "m": 0, "suggest": [0, 5], "ultim": [0, 5], "fact": [0, 2, 4, 6], "microsoft": [0, 1, 4, 5, 6, 9], "mica": [0, 4, 6, 9], "micb": [0, 4, 6, 9], "list": [0, 1, 2, 3, 4, 5, 6, 9], "alwai": [0, 1, 2, 3, 4, 5, 6, 9], "most": [0, 1, 2, 4, 5, 6, 9], "import": [0, 3, 4, 5, 6, 8, 9], "fundament": [0, 4, 6, 9, 10], "dure": [0, 2, 3, 4, 5, 6, 9], "here": [0, 2, 4, 5, 6, 9], "try": [0, 6], "possibl": [0, 1, 3, 4, 5, 6, 9], "consult": 0, "regard": [0, 2, 3, 5], "reinvent": 0, "wheel": [0, 5], "we": [0, 1, 2, 3, 4, 5, 6, 9], "alreadi": [0, 1, 3, 4, 5, 9], "avail": [0, 2, 3, 4, 5, 6, 9, 10], "maintain": [0, 6, 9], "necessari": [0, 1, 2, 4, 5, 9], "custom": [0, 5], "base": [0, 1, 2, 4, 5, 6, 9], "framework": 0, "style": [0, 6], "addit": [0, 2, 4, 5, 6], "ar": [0, 1, 2, 3, 4, 5, 6, 9, 10], "host": 0, "github": [0, 10], "paminerva": 0, "learndirectx": [0, 10], "below": [0, 1, 2, 3, 4, 5, 6, 9, 10], "xbox": [0, 6], "atg": 0, "gdk": 0, "walbourn": 0, "chuck": 0, "conclus": [0, 3], "look": [0, 1, 2, 4, 5, 6], "how": [0, 1, 3, 4, 5, 6, 7, 9], "give": [0, 6, 9], "chanc": [0, 3, 5], "Of": [0, 6], "cours": [0, 5, 6], "t": [0, 1, 2, 3, 4, 5, 6, 9], "everyth": [0, 6], "skill": [0, 10], "essenti": [0, 1, 2, 3, 4, 5, 6, 8], "complet": [0, 2, 3, 4, 5, 6], "content": [0, 1, 2, 3, 4, 5, 6, 9, 10], "relat": [0, 1, 2, 3, 4, 5, 6, 9], "fortun": [0, 4, 5, 6, 9], "colleg": 0, "algebra": [0, 6, 10], "trigonometri": [0, 9, 10], "calculu": 0, "cover": [0, 1, 3, 4, 5, 6, 9], "about": [0, 1, 2, 4, 5, 6, 9], "90": [0, 9], "throughout": [0, 2, 5, 6], "dedic": [0, 5, 6], "appendic": [0, 8], "If": [0, 1, 2, 3, 4, 5, 6, 9], "bit": [0, 2, 3, 4, 5, 6, 9], "rusti": 0, "don": [0, 1, 2, 3, 4, 5, 6, 9], "worri": [0, 4, 5, 6, 9], "sb20b": 0, "brilliant": 0, "access": [0, 1, 2, 3, 4, 5, 6, 9], "everyon": 0, "recommend": [0, 4, 5, 9], "sb20a": 0, "self": [0, 5], "kre11": 0, "formal": [0, 2, 9], "educ": 0, "excel": [0, 5], "advanc": [0, 3, 5, 6, 10], "appropri": [0, 4, 5, 6, 9], "introductori": 0, "c": [0, 5, 6, 10], "find": [0, 2, 4, 5, 6, 9, 10], "daw15": 0, "str22": 0, "help": [0, 2, 4, 5, 6, 9, 10], "Then": [0, 2, 3, 4, 5, 6, 9], "str14": 0, "hyd20a": 0, "hyd20b": 0, "deeper": 0, "obvious": [0, 3, 4, 5, 6, 9], "card": [0, 5, 6], "run": [0, 1, 3, 4, 5, 6, 10], "examin": [0, 1, 2, 3, 4, 5, 6, 9], "fulli": [0, 1, 2, 5, 6], "execut": [0, 1, 2, 3, 4, 5, 6, 9], "demo": 0, "compil": [0, 2, 4, 5, 6, 9, 10], "To": [0, 2, 4, 5, 6, 9, 10], "check": [0, 2, 3, 5, 6, 9], "meet": [0, 3, 6], "press": [0, 6], "win": 0, "g": [0, 3, 4, 5, 6, 9], "open": [0, 1], "bar": [0, 6], "select": [0, 3, 4, 5, 6], "featur": [0, 2, 5, 6], "set": [0, 1, 2, 3, 4, 5, 6, 9], "should": [0, 1, 2, 3, 4, 5, 6, 9], "abov": [0, 2, 3, 4, 5, 6, 9], "imag": [0, 1, 2, 3, 4, 5, 6, 9], "otherwis": [0, 3, 4, 5, 6, 9], "upgrad": 0, "pc": [0, 6], "window": [0, 1, 2, 4, 5, 7, 9, 10], "2004": 0, "o": [0, 5, 6, 9], "least": [0, 2, 3, 4, 5, 6, 9], "visual": [0, 1, 3, 4, 5, 6, 9], "studio": [0, 6], "present": [0, 1, 2, 3, 4, 5, 6, 10], "creat": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10], "own": [0, 3, 5, 6], "unless": [0, 3, 5, 6], "prefer": [0, 4, 6], "id": [0, 5, 6], "choic": [0, 5], "ensur": [0, 2, 3, 4, 5, 6, 9], "instal": [0, 6], "sdk": 0, "0": [0, 1, 2, 3, 4, 5, 6, 9], "19041": 0, "higher": [0, 4], "driver": [0, 1, 2, 3, 5, 6], "debugg": [0, 6], "pix": 0, "renderdoc": 0, "found": [0, 1, 2, 3, 4, 5, 6, 9], "interest": [0, 1, 2, 3, 4, 5, 6, 9], "pleas": [0, 1, 2, 3, 4, 5, 6, 9, 10], "click": [0, 1, 2, 3, 4, 5, 6, 9, 10], "sponsor": [0, 1, 2, 3, 4, 5, 6, 9, 10], "button": [0, 1, 2, 3, 4, 5, 6, 9, 10], "whether": [0, 1, 2, 3, 4, 5, 6, 9, 10], "small": [0, 1, 2, 3, 4, 5, 6, 9, 10], "tip": [0, 1, 2, 3, 4, 5, 6, 9, 10], "donat": [0, 1, 2, 3, 4, 5, 6, 9, 10], "recur": [0, 1, 2, 3, 4, 5, 6, 9, 10], "payment": [0, 1, 2, 3, 4, 5, 6, 9, 10], "contribut": [0, 1, 2, 3, 4, 5, 6, 9, 10], "welcom": [0, 1, 2, 3, 4, 5, 6, 9], "mark": [0, 4, 5], "dawson": 0, "begin": [0, 1, 2, 3, 4, 5, 6, 9], "cengag": 0, "2015": 0, "randal": 0, "hyde": 0, "great": 0, "volum": [0, 4, 9], "1": [0, 1, 2, 3, 4, 5, 6, 9], "2nd": 0, "edit": [0, 5, 6], "machin": [0, 5, 6], "No": 0, "starch": 0, "2020": 0, "2": [0, 1, 2, 3, 4, 5, 6, 9], "think": [0, 4, 5, 6], "high": [0, 5, 6, 10], "erwin": 0, "kreyszig": 0, "engin": [0, 6], "wilei": 0, "10th": 0, "2011": 0, "http": [0, 1, 4, 6, 9], "doc": [0, 6], "com": [0, 1, 4, 5, 9], "en": [0, 1, 4, 6, 9], "u": [0, 1, 2, 3, 4, 5, 6, 9], "win32": [0, 1, 4, 6, 9], "spec": 0, "io": 0, "k": [0, 9], "A": [0, 1, 2, 3, 4, 5, 6, 9], "stroud": 0, "dexter": 0, "j": [0, 4, 6, 9], "booth": 0, "bloomsburi": 0, "academ": 0, "6th": 0, "8th": 0, "bjarn": 0, "stroustrup": 0, "languag": [0, 5, 6], "addison": 0, "weslei": 0, "profession": 0, "4th": 0, "2014": 0, "tour": 0, "2022": 0, "These": [1, 4, 5, 6, 7, 8, 9], "section": [1, 2, 4, 5, 6, 9], "describ": [2, 4, 5, 6, 7, 9], "simpl": [2, 4, 5, 6, 7, 9], "previou": [1, 2, 3, 4, 5, 6], "highli": 5, "befor": [1, 2, 3, 4, 5, 6, 9], "go": [2, 3, 4, 5, 6], "done": [3, 4, 5, 6], "target": [1, 2, 3, 4, 5, 6, 9], "hardli": 5, "chang": [1, 2, 3, 4, 5, 6, 9], "compar": [5, 6, 10], "d3d12hellowindow": 5, "still": [1, 2, 3, 5, 6, 9], "lot": [4, 5], "familiar": [5, 6], "know": [1, 2, 3, 4, 5, 6, 9], "2d": [5, 6, 9], "represent": [5, 6, 9], "geometri": [2, 4, 5, 6, 9, 10], "compos": [2, 3, 4, 5, 6, 9], "polygon": 5, "defin": [2, 4, 5, 6, 9], "locat": [3, 4, 5, 6, 9], "space": [2, 3, 4, 5, 6, 9], "whole": [4, 5, 6], "art": 5, "boil": 5, "down": [4, 5], "scene": [3, 5, 6], "inde": [2, 3, 4, 5, 6, 9], "process": [1, 2, 3, 4, 5, 6, 9], "which": [1, 2, 3, 4, 5, 6, 9], "briefli": 5, "discuss": [1, 2, 3, 4, 5, 6], "next": [1, 2, 3, 4, 5, 6, 9], "figur": [2, 4, 5], "onto": [3, 4, 5, 9], "rectangl": [5, 9], "ly": [5, 9], "plane": [5, 9], "front": [5, 6], "special": [2, 4, 5, 6], "viewpoint": 5, "camera": [4, 5], "film": 5, "retina": 5, "human": 5, "ey": 5, "captur": 5, "light": [4, 5, 9], "creation": [1, 2, 3, 5, 6], "eventu": [3, 4, 5], "map": [2, 4, 5, 6, 9], "turn": [5, 6], "client": [1, 5, 6], "area": [1, 4, 5, 6, 9], "easili": [5, 6, 9], "guess": 5, "region": [1, 5, 6, 9], "won": [2, 3, 4, 5, 6], "extent": [5, 6], "similar": [2, 3, 4, 5, 6, 9], "field": [2, 4, 5, 6, 9], "fov": 5, "len": 5, "pictur": 5, "posit": [1, 2, 3, 4, 5, 6, 9], "behind": [3, 4, 5, 6], "now": [1, 2, 3, 4, 5, 6, 9], "coupl": [1, 5, 6], "term": [5, 6], "rest": [4, 5, 6], "monitor": [5, 6], "displai": [3, 4, 5, 6], "mean": [2, 3, 4, 5, 6, 9], "seen": [4, 5], "two": [2, 3, 4, 5, 6, 9, 10], "dimension": [5, 9], "grid": [4, 5, 6], "dot": 5, "independ": [5, 6], "other": [1, 2, 3, 4, 5, 6, 9], "entiti": [5, 9], "illumin": 5, "group": [1, 5], "textur": [5, 6, 7, 10], "digit": 5, "texel": 5, "contain": [1, 2, 4, 5, 6, 9], "variou": [3, 4, 5, 6, 9], "e": [2, 3, 4, 5, 6, 9], "distanc": [4, 5, 9], "direct": [1, 4, 5, 6, 9], "etc": [1, 3, 4, 5, 6], "treat": [5, 9], "them": [1, 2, 3, 4, 5, 6, 9], "canva": 5, "where": [2, 3, 4, 5, 6, 9], "subsequ": [1, 2, 3, 4, 5, 9], "final": [1, 2, 3, 4, 5, 6, 9], "repres": [2, 4, 5, 6, 9], "frame": [1, 2, 4, 5, 6, 7, 9, 10], "user": [3, 5, 6], "physic": [2, 4, 5, 9], "squar": [4, 5, 9], "coordin": [2, 5, 6], "point": [1, 2, 3, 4, 5, 6, 9], "usual": [3, 4, 5, 6, 9], "top": [4, 5, 6], "left": [3, 4, 5, 6, 9], "corner": [4, 5], "calcul": [2, 4, 5, 6, 9], "oper": [1, 2, 3, 4, 5, 6], "occur": [1, 3, 4, 5, 6], "center": [4, 5], "row": [4, 5, 9], "column": [4, 5, 9], "intersect": 5, "consider": [4, 5], "appli": [2, 4, 5, 9], "element": [3, 4, 5, 6, 9], "whose": [2, 4, 5, 6, 9], "within": [1, 2, 3, 4, 5, 6, 9], "revisit": [1, 2, 3, 5, 6], "concept": [5, 6, 9, 10], "upcom": [4, 5, 6, 9], "role": [4, 5, 9], "equip": [5, 6], "thousand": 5, "form": [4, 5, 9], "instruct": [1, 3, 4, 5, 6, 9], "much": [1, 3, 4, 5, 6], "As": [1, 2, 3, 4, 5, 6, 9], "illustr": [1, 2, 3, 4, 5, 6, 9, 10], "fewer": 5, "smaller": [4, 5], "task": [5, 6], "divid": [5, 9], "parallel": [4, 5, 6, 9], "multipl": [1, 2, 3, 5, 6], "simultan": [5, 9], "speed": [1, 5, 6, 9], "vast": 5, "data": [2, 4, 5, 6, 9], "On": [1, 2, 3, 4, 5, 6, 9], "hand": [1, 3, 4, 5, 6, 9], "sequenti": [3, 5, 6], "realli": [5, 9], "fast": [3, 5], "versu": 5, "right": [4, 5, 6, 9], "work": [1, 2, 3, 5, 6, 9], "stage": [2, 4, 5, 6], "type": [1, 2, 4, 5, 6, 9], "step": [4, 5, 6, 9], "configur": [4, 5, 6, 9], "gear": 5, "fig": [5, 6], "specifi": [1, 2, 3, 4, 5, 6, 9], "what": [1, 2, 3, 4, 5, 6], "do": [1, 2, 3, 4, 5, 6, 9], "fix": [5, 9], "function": [1, 2, 3, 4, 5, 6, 9], "flow": 5, "output": [2, 5, 6, 9], "word": [3, 4, 5, 6, 9], "consum": [5, 6], "respons": [3, 5, 6], "suppli": [4, 5], "fill": [2, 4, 5, 6], "arrai": [2, 3, 5, 6, 9], "vertic": [3, 4, 5, 6], "indic": [1, 2, 3, 4, 5, 6, 9], "line": [5, 6, 9], "attach": 5, "instanc": [2, 5, 6, 9], "pass": [1, 2, 3, 4, 5, 6], "transform": [4, 5, 9], "skin": 5, "per": [4, 5, 6], "return": [2, 3, 4, 5, 6, 9], "hull": 5, "onc": [2, 3, 4, 5, 6, 9], "patch": 5, "curv": [5, 9], "surfac": [4, 5, 9], "setup": [3, 4, 5], "tessel": 5, "exampl": [1, 2, 3, 4, 5, 6, 9], "tess": 5, "factor": [3, 5], "densiti": 5, "unit": [2, 4, 5, 9], "declar": [1, 2, 4, 5, 6, 9], "purpos": [2, 3, 4, 5, 6], "domain": 5, "quad": [4, 5, 9], "tri": 5, "notifi": [3, 5, 6], "geometr": [5, 9], "shape": [4, 5, 9], "connect": [4, 5, 6, 9], "invok": [1, 3, 5, 6], "invoc": 5, "identifi": [2, 5, 6, 9], "well": [2, 3, 4, 5, 6, 9], "produc": 5, "tangibl": 5, "sent": [2, 3, 5, 6], "further": [4, 5, 6, 9, 10], "entir": [2, 3, 4, 5, 6], "limit": [1, 4, 5], "amplif": 5, "de": 5, "given": [2, 3, 5], "discard": [3, 5, 6], "emit": [4, 5, 9], "stream": [2, 5], "out": [1, 2, 4, 5, 6, 9], "recircul": 5, "back": [1, 2, 3, 4, 5, 6, 9], "convert": [4, 5, 6, 9], "account": 5, "viewport": [1, 5, 6], "scissor": 5, "later": [1, 2, 3, 4, 5, 6, 9], "collect": [2, 5, 6], "receiv": [2, 4, 5, 6], "possibli": 5, "store": [1, 2, 4, 5, 6, 9], "depend": [1, 2, 3, 4, 5, 6, 9], "last": [2, 3, 4, 5, 6, 9], "enabl": [1, 2, 3, 4, 5, 6, 9], "sophist": 5, "shade": 5, "post": [2, 5, 6], "overal": [5, 6], "qualiti": [4, 5, 6], "merger": 5, "om": 5, "determin": [1, 2, 4, 5, 6, 9], "visibl": [2, 4, 5, 6], "depth": [1, 4, 5], "stencil": 5, "test": 5, "blend": 5, "correspond": [2, 3, 4, 5, 6, 9, 10], "combin": [2, 3, 5, 9], "show": [1, 3, 4, 5, 6, 9], "togeth": [1, 3, 5], "option": [4, 5, 6], "while": [1, 2, 3, 4, 5, 6, 9], "goe": [4, 5], "littl": [4, 5, 6], "bottom": [5, 6], "slot": [2, 3, 4, 5], "bound": [2, 4, 5, 9], "At": [1, 2, 3, 4, 5, 6, 9], "descript": [1, 5, 6], "vsmain": [2, 4, 5], "psmain": [2, 4, 5], "structur": [2, 4, 5, 6, 9], "dimens": [4, 5, 6, 9], "virtual": [1, 2, 3, 4, 5, 6], "address": [2, 3, 5, 6, 9], "hardwar": [1, 2, 3, 5, 6], "rather": [1, 3, 4, 5, 6, 9], "bind": [1, 2, 4, 5, 6, 9], "block": [3, 4, 5, 6], "regist": [2, 4, 5, 6, 9], "name": [1, 2, 3, 4, 5, 6, 9], "charact": [5, 6], "string": [5, 6], "associ": [1, 2, 3, 4, 5, 6, 9], "sinc": [1, 2, 3, 4, 5, 6, 9], "context": [2, 4, 5, 6], "opt": [2, 5, 6], "heap": [1, 2, 4, 5, 6], "remaind": 5, "though": [5, 6, 9], "doe": [2, 3, 4, 5, 6, 9], "explicitli": [2, 5, 6], "distinguish": [1, 3, 5, 6, 9], "between": [1, 2, 3, 4, 5, 6, 9], "sometim": [5, 9], "perceiv": 5, "encapsul": [4, 5], "deep": 5, "occlud": 5, "share": [2, 5, 6, 9], "mask": 5, "drawn": [3, 5], "dissolv": 5, "decal": 5, "outlin": [3, 5, 6], "li": [1, 5, 9], "x": [2, 4, 5, 9], "y": [2, 4, 5, 9], "ax": [5, 9], "let": [1, 2, 3, 4, 5, 6, 9], "temporarili": [2, 5], "directli": [1, 2, 4, 5, 6, 9], "z": [2, 5, 9], "axi": [5, 9], "measur": [4, 5, 9], "xy": 5, "yellow": 5, "red": [4, 5, 6, 9], "nearest": [4, 5], "disabl": 5, "overwrit": [3, 5, 6], "whatev": [5, 6], "observ": [1, 2, 3, 4, 5, 6, 9], "consist": [2, 4, 5, 6, 9], "semant": [4, 5], "first": [2, 3, 4, 5, 6, 9, 10], "vari": [4, 5, 6], "convei": 5, "intend": [1, 2, 4, 5, 6], "vector": [2, 4, 5, 8, 10], "float": [1, 2, 4, 5, 6, 9], "integ": [4, 5, 6, 9], "arithmet": [5, 6], "hlsl": 5, "procedur": [2, 4, 5], "sampler": [2, 4, 5], "filter": [4, 5], "basi": [5, 9], "load": [1, 2, 3, 4, 5, 6, 9], "intrins": 5, "never": 5, "constant": [4, 5, 7, 9, 10], "optim": [1, 2, 3, 4, 5, 6], "variabl": [2, 3, 4, 5, 6, 9], "frequent": [2, 5, 6], "therefor": [2, 3, 4, 5, 6, 9], "restrict": [2, 4, 5], "elabor": 5, "textual": 5, "establish": [4, 5, 6, 9], "arbitrari": [4, 5, 6], "sever": [2, 5], "predefin": [5, 9], "pretti": [5, 6], "explanatori": 5, "sv_": 5, "info": [5, 6], "sv_depth": 5, "sv_target": [2, 4, 5], "clear": [1, 3, 5, 6], "moment": [4, 5], "simpler": [5, 9], "seem": [2, 3, 5, 9], "brief": [2, 5, 9], "encount": [3, 5, 6], "perfectli": [2, 5, 6], "normal": [3, 4, 5, 6, 9], "experi": [3, 5], "initi": [1, 2, 3, 4, 5, 6, 9], "confus": 5, "dont": 5, "devic": [5, 6], "object": [1, 2, 3, 4, 5, 9], "pointer": [2, 4, 5, 6], "id3d12devic": [1, 2, 3, 4, 5, 6], "interfac": [4, 5, 6], "command": [1, 2, 3, 4, 5, 6], "queue": [1, 2, 3, 4, 5, 6], "alloc": [1, 2, 3, 4, 5, 6], "raw": [5, 6], "1d": 5, "createcommittedresourc": [2, 4, 5], "method": [1, 4, 5, 6, 9], "whenev": [1, 2, 3, 4, 5, 6], "argument": [1, 2, 3, 4, 5, 6], "referenc": [1, 2, 4, 5], "our": [1, 2, 3, 4, 5, 6, 9], "With": [4, 5, 6], "typeless": 5, "format": [1, 4, 5, 6], "miss": [3, 5, 9], "idea": [3, 5], "four": [2, 4, 5, 6, 9], "reserv": [2, 4, 5, 6], "local": [3, 4, 5, 6, 9], "vram": [5, 6], "boot": 5, "intern": [4, 5, 6, 9], "pci": [2, 5, 6], "bu": [2, 5, 6], "ram": [5, 6], "via": [4, 5], "event": [3, 4, 5, 6], "avoid": [2, 3, 5, 6], "uncach": 5, "hold": [1, 2, 3, 4, 5, 6, 9], "flush": [3, 4, 5, 6], "slow": 5, "problem": [2, 3, 4, 5, 6, 9], "cach": 5, "bottleneck": 5, "integr": [5, 6], "softwar": [5, 6], "adapt": [5, 6], "distinct": [1, 2, 3, 4, 5, 9], "case": [1, 2, 3, 4, 5, 6, 9], "impli": [5, 6], "slower": 5, "abstract": [5, 6], "default": [1, 2, 3, 4, 5, 6], "resid": [2, 4, 5, 6], "readback": 5, "approach": [2, 3, 4, 5, 6, 9], "discret": [4, 5], "hidden": [5, 6], "explor": [1, 3, 5, 6, 8, 9], "properti": [4, 5, 6], "pool": 5, "mostli": 5, "larg": 5, "until": [1, 2, 3, 4, 5, 6, 9], "destroi": [4, 5, 6], "evict": 5, "paramet": [2, 3, 4, 5, 6, 9], "handl": [1, 2, 3, 4, 5, 6], "rememb": [1, 3, 4, 5, 6, 9], "must": [1, 2, 4, 5, 6, 9, 10], "offset": [2, 3, 4, 5, 6], "shortli": [3, 4, 5, 6, 9], "cbv": [2, 4, 5], "unord": 5, "uav": [2, 5], "srv": [2, 4, 5], "rtv": [2, 3, 4, 5, 6], "dsv": 5, "ibv": 5, "vbv": 5, "sov": 5, "exactli": [4, 5, 6, 9], "respect": [2, 3, 4, 5, 9], "d3d12_descriptor_heap_flag_shader_vis": [2, 4, 5], "flag": [2, 3, 4, 5, 6], "d3d12_descriptor_heap_desc": [2, 4, 5, 6], "createdescriptorheap": [2, 4, 5, 6], "cannot": [1, 2, 3, 4, 5, 6, 9], "d3d12_descriptor_heap_flag_non": [2, 4, 5, 6], "why": [1, 2, 3, 4, 5, 6, 9], "non": [1, 2, 5, 6], "doesn": [2, 4, 5, 6, 9], "separ": [1, 2, 3, 5, 6, 9], "similarli": [5, 6, 9], "record": [1, 2, 3, 4, 5, 6], "scenario": [3, 5, 6], "ongo": [5, 6], "race": 5, "readabl": 5, "barrier": 5, "usag": [1, 2, 4, 5, 6], "concurr": [1, 4, 5], "id3d12graphicscommandlist": [1, 2, 3, 4, 5, 6], "resourcebarri": [1, 2, 4, 5, 6], "ani": [1, 2, 4, 5, 6, 9], "d3d12_resource_st": 5, "texture2d": [4, 5], "g_textur": [4, 5], "t0": [4, 5], "wrong": 5, "precis": [5, 6, 9], "logic": [4, 5], "b": [3, 4, 5, 6, 9], "mislead": 5, "There": [4, 5], "would": [2, 3, 4, 5, 6, 9], "been": [2, 3, 4, 5, 6], "linknam": 5, "link": [2, 5], "mayb": [5, 9], "said": [3, 5], "timelin": [1, 2, 3, 5, 6], "act": [5, 6, 9], "expect": [1, 5, 6, 9], "wish": 5, "along": [1, 3, 4, 5, 6, 9], "32": [1, 2, 4, 5, 6, 9], "inlin": [5, 9], "dword": [4, 5], "tabl": [2, 4, 5, 6, 10], "contigu": [2, 4, 5], "note": [3, 4, 5, 6, 9], "conveni": [2, 3, 5, 6, 9], "byte": [2, 4, 5, 6, 9], "float4": [2, 4, 5, 9], "3": [1, 2, 3, 4, 5, 6, 9], "five": [2, 4, 5], "rang": [2, 4, 5, 6, 9], "indirect": 5, "lastli": 5, "doubl": 5, "complex": [4, 5, 6], "longer": [4, 5], "effici": [1, 3, 4, 5, 6], "larger": 5, "static": [1, 2, 3, 4, 5, 6, 9], "deserv": 5, "implicitli": [2, 4, 5, 6], "automat": [2, 3, 4, 5, 6, 9], "downsid": [3, 5, 9], "order": [3, 4, 5, 6, 9], "quickli": [5, 6], "spill": 5, "split": [2, 5], "proper": 5, "maximum": [2, 3, 5], "64": [4, 5], "rule": [1, 2, 5, 6, 9], "keep": [2, 3, 5], "mind": [2, 5], "exclus": 5, "sort": 5, "place": [3, 5, 6, 9], "rel": [4, 5, 9], "inexpens": 5, "invalid": [4, 5, 6], "unfortun": [3, 5, 6], "expens": 5, "pend": [3, 5, 6], "after": [2, 3, 4, 5, 6, 9], "continu": [1, 3, 4, 5, 6], "freeli": 5, "flight": 5, "flexibl": [2, 5], "paid": 5, "poor": 5, "promis": [5, 6], "natur": 5, "could": [2, 3, 4, 5, 6, 9], "remov": [5, 6], "data_static_while_set_at_execut": 5, "stai": [4, 5], "unchang": 5, "data_volatil": 5, "descriptors_volatil": 5, "behavior": [5, 6], "assumpt": 5, "pso": [1, 2, 4, 5, 6], "unifi": [5, 9], "immut": 5, "quick": 5, "summari": [5, 6, 9], "bytecod": 5, "count": [2, 4, 5, 6], "certain": [1, 2, 3, 5, 6], "highlight": [1, 5, 6, 9], "adjac": [4, 5, 9], "strip": 5, "recal": [2, 4, 5], "setpipelinest": [1, 5], "altern": [3, 4, 5, 6, 9], "reset": [1, 2, 5, 6], "createcommandlist": [1, 4, 5, 6], "either": [1, 2, 3, 4, 5, 6], "none": [1, 5], "wa": [1, 2, 3, 5, 6], "previous": [1, 3, 5, 6], "inherit": [5, 6], "ideal": 5, "sentenc": 5, "seemingli": 5, "contrast": [1, 4, 5], "emphasi": 5, "balanc": [3, 5], "individu": [4, 5], "dynam": [2, 4, 5], "match": [1, 4, 5, 6], "failur": [5, 6], "undefin": [2, 5, 9], "emphas": [4, 5], "kept": 5, "switch": [3, 4, 5, 6, 9], "creategraphicspipelinest": [2, 4, 5], "d3d12_graphics_pipeline_state_desc": [2, 4, 5], "insid": [3, 5, 6], "emb": 5, "travers": 5, "translat": [2, 4, 5, 6, 9], "shed": 5, "embed": 5, "plausibl": 5, "involv": [3, 4, 5, 6, 9], "introduc": [1, 2, 3, 5, 9], "twice": [5, 6], "obtain": [3, 4, 5, 6, 9], "second": [2, 3, 4, 5, 6, 9], "glanc": 5, "excess": [3, 5], "question": [4, 5], "necess": 5, "couldn": 5, "retriev": [2, 3, 4, 5, 6], "furthermor": [3, 5], "absenc": 5, "concern": [2, 4, 5, 9], "thing": [2, 3, 5, 6], "unclear": 5, "ll": [2, 3, 4, 5, 6, 9], "thu": [1, 2, 4, 5, 6], "far": [3, 4, 5], "By": [2, 3, 4, 5, 9], "foundat": [5, 8], "known": [4, 5, 6, 9], "model": [3, 5, 9], "made": [4, 5], "tool": [4, 5, 6, 9], "max": [4, 5], "blender": 5, "straightforward": [2, 4, 5, 6, 9], "cube": 5, "programmat": [4, 5], "underli": [4, 5, 6], "organ": [1, 2, 5], "reflect": [4, 5], "interpret": [5, 9], "were": [3, 4, 5, 6], "clue": 5, "imposs": 5, "16": [2, 4, 5, 6, 9], "15": [2, 5], "homogen": [4, 5], "uniform": [4, 5], "heterogen": 5, "mix": 5, "bandwidth": 5, "fetch": [4, 5], "relev": [5, 6, 9], "anywai": [5, 9], "append": [3, 5], "relationship": [4, 5, 6], "adiac": 5, "symbol": [5, 9], "wind": 5, "clockwis": [4, 5, 9], "counterclockwis": 5, "isol": 5, "segment": [5, 9], "extrem": 5, "th": [5, 9], "accord": 5, "formula": [5, 9], "triangle_i": 5, "invari": 5, "smooth": [3, 5], "nullifi": 5, "assign": [4, 5, 6, 9], "arrow": [5, 9], "4": [1, 2, 4, 5, 6, 9], "6": [5, 6, 9], "8": [4, 5, 6], "9": [4, 5, 6], "24": 5, "repetit": 5, "octagon": 5, "v0": [4, 5], "v1": [4, 5], "v2": [4, 5], "v3": [4, 5], "v4": 5, "v5": 5, "v6": 5, "v7": 5, "5": [4, 5, 9], "v8": 5, "7": [5, 9], "duplic": 5, "pick": 5, "v": [2, 3, 4, 5, 6, 9], "uint": [1, 2, 3, 4, 5, 6], "indexlist": 5, "although": [4, 5, 6, 9], "repeat": [1, 4, 5], "short": [5, 6], "wherea": 5, "save": [2, 5, 6], "unlik": [2, 5, 6, 9], "assist": [2, 3, 5, 6], "scale": [5, 9], "rotat": [5, 9], "simplifi": [5, 6, 9], "expos": [5, 6], "128": [4, 5, 9], "temporari": [2, 5], "r": [4, 5, 6, 9], "compon": [2, 4, 5, 9], "put": [2, 4, 5, 6], "o0": 5, "shown": [2, 3, 4, 5, 6], "cb": [2, 5], "assembli": 5, "despit": [2, 5, 6], "real": [4, 5, 9], "scalar": 5, "simt": 5, "simd": [5, 9], "wonder": [2, 4, 5, 6, 9], "exist": [4, 5, 6, 9], "essenc": [5, 6, 9], "statement": [5, 6], "linkag": 5, "dispatch": [5, 6], "entri": [5, 6], "encompass": [5, 6], "struct": [1, 2, 3, 4, 5, 9], "vsintput": 5, "vsoutput": 5, "var": 5, "param": 5, "useless": 5, "equival": [5, 9], "pre": [1, 5], "sv_posit": [2, 4, 5], "origin": [1, 4, 5, 6, 9], "fall": [4, 5], "outsid": [4, 5], "rectangular": 5, "jut": 5, "stretch": [5, 6], "itsl": 5, "overlap": [2, 5], "grei": [4, 5], "dark": 5, "belong": [5, 6], "upper": 5, "edg": [4, 5], "decid": 5, "lower": [4, 5], "govern": 5, "decis": 5, "enjoi": 5, "anticip": 5, "worth": [5, 9], "attempt": [5, 6], "elimin": [2, 5, 6, 9], "orient": [5, 6], "toward": [5, 9], "perpendicular": [5, 9], "awai": [4, 5, 9], "sign": [5, 9], "deriv": [5, 6, 9], "demonstr": [4, 5, 6, 9], "transpar": [4, 5, 6], "rais": 5, "barycentr": [4, 5], "adjust": [3, 5], "aris": [2, 4, 5, 6, 9], "too": [3, 5], "caught": 5, "obliqu": 5, "endpoint": 5, "black": [4, 5], "white": [4, 5], "appear": [4, 5, 6], "grai": 5, "definit": [2, 4, 5, 6], "fragment": [4, 5], "except": [1, 2, 4, 5, 6], "bitmask": 5, "channel": [4, 5, 6], "verifi": [5, 9], "class": [1, 2, 3, 4, 5, 6, 9], "comment": [1, 2, 3, 4, 5, 6], "comptr": [1, 2, 3, 4, 5, 6], "releas": [4, 5, 6], "finish": [1, 2, 3, 4, 5, 6], "hellotriangl": [1, 5], "h": [1, 2, 3, 4, 5, 6, 9], "lifetim": [2, 5, 6], "app": [1, 2, 3, 4, 5, 6], "ondestroi": [1, 2, 3, 4, 5, 6], "wrl": [5, 6], "public": [1, 2, 3, 4, 5, 6], "dxsampl": [1, 2, 3, 4, 5, 6], "width": [1, 2, 3, 4, 5, 6], "height": [1, 2, 3, 4, 5, 6, 9], "std": [1, 2, 3, 4, 5, 6], "wstring": [1, 2, 3, 4, 5, 6], "void": [1, 2, 3, 4, 5, 6, 9], "oninit": [1, 2, 3, 4, 5, 6], "onupd": [1, 2, 3, 4, 5, 6], "onrend": [1, 2, 3, 4, 5, 6], "privat": [1, 2, 3, 4, 5, 6], "const": [1, 2, 3, 4, 5, 6, 9], "framecount": [1, 2, 3, 4, 5, 6], "xmfloat3": [1, 2, 3, 4, 5, 9], "xmfloat4": [1, 2, 3, 5, 9], "cd3dx12_viewport": [1, 2, 3, 4, 5], "m_viewport": [1, 2, 3, 4, 5], "cd3dx12_rect": [1, 2, 3, 4, 5], "m_scissorrect": [1, 2, 3, 4, 5], "idxgiswapchain3": [1, 2, 3, 4, 5, 6], "m_swapchain": [1, 2, 3, 4, 5, 6], "m_devic": [1, 2, 3, 4, 5, 6], "id3d12resourc": [1, 2, 3, 4, 5, 6], "m_rendertarget": [1, 2, 3, 4, 5, 6], "id3d12commandalloc": [1, 2, 3, 4, 5, 6], "m_commandalloc": [1, 2, 3, 4, 5, 6], "id3d12commandqueu": [1, 2, 3, 4, 5, 6], "m_commandqueu": [1, 2, 3, 4, 5, 6], "id3d12rootsignatur": [1, 2, 3, 4, 5], "m_rootsignatur": [1, 2, 3, 4, 5], "id3d12descriptorheap": [1, 2, 3, 4, 5, 6], "m_rtvheap": [1, 2, 3, 4, 5, 6], "id3d12pipelinest": [1, 2, 3, 4, 5, 6], "m_pipelinest": [1, 2, 3, 4, 5, 6], "m_commandlist": [1, 2, 3, 4, 5, 6], "m_rtvdescriptors": [1, 2, 3, 4, 5, 6], "m_vertexbuff": [1, 2, 3, 4, 5], "d3d12_vertex_buffer_view": [1, 2, 3, 4, 5], "m_vertexbufferview": [1, 2, 3, 4, 5], "m_frameindex": [1, 2, 3, 4, 5, 6], "m_fenceev": [1, 2, 3, 4, 5, 6], "id3d12fenc": [1, 2, 3, 4, 5, 6], "m_fenc": [1, 2, 3, 4, 5, 6], "uint64": [1, 2, 3, 4, 5, 6], "m_fencevalu": [1, 2, 3, 4, 5, 6], "loadpipelin": [1, 2, 3, 4, 5, 6], "loadasset": [1, 2, 3, 4, 5, 6], "populatecommandlist": [1, 2, 3, 4, 5, 6], "waitforpreviousfram": [1, 2, 3, 4, 5, 6], "evid": 5, "constructor": [2, 3, 5, 6, 9], "cpp": [1, 2, 3, 4, 5, 6, 9], "0f": [1, 2, 4, 5, 6, 9], "static_cast": [5, 6], "carefulli": [3, 4, 5], "asset": [1, 2, 3, 4, 5, 6], "empti": [2, 5, 6], "cd3dx12_root_signature_desc": 5, "rootsignaturedesc": [2, 4, 5], "init": [2, 3, 4, 5], "nullptr": [1, 2, 3, 4, 5, 6], "d3d12_root_signature_flag_allow_input_assembler_input_layout": [2, 4, 5], "id3dblob": [2, 4, 5], "error": [1, 2, 4, 5, 6], "throwiffail": [1, 2, 3, 4, 5, 6], "d3d12serializerootsignatur": 5, "d3d_root_signature_version_1": 5, "createrootsignatur": [2, 4, 5], "getbufferpoint": [2, 4, 5], "getbuffers": [2, 4, 5], "iid_ppv_arg": [1, 2, 3, 4, 5, 6], "vertexshad": [2, 4, 5], "pixelshad": [2, 4, 5], "_debug": [4, 5, 6], "debug": [1, 4, 5, 6], "compileflag": [4, 5], "d3dcompile_debug": [4, 5], "d3dcompile_skip_optim": [4, 5], "els": [4, 5, 6], "endif": [4, 5, 6], "d3dcompilefromfil": [4, 5], "getassetfullpath": [4, 5, 6], "l": [4, 5, 6], "c_str": [4, 5, 6], "vs_5_0": [4, 5], "ps_5_0": [4, 5], "d3d12_input_element_desc": [4, 5], "inputelementdesc": [2, 4, 5], "dxgi_format_r32g32b32_float": [4, 5], "d3d12_input_classification_per_vertex_data": [4, 5], "dxgi_format_r32g32b32a32_float": 5, "psodesc": [2, 4, 5], "inputlayout": [2, 4, 5], "_countof": [2, 3, 4, 5, 6], "prootsignatur": [2, 4, 5], "cd3dx12_shader_bytecod": [2, 4, 5], "p": [2, 4, 5, 9], "rasterizerst": [2, 4, 5], "cd3dx12_rasterizer_desc": [2, 4, 5], "d3d12_default": [2, 4, 5], "blendstat": [2, 4, 5], "cd3dx12_blend_desc": [2, 4, 5], "depthstencilst": [2, 4, 5], "depthen": [2, 4, 5], "fals": [1, 2, 3, 4, 5, 6], "stencilen": [2, 4, 5], "samplemask": [2, 4, 5], "uint_max": [2, 4, 5], "primitivetopologytyp": [2, 4, 5], "d3d12_primitive_topology_type_triangl": [2, 4, 5], "numrendertarget": [2, 4, 5], "rtvformat": [2, 4, 5], "dxgi_format_r8g8b8a8_unorm": [2, 4, 5, 6], "sampledesc": [2, 4, 5, 6], "d3d12_command_list_type_direct": [1, 3, 4, 5, 6], "yet": [1, 3, 5, 6, 9], "loop": [1, 3, 4, 5, 6], "close": [1, 2, 4, 5, 6], "trianglevertic": [4, 5], "25f": [2, 4, 5], "m_aspectratio": [4, 5, 6], "vertexbuffers": [4, 5], "sizeof": [2, 4, 5, 6], "transfer": [2, 4, 5], "vert": [4, 5], "marshal": [4, 5], "simplic": [4, 5, 6], "veri": [3, 4, 5, 6], "few": [4, 5, 6], "cd3dx12_heap_properti": [2, 4, 5], "d3d12_heap_type_upload": [2, 4, 5], "d3d12_heap_flag_non": [2, 4, 5], "cd3dx12_resource_desc": [2, 4, 5], "d3d12_resource_state_generic_read": [2, 4, 5], "uint8": [2, 4, 5, 6], "pvertexdatabegin": [4, 5], "cd3dx12_rang": [2, 4, 5], "readrang": [2, 4, 5], "reinterpret_cast": [2, 4, 5, 6], "memcpi": [2, 4, 5], "unmap": [2, 4, 5], "bufferloc": [2, 4, 5], "getgpuvirtualaddress": [2, 4, 5], "strideinbyt": [4, 5], "sizeinbyt": [2, 4, 5], "wait": [2, 3, 4, 5, 6], "createf": [3, 4, 5, 6], "d3d12_fence_flag_non": [3, 4, 5, 6], "createev": [3, 4, 5, 6], "hresult_from_win32": [3, 4, 5, 6], "getlasterror": [3, 4, 5, 6], "reus": [3, 4, 5, 6], "firstli": 5, "helper": [2, 4, 5, 6, 9], "beyond": [3, 4, 5], "scope": [2, 3, 4, 5, 6], "minor": 5, "serial": [2, 5], "blob": 5, "file": [4, 5, 6, 9], "disk": 5, "recreat": 5, "cast": 5, "correct": [3, 5, 6, 9], "d3dwriteblobtofil": 5, "emploi": [2, 3, 4, 5, 6], "advis": 5, "recent": 5, "valid": [4, 5, 6, 9], "older": [3, 5, 6], "path": [5, 6], "util": [5, 6, 9], "rich": 5, "zero": [2, 3, 5, 6, 9], "rgba": [4, 5], "d3d12_input_classification_per_instance_data": 5, "swap": [2, 3, 5, 6, 9], "chain": [2, 3, 5, 6], "off": [3, 5, 9], "multisampl": [5, 6], "0xffffffff": 5, "ine": 5, "notic": [3, 5, 6, 9], "signific": [5, 6, 9], "boundari": [2, 4, 5], "sure": [3, 5, 6], "readi": [3, 4, 5, 6], "dual": 5, "accommod": [2, 3, 4, 5], "d3d12_heap_type_default": [4, 5], "repeatedli": 5, "d3d12_heap_type_readback": 5, "d3d12_heap_type_custom": 5, "modifi": [1, 2, 3, 5, 6, 9], "sake": [4, 5], "subresourc": [4, 5, 6], "granular": [4, 5], "smallest": [4, 5], "tile": [4, 5], "d3d12_rang": 5, "shouldn": [5, 6], "null": [5, 6, 9], "anymor": [5, 6], "fenc": [1, 2, 3, 5, 6], "executecommandlist": [1, 2, 3, 4, 5, 6], "setgraphicsrootsignatur": [1, 2, 4, 5], "rssetviewport": [1, 2, 4, 5], "rssetscissorrect": [1, 2, 4, 5], "cd3dx12_resource_barri": [1, 2, 4, 5, 6], "d3d12_resource_state_pres": [1, 2, 4, 5, 6], "d3d12_resource_state_render_target": [1, 2, 4, 5, 6], "cd3dx12_cpu_descriptor_handl": [1, 2, 3, 4, 5, 6], "rtvhandl": [1, 2, 3, 4, 5, 6], "getcpudescriptorhandleforheapstart": [1, 2, 3, 4, 5, 6], "omsetrendertarget": [1, 2, 4, 5], "clearcolor": [1, 2, 4, 5, 6], "2f": [1, 2, 4, 5, 6], "4f": [1, 2, 4, 5, 6], "clearrendertargetview": [1, 2, 4, 5, 6], "iasetprimitivetopologi": [1, 2, 4, 5], "d3d_primitive_topology_trianglelist": [1, 2, 4, 5], "iasetvertexbuff": [1, 2, 4, 5], "drawinstanc": [1, 2, 4, 5], "trianglelist": 5, "restart": [5, 6], "n": [3, 4, 5, 6, 9], "third": [2, 3, 4, 5, 9], "boolean": 5, "okai": [2, 5], "conclud": [5, 9], "psinput": [2, 4, 5], "rare": [5, 6], "built": [5, 6, 9], "float3": [2, 5, 9], "green": [5, 6], "blue": [5, 6], "almost": [5, 6, 10], "certainli": [5, 6], "wide": [4, 5, 6, 9], "constitut": [4, 5], "transmit": 5, "vsinput": 5, "occupi": 5, "wast": [3, 5], "colon": 5, "haven": [3, 5, 6], "resiz": [5, 6], "happen": [3, 4, 5, 6], "1280": [5, 6], "720": [5, 6], "mitig": [4, 5], "ratio": [5, 6, 9], "d3d12helloworld": [1, 2, 3, 4, 5, 6], "d": 6, "audio": 6, "linear": [4, 6], "primari": [6, 9], "direct3d": [1, 4, 6], "directxmath": [6, 9], "primit": [1, 2, 4, 6], "pipelin": [2, 3, 4, 6], "talk": 6, "compat": 6, "direct2d": 6, "bitmap": 6, "interoper": 6, "menu": 6, "ui": 6, "head": [6, 9], "hud": 6, "directwrit": 6, "resolut": 6, "font": 6, "unicod": 6, "layout": [2, 4, 6], "acceler": 6, "brush": 6, "radial": 6, "gradient": 6, "common": [2, 6, 9], "xaudio2": 6, "sound": 6, "background": [1, 3, 6], "music": 6, "xinput": 6, "input": [2, 3, 4, 6], "aim": [2, 4, 6, 9], "surpris": 6, "discov": 6, "substanti": 6, "primarili": [6, 9], "boilerpl": 6, "sole": 6, "skip": 6, "comfort": 6, "micc": 6, "heavili": 6, "inspir": 6, "chapter": [6, 10], "fifth": 6, "david": 6, "kruglinski": 6, "georg": 6, "shepherd": 6, "scott": 6, "wingo": 6, "driven": 6, "respond": 6, "keystrok": 6, "mous": 6, "repaint": [1, 6], "itself": [1, 4, 6, 9], "winmain": 6, "action": 6, "enter": [2, 3, 6], "arriv": 6, "exit": [2, 4, 6], "wm_quit": 6, "signal": [3, 6], "termin": 6, "bypass": 6, "send": [3, 6], "characterist": 6, "icon": 6, "defwindowproc": 6, "valu": [2, 3, 4, 6, 9], "handler": [2, 4, 6], "letter": 6, "wm_": 6, "wm_creat": 6, "wm_paint": [2, 4, 6], "ten": 6, "wm_char": 6, "keyboard": 6, "wm_command": 6, "item": 6, "notif": 6, "parent": [1, 6], "wm_destroi": 6, "wm_lbuttondown": 6, "wm_lbuttonup": 6, "wm_mousemov": 6, "move": [4, 6, 9], "wm_size": 6, "interior": 6, "wparam": 6, "lparam": 6, "uniqu": [2, 4, 6, 9], "numer": [6, 9], "state": [2, 3, 4, 6, 9], "ctrl": 6, "shift": 6, "convention": 6, "critic": 6, "major": [3, 6], "break": 6, "binari": 6, "gener": [1, 4, 6, 9], "technologi": 6, "upon": [6, 9], "backward": 6, "dx12": 6, "librari": [4, 6, 9], "runtim": [1, 4, 6], "dx11": 6, "solv": [2, 4, 6], "ve": [1, 6], "ever": 6, "export": 6, "dll": 6, "java": 6, "python": 6, "didn": 6, "standard": [6, 9], "sai": 6, "anyth": [2, 6], "polymorph": 6, "stack": 6, "memori": [1, 2, 3, 4, 6, 9], "feasibl": [2, 6], "convers": [6, 9], "struggl": 6, "commun": 6, "lack": [4, 6], "knowledg": [6, 10], "resolv": [4, 6], "abl": [3, 6], "directori": 6, "suppos": [6, 9], "choos": 6, "recompil": 6, "ad": [3, 4, 6, 9], "member": [2, 6, 9], "fine": [4, 6], "imagin": [4, 6, 9], "incorrect": 6, "wors": 6, "crash": 6, "inconveni": 6, "principl": 6, "server": 6, "concret": [3, 6], "affect": [1, 3, 6], "forc": [4, 6, 9], "agre": 6, "comprehend": 6, "nearli": 6, "platform": [6, 9], "notabl": 6, "mechan": [3, 6], "mere": [2, 6, 9], "adher": [2, 6], "cocreateinst": 6, "registri": 6, "servic": [3, 6], "indirectli": 6, "central": [4, 6], "reli": [6, 9, 10], "hresult": 6, "encod": 6, "success": 6, "disrupt": 6, "coinitializeex": 6, "extend": [2, 4, 6, 9], "iunknown": 6, "addref": 6, "increment": [3, 6, 9], "decrement": 6, "reach": [3, 6], "caus": [4, 6, 9], "queryinterfac": 6, "queri": [2, 6], "iid": 6, "challeng": [2, 6], "solut": 6, "smart": 6, "templat": [6, 9], "pure": 6, "suitabl": [2, 6], "classic": [4, 6], "desktop": [3, 6], "drop": [1, 4, 6], "moreov": [1, 2, 6, 9], "accept": [2, 6, 9], "getaddressof": 6, "hasn": [3, 6], "gone": 6, "releaseandgetaddressof": 6, "caller": 6, "detach": 6, "wrapper": 6, "around": 6, "derefer": 6, "overload": [3, 6], "enumer": [1, 2, 4, 6], "buffer": [1, 4, 6, 7, 10], "gamma": 6, "transit": [1, 2, 3, 4, 6], "kernel": 6, "mode": [3, 6], "diagram": [4, 6], "interact": 6, "raster": [4, 6], "ask": 6, "desir": [4, 6], "rate": 6, "depict": 6, "maxim": [2, 6], "scan": 6, "refresh": 6, "trigger": 6, "implicit": 6, "backbon": 6, "lib": 6, "linker": 6, "startup": 6, "hellowindow": 6, "stdafx": 6, "_use_decl_annotations_": 6, "int": [6, 9], "winapi": 6, "hinstanc": 6, "lpstr": 6, "ncmdshow": 6, "d3d12": 6, "win32appl": 6, "header": [6, 9], "d3dx12": [4, 6], "nativ": 6, "d3dcompil": 6, "shader": [1, 2, 4, 6, 9], "use_decl_annot": 6, "macro": 6, "sal": 6, "annot": 6, "micd": 6, "dxgi1_6": 6, "shellapi": 6, "overrid": 6, "onkeydown": 6, "onkeyup": 6, "accessor": 6, "getwidth": 6, "m_width": 6, "getheight": 6, "m_height": 6, "wchar": 6, "gettitl": 6, "m_titl": 6, "parsecommandlinearg": 6, "_in_reads_": 6, "argc": 6, "argv": 6, "protect": 6, "lpcwstr": 6, "assetnam": 6, "gethardwareadapt": 6, "_in_": 6, "idxgifactory1": 6, "pfactori": 6, "_outptr_result_maybenull_": 6, "idxgiadapter1": 6, "ppadapt": 6, "bool": 6, "requesthighperformanceadapt": 6, "setcustomwindowtext": 6, "m_usewarpdevic": 6, "root": [2, 4, 6], "m_assetspath": 6, "titl": 6, "psampl": 6, "hwnd": 6, "gethwnd": 6, "m_hwnd": 6, "lresult": 6, "callback": 6, "windowproc": 6, "assetspath": 6, "512": 6, "getassetspath": 6, "cass": 6, "absolut": 6, "search": 6, "proport": 6, "technic": [4, 6], "speak": 6, "conceptu": [4, 6], "pars": 6, "lpwstr": 6, "commandlinetoargvw": 6, "getcommandlinew": 6, "localfre": 6, "wndclassex": 6, "windowclass": 6, "cbsize": 6, "cs_hredraw": 6, "cs_vredraw": 6, "lpfnwndproc": 6, "hcursor": 6, "loadcursor": 6, "idc_arrow": 6, "lpszclassnam": 6, "dxsampleclass": 6, "registerclassex": 6, "rect": 6, "windowrect": 6, "adjustwindowrect": 6, "ws_overlappedwindow": 6, "createwindow": 6, "cw_usedefault": 6, "aren": 6, "child": [1, 6], "showwindow": 6, "msg": 6, "peekmessag": 6, "pm_remov": 6, "translatemessag": 6, "dispatchmessag": 6, "char": 6, "attribut": [2, 4, 6], "redraw": 6, "cursor": 6, "hover": 6, "manipul": [4, 6], "immedi": [3, 6], "overridden": 6, "dxgifactoryflag": 6, "layer": [1, 6], "activ": 6, "id3d12debug": 6, "debugcontrol": 6, "succeed": 6, "d3d12getdebuginterfac": 6, "enabledebuglay": 6, "dxgi_create_factory_debug": 6, "idxgifactory4": 6, "factori": 6, "createdxgifactory2": 6, "idxgiadapt": 6, "warpadapt": 6, "enumwarpadapt": 6, "d3d12createdevic": 6, "d3d_feature_level_11_0": 6, "hardwareadapt": 6, "d3d12_command_queue_desc": 6, "queuedesc": 6, "d3d12_command_queue_flag_non": 6, "createcommandqueu": 6, "dxgi_swap_chain_desc1": 6, "swapchaindesc": 6, "buffercount": 6, "bufferusag": 6, "dxgi_usage_render_target_output": 6, "swapeffect": 6, "dxgi_swap_effect_flip_discard": [3, 6], "idxgiswapchain1": 6, "swapchain": 6, "createswapchainforhwnd": 6, "fullscreen": 6, "makewindowassoci": 6, "dxgi_mwa_no_alt_ent": 6, "getcurrentbackbufferindex": [3, 6], "descriptor": [1, 2, 3, 4, 6], "view": [2, 3, 4, 6, 9], "rtvheapdesc": [2, 4, 6], "numdescriptor": [2, 4, 6], "d3d12_descriptor_heap_type_rtv": [2, 4, 6], "getdescriptorhandleincrements": [2, 4, 6], "getbuff": [3, 6], "createrendertargetview": [3, 6], "createcommandalloc": [1, 3, 6], "prototyp": 6, "refiid": 6, "riid": 6, "_com_outptr_opt_": 6, "ppvdebug": 6, "typo": 6, "combaseapi": 6, "pptype": 6, "__uuidof": 6, "iid_ppv_args_help": 6, "request": [3, 6], "warn": 6, "obscur": 6, "leak": 6, "9_1": 6, "11_0": 6, "warp": 6, "proceed": [6, 9], "acquir": 6, "idxgifactory6": 6, "factory6": 6, "adapterindex": 6, "enumadapterbygpuprefer": 6, "true": [6, 9], "dxgi_gpu_preference_high_perform": 6, "dxgi_gpu_preference_unspecifi": 6, "dxgi_adapter_desc1": 6, "desc": 6, "getdesc1": 6, "dxgi_adapter_flag_softwar": 6, "_uuidof": 6, "enumadapters1": 6, "Such": 6, "confid": [3, 6], "submit": [1, 3, 6], "blueish": 6, "insert": [3, 6], "guarante": [1, 2, 3, 6], "henc": [6, 9], "drive": 6, "dxgi_format": [4, 6], "unsign": [4, 6, 9], "255": [4, 6], "256": [2, 4, 6], "mimic": 6, "rgb": 6, "alpha": [4, 6], "opac": 6, "flip": [3, 6], "faster": 6, "pixel": [4, 6], "msaa": 6, "yourself": 6, "index": [2, 3, 4, 6, 9], "idxgifactori": 6, "alt": 6, "shortcut": 6, "But": [6, 9], "bulk": 6, "answer": [4, 6], "correpspond": 6, "wherev": 6, "stress": 6, "opaqu": 6, "sens": [4, 6, 9], "confirm": 6, "cpu_descriptor_handl": 6, "cd3dx12": 6, "behav": 6, "idxgiswapchain": [3, 6], "varieti": [4, 6], "And": [1, 3, 6, 9], "Be": [6, 9], "care": 6, "wm_keydown": 6, "wm_keyup": 6, "ascii": 6, "getwindowlongptr": 6, "gwlp_userdata": 6, "lpcreatestruct": 6, "pcreatestruct": 6, "setwindowlongptr": 6, "long_ptr": 6, "lpcreateparam": 6, "postquitmessag": 6, "opportun": 6, "createstruct": 6, "proce": [6, 9], "id3d12commandlist": [3, 4, 6], "ppcommandlist": [3, 4, 6], "paint": 6, "consumpt": 6, "preserv": [3, 6], "submiss": [3, 6], "deal": [2, 6], "interv": [2, 3, 6], "again": [1, 3, 6, 9], "syncinterv": [3, 6], "blank": [3, 6], "sync": [3, 6], "dash": [6, 9], "diagon": [6, 9], "isn": [6, 9], "fp": 6, "decreas": 6, "half": [4, 6], "prepar": [3, 6], "persist": [1, 6], "honest": 6, "intric": 6, "outcom": [6, 9], "unnecessari": 6, "unleash": [3, 6], "track": [3, 6], "populatecommandexactlylist": 6, "did": 6, "clean": 6, "bluish": 6, "tint": 6, "slightli": [4, 6], "m_": 6, "rtvdescriptors": 6, "0x20": 6, "hexadecim": 6, "populatedcommandlist": 6, "FOR": 6, "THE": 6, "TO": 6, "NOT": 6, "best": [4, 6], "d3d12helloframebuff": 6, "getcompletedvalu": [3, 6], "seteventoncomplet": [3, 6], "waitforsingleobject": 6, "infinit": [3, 6, 9], "18": 6, "had": [3, 4, 6], "equal": [3, 6, 9], "met": [3, 6], "delimit": [3, 4, 6], "winmsg": 6, "direct3ddxgi": 6, "d3d10": 6, "guid": [4, 6], "prog": 6, "dx": 6, "defect": 6, "msvc": 6, "170": 6, "walk": 10, "linux": 10, "prior": [1, 10], "school": 10, "download": 10, "fair": 10, "effort": 10, "introduct": 10, "prerequisit": 10, "hello": [], "refer": [2, 3, 5], "vertex": [1, 2, 3, 4], "summar": 1, "websit": 1, "mic": 1, "commonli": [1, 4, 9], "secondari": 1, "resubmit": 1, "overwritten": 1, "retain": [1, 4], "d3d12_command_list_typ": 1, "executebundl": 1, "isreus": 1, "perhap": 1, "spread": 1, "multithread": 1, "omsetstencilref": 1, "omsetblendfactor": 1, "topologi": 1, "d3d12_primitive_topology_type_undefin": 1, "overhead": [1, 2], "d3d12_command_list_type_bundl": 1, "discardresourc": 1, "resolvesubresourc": 1, "setpred": 1, "beginqueri": 1, "endqueri": 1, "sosettarget": 1, "setdescriptorheap": [1, 2, 4], "issu": [1, 4, 9], "d3d12hellotriangl": 1, "hellobundl": 1, "m_bundlealloc": 1, "m_bundl": 1, "storag": 1, "soon": [1, 3, 4], "revis": 1, "5f": [1, 4], "latter": 1, "redund": 1, "me": 1, "awar": [1, 9], "mistak": 1, "direct3d12": 1, "bundl": [7, 10], "31": 1, "thi": [], "d3d12helloconstbuff": [], "signatur": [2, 4], "reposit": 2, "simul": 2, "anim": 2, "latenc": [2, 3], "come": [2, 3], "phrase": 2, "contradictori": 2, "4096": 2, "compris": 2, "align": [2, 9], "constraint": 2, "fulfil": 2, "simplest": [2, 4], "divis": [2, 9], "4kb": 2, "64kb": 2, "resembl": 2, "side": [2, 9], "destin": [2, 4, 9], "counterpart": 2, "strategi": 2, "incur": 2, "helloconstbuff": 2, "cbuffer": 2, "sceneconstantbuff": 2, "b0": 2, "pad": 2, "240": 2, "total": 2, "keyword": [2, 9], "xxx": [], "minimum": 2, "extern": [2, 4], "60": 2, "static_assert": 2, "m_cbvheap": [2, 4], "m_constantbuff": 2, "m_constantbufferdata": 2, "m_pcbvdatabegin": 2, "pose": 2, "pack": [2, 9], "cross": 2, "mu": 2, "xmfloat2": [2, 4, 9], "mv": 2, "mw": 2, "float2": [2, 4, 9], "w": [2, 9], "manner": 2, "register1": 2, "register2": 2, "assembl": [2, 4], "unpack": 2, "deliv": 2, "nevertheless": [2, 3, 9], "cbvheapdesc": 2, "d3d12_descriptor_heap_type_cbv_srv_uav": [2, 4], "d3d12_feature_data_root_signatur": [2, 4], "featuredata": [2, 4], "highest": [2, 4], "support": [], "checkfeaturesupport": [2, 4], "succe": [2, 4], "highestvers": [2, 4], "d3d_root_signature_version_1_1": [2, 4], "fail": [2, 4], "d3d12_feature_root_signatur": [2, 4], "d3d_root_signature_version_1_0": [2, 4], "cd3dx12_descriptor_range1": [2, 4], "cd3dx12_root_parameter1": [2, 4], "rootparamet": [2, 4], "d3d12_descriptor_range_type_cbv": 2, "d3d12_descriptor_range_flag_data_stat": [2, 4], "initasdescriptort": [2, 4], "d3d12_shader_visibility_vertex": 2, "deni": 2, "uneccessari": 2, "d3d12_root_signature_flag": 2, "rootsignatureflag": 2, "d3d12_root_signature_flag_deny_hull_shader_root_access": 2, "d3d12_root_signature_flag_deny_domain_shader_root_access": 2, "d3d12_root_signature_flag_deny_geometry_shader_root_access": 2, "d3d12_root_signature_flag_deny_pixel_shader_root_access": 2, "cd3dx12_versioned_root_signature_desc": [2, 4], "init_1_1": [2, 4], "d3dx12serializeversionedrootsignatur": [2, 4], "constantbuffers": 2, "d3d12_constant_buffer_view_desc": 2, "cbvdesc": 2, "createconstantbufferview": 2, "d3d12_descriptor_range1": 2, "volatil": 2, "d3d12_root_parameter1": 2, "d3d12_versioned_root_signature_desc": 2, "d3d12_root_paramet": 2, "fourth": [2, 4], "potenti": 2, "gain": 2, "d3d12_shader_visibility_al": 2, "broadcast": [2, 4], "overrul": 2, "benefici": [2, 4], "ppheap": [2, 4], "setgraphicsrootdescriptort": [2, 4], "getgpudescriptorhandleforheapstart": [2, 4], "among": [2, 4], "constantli": 2, "messag": [2, 4], "translationspe": 2, "015f": 2, "offsetbound": 2, "25": 2, "disappear": 2, "33": 2, "interpol": 4, "realism": 4, "mesh": 4, "achiev": [3, 4, 9], "artist": 4, "manual": 4, "exhibit": 4, "checkerboard": 4, "pattern": 4, "grasp": 4, "grain": 4, "realist": 4, "appeal": 4, "direct3d11": 4, "overview": 4, "intro": 4, "direct3d9": 4, "thought": 4, "arrang": 4, "dxgi": [3, 4], "jpeg": 4, "png": 4, "directxtk12": 4, "compress": 4, "uncrompress": 4, "dd": 4, "directdraw": 4, "mipmap": 4, "cubemap": 4, "plai": [4, 9], "finest": 4, "hierarchi": 4, "halv": 4, "round": 4, "facilit": [4, 9], "identif": 4, "lod": 4, "nine": 4, "topmost": 4, "leav": 4, "scheme": 4, "One": 4, "uv": 4, "unwrap": 4, "christma": 4, "chocol": 4, "semplic": 4, "mathbf": [4, 9], "_1": 4, "_2": 4, "_3": 4, "multipli": [4, 9], "minu": 4, "truncat": 4, "fraction": 4, "pair": 4, "big": [4, 9], "materi": 4, "82": 4, "74": 4, "38": 4, "anisotrop": 4, "_4": 4, "83": 4, "75": 4, "81": 4, "73": 4, "subtract": 4, "62": 4, "88": 4, "exact": [4, 9], "_a": 4, "_b": 4, "78": 4, "linearli": 4, "horizont": 4, "bilinear": 4, "appendix": [4, 9], "who": 4, "prove": [4, 9], "futur": 4, "ugli": 4, "artifact": 4, "zoom": 4, "1024": 4, "approxim": [4, 9], "sticker": 4, "shoot": 4, "straight": [4, 9], "distort": 4, "angl": [4, 9], "ignor": 4, "project": [], "blocki": 4, "surround": 4, "smoother": 4, "magnifi": 4, "expand": [4, 9], "randomli": 4, "movement": [4, 9], "flicker": 4, "rapidli": 4, "significantli": [4, 9], "distant": 4, "closest": 4, "companion": 4, "triangle_1": 4, "triangle_2": 4, "junction": 4, "floor": 4, "preced": 4, "min": 4, "smear": 4, "inclus": 4, "regular": 4, "hellotextur": 4, "texturewidth": 4, "textureheight": 4, "texturepixels": 4, "m_srvheap": 4, "m_textur": 4, "generatetexturedata": 4, "rowpitch": 4, "cellpitch": 4, "cell": 4, "cellheight": 4, "textures": 4, "pdata": 4, "0x00": 4, "0xff": 4, "counter": 4, "partcular": 4, "wip": 9, "srvheapdesc": 4, "renam": 4, "grown": 4, "d3d12_descriptor_range_type_srv": 4, "d3d12_shader_visibility_pixel": 4, "d3d12_static_sampler_desc": 4, "d3d12_filter_min_mag_mip_point": 4, "addressu": 4, "d3d12_texture_address_mode_bord": 4, "addressv": 4, "addressw": 4, "miplodbia": 4, "maxanisotropi": 4, "comparisonfunc": 4, "d3d12_comparison_func_nev": 4, "bordercolor": 4, "d3d12_static_border_color_transparent_black": 4, "minlod": 4, "maxlod": 4, "d3d12_float32_max": 4, "shaderregist": 4, "registerspac": 4, "shadervis": 4, "texcoord": 4, "dxgi_format_r32g32_float": 4, "prematur": 4, "textureuploadheap": 4, "d3d12_resource_desc": 4, "texturedesc": 4, "miplevel": 4, "d3d12_resource_flag_non": 4, "depthorarrays": 4, "d3d12_resource_dimension_texture2d": 4, "d3d12_resource_state_copy_dest": 4, "uploadbuffers": 4, "getrequiredintermediates": 4, "intermedi": [4, 9], "schedul": [3, 4], "d3d12_subresource_data": 4, "texturedata": 4, "slicepitch": 4, "updatesubresourc": 4, "d3d12_resource_state_pixel_shader_resourc": 4, "d3d12_shader_resource_view_desc": 4, "srvdesc": 4, "shader4componentmap": 4, "d3d12_default_shader_4_component_map": 4, "viewdimens": 4, "d3d12_srv_dimension_texture2d": 4, "createshaderresourceview": 4, "shader_visibility_vertex": 4, "shader_visibility_pixel": 4, "shader_visibility_al": 4, "visibility_vertex": 4, "visibility_pixel": 4, "visibility_al": 4, "denot": [4, 9], "impos": 4, "s0": 4, "worthwhil": 4, "successfulli": 4, "surprisingli": 4, "destructor": 4, "reclaim": 4, "undesir": 4, "halt": 4, "permit": 4, "signifi": 4, "accordingli": [4, 9], "id3dresourc": 4, "sub": 4, "d3d12_resource_state_non_pixel_shader_resourc": 4, "d3d12_resource_state_non_pixel_shad": 4, "d3d12_resource_state_pixel_shad": 4, "remap": 4, "phase": [3, 4], "analog": 4, "samplerst": 4, "g_sampler": 4, "suboptim": 3, "workflow": 3, "screenshot": 3, "reconsid": [], "oversimplifi": 3, "vsync": [], "reiter": [], "replic": 3, "world": 10, "intent": 3, "dwm": 3, "wake": 3, "offscreen": 3, "under": 3, "condit": 3, "unlock": 3, "unavail": 3, "outstand": 3, "expir": 3, "retir": 3, "replac": [3, 9], "strict": [3, 9], "weaker": 3, "paus": 3, "queu": 3, "resum": 3, "trade": 3, "idl": 3, "composit": 3, "due": [3, 9], "newer": 3, "explicit": 3, "interfer": 3, "undoubtedli": 3, "unblock": 3, "worsen": 3, "woken": 3, "cancel": 3, "movetonextfram": 3, "waitforgpu": 3, "oldest": 3, "waitforsingleobjectex": 3, "currentfencevalu": 3, "dummi": 3, "primer": [], "bridg": 9, "gap": 9, "understood": 9, "quantifi": 9, "breviti": 9, "express": 9, "mutual": 9, "perpendicularli": 9, "xz": 9, "bring": 9, "forward": 9, "adopt": 9, "convent": 9, "pole": 9, "rai": 9, "theta": 9, "radiu": 9, "\u03b8": 9, "degre": 9, "radian": 9, "pi": 9, "360": 9, "period": 9, "cylindr": [], "spheric": [], "extra": 9, "cylind": 9, "tripl": [], "varphi": 9, "180": 9, "sphere": 9, "upward": 9, "matric": 9, "quantiti": 9, "magnitud": 9, "displac": 9, "intens": 9, "length": [], "tupl": 9, "finit": 9, "sequenc": 9, "matter": 9, "u_x": 9, "u_i": 9, "u_z": 9, "v_x": 9, "v_y": 9, "v_z": 9, "sum": 9, "tail": 9, "parallelogram": 9, "invers": 9, "kx": 9, "ky": 9, "kz": 9, "neg": 9, "opposit": 9, "commut": 9, "ident": 9, "kt": 9, "pythagorean": 9, "theorem": 9, "sqrt": 9, "hat": 9, "reciproc": 9, "displaystyl": 9, "frac": 9, "cdot": 9, "u_xv_x": 9, "u_yv_i": 9, "u_zv_z": 9, "yield": 9, "law": 9, "cosin": 9, "2ab": 9, "co": 9, "proof": [], "tag": 9, "label": 9, "eq": 9, "avectors1": 9, "bot": 9, "subtrat": 9, "proj": 9, "_": 9, "hypotenus": 9, "adj": 9, "hyp": 9, "invert": 9, "coeffici": 9, "arrowhead": 9, "interchang": 9, "irrelev": 9, "meaning": 9, "particularli": 9, "settl": 9, "v_0": 9, "v_": 9, "orthonorm": 9, "un": 9, "restor": 9, "v_1": 9, "w_0": 9, "w_1": 9, "v_2": 9, "therebi": 9, "w_2": 9, "yz": 9, "eqref": 9, "flalign": 9, "em": [], "partial": [], "mathcal": [], "falign": [], "notat": 9, "subscript": 9, "trick": 9, "circular": 9, "exclud": 9, "minuend": 9, "subtrahend": 9, "matrix": 9, "lvert": 9, "cr": 9, "rvert": 9, "br": [], "lbrack": 9, "rbrack": 9, "u_yv_z": 9, "u_zv_i": 9, "u_zv_x": 9, "u_xv_z": 9, "u_xv_i": 9, "u_yv_x": 9, "hypervolum": 9, "box": 9, "lie": 9, "sin": 9, "a_p": 9, "ok": 9, "operand": 9, "finger": 9, "curl": 9, "thumb": 9, "ne": 9, "fnalign": [], "parallelepip": 9, "v_yw_z": 9, "v_zw_y": 9, "v_zw_x": 9, "v_xw_z": 9, "v_xw_y": 9, "v_yw_x": 9, "w_z": 9, "w_y": 9, "w_x": 9, "bac": 9, "cab": 9, "a_x": 9, "a_i": 9, "a_z": 9, "b_x": 9, "b_y": 9, "b_z": 9, "c_x": 9, "c_y": 9, "c_z": 9, "b_yc_z": 9, "b_zc_y": 9, "b_zc_x": 9, "b_xc_z": 9, "b_xc_y": 9, "b_yc_x": 9, "44ff66": 9, "44aaff": 9, "_x": 9, "a_xc_x": 9, "a_yc_i": 9, "a_zc_z": 9, "a_xb_x": 9, "a_yb_i": 9, "a_zb_z": 9, "a_xb_xc_x": 9, "a_yb_xc_i": 9, "a_zb_xc_z": 9, "a_yb_yc_x": 9, "a_zb_zc_x": 9, "int2": 9, "int3": 9, "int4": 9, "prefix": 9, "syntax": 9, "swizzl": 9, "ivector": 9, "dvector": 9, "f0": 9, "f1": 9, "f2": 9, "vec1": 9, "xyz": 9, "vec2": 9, "rb": 9, "vec3": 9, "zzxy": 9, "wxyz": 9, "yw": 9, "zz": 9, "xmvector": 9, "typedef": 9, "__m128": 9, "xmm": 9, "u_w": 9, "v_w": 9, "op": 9, "global": 9, "alia": 9, "misalign": 9, "xmintt2": 9, "xmint3": 9, "xmint4": 9, "xmfloat": 9, "xmloadfloat2": 9, "psourc": 9, "xmloadfloat3": 9, "xmloadfloat4": 9, "xmint": 9, "xmstorefloat2": 9, "pdestin": 9, "fxmvector": 9, "xmstorefloat3": 9, "xmstorefloat4": 9, "gxmvector": 9, "hxmvector": 9, "convect": 9, "xmvectorf32": 9, "xmvectoru32": 9, "xmvectori32": 9, "union": 9, "__declspec": 9, "f": 9, "vzero": 9, "quit": 9, "differenti": 9, "guidelin": 9, "cxmvector": 9, "alias": 9, "dxmath": 9, "pg": 9, "xnamath": 9, "__vectorcal": 9, "vectorcal": 9}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"introduct": [0, 1, 2, 3, 4, 5, 6], "prerequisit": 0, "background": 0, "knowledg": 0, "hardwar": 0, "softwar": 0, "support": [0, 1, 2, 3, 4, 5, 6, 9, 10], "thi": [0, 1, 2, 3, 4, 5, 6, 9, 10], "project": [0, 1, 2, 3, 4, 5, 6, 9, 10], "refer": [0, 1, 4, 6, 9], "hello": [1, 2, 3, 4, 5, 6, 7, 10], "directx": [6, 9, 10], "triangl": 5, "direct3d": 5, "render": 5, "pipelin": [1, 5], "overview": [5, 6], "resourc": 5, "manag": 5, "memori": 5, "view": 5, "descriptor": 5, "transit": 5, "root": 5, "signatur": 5, "version": 5, "The": 5, "state": [1, 5], "input": 5, "assembl": 5, "mesh": 5, "vertex": 5, "buffer": [2, 3, 5], "layout": 5, "primit": 5, "topologi": 5, "index": 5, "system": [4, 5, 9], "gener": 5, "valu": 5, "shader": 5, "raster": 5, "face": 5, "cull": 5, "attribut": 5, "interpol": 5, "pixel": 5, "d3d12hellotriangl": 5, "code": [1, 2, 3, 4, 5, 6], "review": [1, 2, 3, 4, 5, 6], "try": 5, "window": [3, 6], "applic": 6, "procedur": 6, "messag": 6, "compon": 6, "object": 6, "model": 6, "com": 6, "graphic": [1, 6], "infrastructur": 6, "dxgi": 6, "framework": 6, "d3d12hellowindow": 6, "welcom": 10, "learn": 10, "sourc": [1, 2, 3, 4, 5, 6], "bundl": 1, "inherit": 1, "restrict": 1, "d3d12hellobundl": 1, "world": 7, "intro": [], "constant": 2, "d3d12helloconstbuff": 2, "hlsl": [2, 4, 9], "c": [2, 4, 9], "textur": 4, "1d": [4, 9], "arrai": 4, "2d": 4, "wip": [], "texel": 4, "coordin": [4, 9], "sampl": 4, "magnif": 4, "minif": 4, "address": 4, "mode": 4, "6": [], "1": [], "wrap": 4, "2": [], "mirror": 4, "3": [], "clamp": 4, "4": [], "border": 4, "d3d12hellotextur": 4, "frame": 3, "cpu": 3, "gpu": 3, "parallel": 3, "from": 3, "d3d12helloframebuff": 3, "appendic": 10, "vector": 9, "math": 8, "primer": [], "cartesian": 9, "polar": 9, "cylindr": 9, "spheric": 9, "basic": [8, 9], "homogen": 9, "definit": 9, "oper": 9, "addit": 9, "subtract": 9, "scalar": 9, "multipl": 9, "properti": 9, "length": 9, "dot": 9, "product": 9, "orthogon": 9, "gram": 9, "schmidt": 9, "proof": 9, "cross": 9, "tripl": 9}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 60}, "alltitles": {"Introduction and Prerequisites": [[0, "introduction-and-prerequisites"]], "Introduction": [[0, "introduction"], [1, "introduction"], [2, "introduction"], [3, "introduction"], [4, "introduction"], [5, "introduction"], [6, "introduction"]], "Prerequisites": [[0, "prerequisites"]], "Background knowledge": [[0, "background-knowledge"]], "Hardware": [[0, "hardware"]], "Software": [[0, "software"]], "Support this project": [[0, null], [1, null], [2, null], [3, null], [4, null], [5, null], [6, null], [10, null], [9, null]], "References": [[0, "references"], [1, "references"], [4, "references"], [6, "references"], [9, "references"]], "Hello Bundles": [[1, "hello-bundles"]], "Bundles": [[1, "bundles"]], "Graphics pipeline state inheritance": [[1, "graphics-pipeline-state-inheritance"]], "Bundle restrictions": [[1, "bundle-restrictions"]], "D3D12HelloBundles: code review": [[1, "d3d12hellobundles-code-review"]], "Source Code": [[1, "source-code"], [2, "source-code"], [3, "source-code"], [4, "source-code"], [5, "source-code"], [6, "source-code"]], "Hello Constant Buffers": [[2, "hello-constant-buffers"]], "Constant buffers": [[2, "constant-buffers"]], "D3D12HelloConstBuffers: code review": [[2, "d3d12helloconstbuffers-code-review"]], "HLSL": [[2, "hlsl"], [4, "hlsl"], [9, "hlsl"]], "C++": [[2, "c"], [4, "c"], [9, "c"]], "Hello Frame Buffering": [[3, "hello-frame-buffering"]], "CPU-GPU parallelism": [[3, "cpu-gpu-parallelism"]], "from Hello Window": [[3, null]], "D3D12HelloFrameBuffering: code review": [[3, "d3d12helloframebuffering-code-review"]], "Hello Texture": [[4, "hello-texture"]], "Textures": [[4, "textures"]], "1D Textures": [[4, "d-textures"]], "1D Texture arrays": [[4, "d-texture-arrays"]], "2D Textures and 2D Texture arrays": [[4, "d-textures-and-2d-texture-arrays"]], "Texel Coordinate System": [[4, "texel-coordinate-system"]], "Texture Coordinate System": [[4, "texture-coordinate-system"]], "Sampling": [[4, "sampling"]], "Magnification": [[4, "magnification"]], "Minification": [[4, "minification"]], "Addressing Modes": [[4, "addressing-modes"]], "Wrap": [[4, "wrap"]], "Mirror": [[4, "mirror"]], "Clamp": [[4, "clamp"]], "Border": [[4, "border"]], "D3D12HelloTextures: code review": [[4, "d3d12hellotextures-code-review"]], "Hello Triangle": [[5, "hello-triangle"]], "Direct3D rendering pipeline overview": [[5, "direct3d-rendering-pipeline-overview"]], "Resources management": [[5, "resources-management"]], "Memory": [[5, "memory"]], "Views and descriptors": [[5, "views-and-descriptors"]], "Transitions": [[5, "transitions"]], "Root signature": [[5, "root-signature"]], "Root signature version": [[5, "root-signature-version"]], "The Pipeline State": [[5, "the-pipeline-state"]], "The Input Assembler": [[5, "the-input-assembler"]], "Meshes": [[5, "meshes"]], "Vertex buffer": [[5, "vertex-buffer"]], "Input layout": [[5, "input-layout"]], "Primitive topologies": [[5, "primitive-topologies"]], "Index buffer": [[5, "index-buffer"]], "System-Generated Values": [[5, "system-generated-values"]], "Vertex Shader": [[5, "vertex-shader"]], "The Rasterizer": [[5, "the-rasterizer"]], "Face culling": [[5, "face-culling"]], "Attribute interpolation": [[5, "attribute-interpolation"]], "Pixel shader": [[5, "pixel-shader"]], "D3D12HelloTriangle: code review": [[5, "d3d12hellotriangle-code-review"]], "Try": [[5, null]], "Hello Window": [[6, "hello-window"]], "Windows applications": [[6, "windows-applications"]], "Window Procedure": [[6, "window-procedure"]], "Messages": [[6, "messages"]], "Component Object Model (COM)": [[6, "component-object-model-com"]], "DirectX Graphics Infrastructure (DXGI)": [[6, "directx-graphics-infrastructure-dxgi"]], "Framework overview": [[6, "framework-overview"]], "D3D12HelloWindow: code review": [[6, "d3d12hellowindow-code-review"]], "Hello World": [[7, "hello-world"]], "Math Basics": [[8, "math-basics"]], "Welcome to Learn DirectX": [[10, "welcome-to-learn-directx"]], "Hello DirectX": [[10, null]], "Appendices": [[10, null]], "Vectors": [[9, "vectors"], [9, "id1"]], "Coordinate systems": [[9, "coordinate-systems"]], "1D Coordinate system": [[9, "d-coordinate-system"]], "Cartesian coordinate system": [[9, "cartesian-coordinate-system"]], "Polar coordinate system": [[9, "polar-coordinate-system"]], "Cylindrical and spherical coordinate systems": [[9, "cylindrical-and-spherical-coordinate-systems"]], "Homogeneous coordinate system": [[9, "homogeneous-coordinate-system"]], "Definition": [[9, "definition"]], "Basic operations": [[9, "basic-operations"]], "Addition and Subtraction": [[9, "addition-and-subtraction"]], "Scalar multiplication": [[9, "scalar-multiplication"]], "Properties of addition and scalar multiplication": [[9, "properties-of-addition-and-scalar-multiplication"]], "Length of a vector": [[9, "length-of-a-vector"]], "Dot product": [[9, "dot-product"]], "Properties of dot multiplication": [[9, "properties-of-dot-multiplication"]], "Proof": [[9, null], [9, null]], "Orthogonal projection": [[9, "orthogonal-projection"]], "Gram-Schmidt Orthogonalization": [[9, "gram-schmidt-orthogonalization"]], "Cross product": [[9, "cross-product"]], "Scalar and vector triple product": [[9, "scalar-and-vector-triple-product"]], "Vectors in DirectX": [[9, "vectors-in-directx"]]}, "indexentries": {}})
\ No newline at end of file
+Search.setIndex({"docnames": ["Tutorials/00-Intro/intro-and-prerequisites", "Tutorials/01-HelloWorld/hello-bundles", "Tutorials/01-HelloWorld/hello-cbs", "Tutorials/01-HelloWorld/hello-frame-buffering", "Tutorials/01-HelloWorld/hello-texture", "Tutorials/01-HelloWorld/hello-triangle", "Tutorials/01-HelloWorld/hello-window", "Tutorials/01-HelloWorld/hello-world", "Tutorials/Appendices/01-MathBasics/math-basics", "Tutorials/Appendices/01-MathBasics/vectors", "presentation"], "filenames": ["Tutorials/00-Intro/intro-and-prerequisites.md", "Tutorials/01-HelloWorld/hello-bundles.md", "Tutorials/01-HelloWorld/hello-cbs.md", "Tutorials/01-HelloWorld/hello-frame-buffering.md", "Tutorials/01-HelloWorld/hello-texture.md", "Tutorials/01-HelloWorld/hello-triangle.md", "Tutorials/01-HelloWorld/hello-window.md", "Tutorials/01-HelloWorld/hello-world.md", "Tutorials/Appendices/01-MathBasics/math-basics.md", "Tutorials/Appendices/01-MathBasics/vectors.md", "presentation.md"], "titles": ["Introduction and Prerequisites", "Hello Bundles", "Hello Constant Buffers", "Hello Frame Buffering", "Hello Texture", "Hello Triangle", "Hello Window", "Hello World", "Math Basics", "Vectors", "Welcome to Learn DirectX"], "terms": {"new": [0, 1, 2, 3, 5, 6, 9], "graphic": [0, 2, 3, 4, 5, 7, 9, 10], "api": [0, 1, 3, 5, 6, 7, 9, 10], "like": [0, 1, 3, 4, 5, 6, 9, 10], "directx": [0, 1, 2, 3, 4, 5, 7], "12": [0, 1, 4, 5, 6, 7], "vulkan": 0, "have": [0, 1, 2, 3, 4, 5, 6, 9], "reput": 0, "being": [0, 1, 3, 4, 5, 9], "difficult": 0, "learn": [0, 1, 4, 6, 9], "beginn": [0, 10], "The": [0, 1, 2, 3, 4, 6, 9], "main": [0, 1, 3, 4, 5, 6, 8], "reason": [0, 1, 2, 4, 5, 6, 9], "i": [0, 1, 2, 3, 4, 5, 6, 9], "modern": 0, "hide": [0, 5, 6], "less": [0, 3, 4, 6, 9], "programm": [0, 1, 4, 5, 9], "than": [0, 1, 2, 3, 4, 5, 6, 9], "old": [0, 3, 6], "ones": [0, 2, 3, 4, 5, 6, 9], "11": [0, 4, 5, 6], "opengl": 0, "so": [0, 1, 2, 3, 4, 5, 6, 9, 10], "you": [0, 1, 2, 3, 4, 5, 6, 9, 10], "just": [0, 3, 4, 5, 6, 9], "end": [0, 1, 3, 4, 5, 6, 9], "up": [0, 1, 2, 3, 4, 5, 6, 9], "studi": 0, "low": [0, 1, 2, 4, 5, 6], "level": [0, 1, 4, 5, 6], "detail": [0, 1, 3, 4, 5, 6, 9, 10], "even": [0, 1, 2, 3, 4, 5, 6, 9], "draw": [0, 3, 4, 5, 6, 9], "singl": [0, 1, 2, 3, 4, 5, 6, 9], "triangl": [0, 1, 2, 3, 4, 6, 7, 9, 10], "howev": [0, 1, 2, 3, 4, 5, 6, 9], "also": [0, 1, 2, 3, 4, 5, 6, 9], "ha": [0, 1, 2, 3, 4, 5, 6, 9], "some": [0, 1, 2, 3, 4, 5, 6, 9], "advantag": [0, 1, 3, 5, 6], "design": [0, 5, 6, 10], "make": [0, 1, 2, 3, 4, 5, 6, 9], "full": [0, 3, 5, 6], "us": [0, 1, 2, 3, 4, 5, 6, 9, 10], "multi": [0, 5, 6], "thread": [0, 1, 5, 6], "get": [0, 1, 2, 3, 4, 5, 6, 7, 9], "finer": 0, "control": [0, 4, 5, 6], "resourc": [0, 1, 2, 3, 4, 6], "manag": [0, 1, 3, 6], "cpu": [0, 2, 4, 5, 6, 9], "gpu": [0, 1, 2, 4, 5, 6], "synchron": [0, 1, 2, 3, 4, 5, 6], "thank": [0, 1, 2, 3, 4, 5, 6, 9, 10], "better": [0, 4, 5, 6, 9], "workload": 0, "more": [0, 2, 3, 4, 5, 6, 9], "evenli": 0, "distribut": [0, 9], "across": [0, 1, 4, 5], "all": [0, 1, 2, 3, 4, 5, 6, 9, 10], "core": [0, 2, 4, 5, 9], "understand": [0, 3, 4, 5, 6, 8, 9, 10], "re": [0, 1, 2, 5, 6], "can": [0, 1, 2, 3, 4, 5, 6, 9, 10], "take": [0, 1, 2, 3, 4, 5, 6, 10], "minim": [0, 3, 5, 6], "upload": [0, 2, 3, 4, 5], "copi": [0, 1, 2, 3, 4, 5, 6], "That": [0, 2, 3, 4, 5, 6, 9], "wai": [0, 1, 2, 3, 4, 5, 6, 9], "free": [0, 3, 6, 9], "time": [0, 1, 2, 3, 4, 5, 6, 9, 10], "increas": [0, 3, 4, 5, 6, 9], "number": [0, 1, 2, 3, 4, 5, 6, 9], "call": [0, 1, 2, 3, 4, 5, 6, 9], "consequ": [0, 2, 3, 4, 5, 6, 9], "enhanc": [0, 2, 4, 5], "perform": [0, 1, 2, 3, 4, 5, 6, 9], "your": [0, 3, 4, 5, 6, 9], "applic": [0, 1, 2, 3, 4, 5, 7, 9, 10], "capabl": [0, 5, 6], "provid": [0, 1, 2, 3, 4, 5, 6, 8, 9], "specif": [0, 1, 3, 4, 5, 6, 9, 10], "remain": [0, 2, 3, 4, 5, 6, 9], "same": [0, 1, 2, 3, 4, 5, 6, 9], "regardless": [0, 3, 5, 6], "develop": [0, 5, 6, 10], "leverag": [0, 6, 9], "those": [0, 3, 5, 6], "In": [0, 1, 2, 3, 4, 5, 6, 9], "particular": [0, 1, 2, 4, 5, 6, 9], "instead": [0, 3, 4, 5, 6, 9], "10": [0, 6], "implement": [0, 1, 2, 3, 5, 6, 10], "render": [0, 1, 2, 3, 4, 6, 9], "techniqu": [0, 4, 5], "might": [0, 1, 2, 4, 5, 6, 9], "necessarili": [0, 3, 4], "result": [0, 1, 2, 3, 4, 5, 6, 9], "boost": 0, "simpli": [0, 1, 2, 3, 4, 5, 6, 9], "becaus": [0, 1, 3, 4, 5, 6, 9], "latest": [0, 3, 5, 10], "version": [0, 1, 2, 4, 6, 9], "mention": [0, 3, 4, 5, 6, 9], "earlier": [0, 3, 4, 5, 6, 9], "offer": [0, 3, 4, 5, 6, 9], "greater": [0, 2, 3, 4, 6, 9], "over": [0, 2, 4, 5, 6], "mani": [0, 3, 4, 5, 6, 9, 10], "aspect": [0, 2, 5, 6], "properli": [0, 2, 5], "lead": [0, 4, 5, 6], "improv": [0, 4, 6], "current": [0, 1, 2, 3, 4, 5, 6], "three": [0, 1, 3, 4, 5, 6, 9], "from": [0, 1, 2, 4, 5, 6, 9, 10], "scratch": [0, 10], "each": [0, 2, 3, 4, 5, 6, 9, 10], "its": [0, 1, 2, 3, 4, 5, 6, 9], "pro": 0, "con": 0, "frank": 0, "luna": 0, "": [0, 1, 2, 3, 4, 5, 6, 9], "book": [0, 6, 10], "3d": [0, 4, 5, 6, 9], "game": [0, 5, 6], "program": [0, 2, 4, 5, 6], "color": [0, 1, 2, 3, 4, 5, 6, 9], "44ffaa": 0, "text": [0, 4, 6, 9], "good": [0, 3, 4, 6, 9], "It": [0, 2, 3, 4, 5, 6, 9, 10], "comprehens": 0, "explan": [0, 3, 5, 6], "both": [0, 1, 2, 3, 4, 5, 6, 9, 10], "theori": [0, 3, 4], "practic": [0, 2, 3, 4, 5, 6, 9, 10], "serv": [0, 3, 4, 5, 9], "an": [0, 1, 2, 3, 4, 5, 6, 9], "comput": [0, 1, 4, 5, 6, 9, 10], "textbook": 0, "especi": [0, 6], "ff6666": [0, 9], "bad": 0, "Being": 0, "omit": [0, 5], "crucial": [0, 1, 2, 4, 5, 9], "reduc": [0, 3, 4, 5, 6, 9], "cost": [0, 3, 5], "size": [0, 2, 4, 5, 6, 9], "addition": [0, 2, 4, 5, 6, 9], "mai": [0, 2, 3, 4, 5, 6, 9], "consid": [0, 1, 2, 3, 4, 5, 6, 9, 10], "somewhat": [0, 1, 2, 3, 4, 5, 6, 9, 10], "date": 0, "onlin": [0, 1], "tutori": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "includ": [0, 2, 3, 4, 5, 6, 9, 10], "youtub": 0, "video": [0, 5, 6], "easi": [0, 2], "follow": [0, 1, 2, 4, 5, 6, 9], "often": [0, 5, 6, 9], "focu": [0, 3, 4, 5, 6, 9], "mainli": [0, 5], "neglect": 0, "mathemat": [0, 8, 9, 10], "theoret": [0, 1, 2, 5, 10], "equat": [0, 9], "without": [0, 2, 4, 5, 6, 9], "suffici": [0, 2, 3, 4, 5], "offici": [0, 1, 4, 6, 9], "repositori": [0, 1, 6, 10], "document": [0, 1, 4, 5, 6, 9], "sourc": [0, 9], "code": [0, 10], "need": [0, 1, 2, 3, 4, 5, 6, 9], "written": [0, 4, 5, 6], "assum": [0, 4, 5, 6, 9], "basic": [0, 2, 3, 4, 5, 6, 10], "architectur": [0, 5], "system": [0, 2, 3, 6], "actual": [0, 1, 2, 3, 4, 5, 6, 9], "noth": [0, 1, 2, 3, 5, 6, 9], "prevent": [0, 4, 5, 6], "onli": [0, 1, 2, 3, 4, 5, 6, 9, 10], "part": [0, 1, 4, 5, 6], "long": [0, 2, 3, 5, 6], "motiv": 0, "enough": [0, 3, 4, 5, 6], "jump": 0, "one": [0, 1, 2, 3, 4, 5, 6, 9, 10], "math": [0, 6, 9, 10], "anoth": [0, 3, 4, 5, 6, 9], "read": [0, 2, 4, 5, 6], "through": [0, 2, 3, 4, 5, 6, 10], "dozen": 0, "page": [0, 6], "gather": 0, "inform": [0, 1, 2, 4, 5, 6, 9], "topic": [0, 2, 4, 5, 6, 8], "my": [0, 6], "goal": [0, 4], "write": [0, 2, 3, 5, 6, 9, 10], "updat": [0, 2, 3, 5, 6], "seri": [0, 1, 5, 6, 9, 10], "delv": [0, 2, 4, 5, 6], "deepli": [0, 5], "kei": [0, 1, 5, 6, 9], "accomplish": 0, "effect": [0, 2, 3, 4, 5, 6], "reader": 0, "becom": [0, 3, 5, 6, 9], "bore": 0, "intimid": 0, "discourag": 0, "extens": [0, 1], "amount": [0, 4, 5, 6, 10], "requir": [0, 1, 2, 3, 4, 5, 6, 9, 10], "master": [0, 6], "typic": [0, 2, 3, 4, 5, 6, 9], "when": [0, 1, 2, 3, 4, 5, 6, 9], "peopl": 0, "start": [0, 2, 3, 4, 5, 6, 7, 9], "thei": [0, 1, 2, 3, 5, 6, 9], "want": [0, 2, 3, 4, 5, 6, 9], "see": [0, 1, 2, 3, 4, 5, 6, 9], "someth": [0, 5, 6, 9], "screen": [0, 1, 2, 3, 4, 5, 6], "gratifi": 0, "reward": 0, "For": [0, 1, 2, 3, 4, 5, 6, 9], "everi": [0, 3, 4, 5, 6, 9], "review": 0, "differ": [0, 1, 2, 3, 4, 5, 6, 9], "sampl": [0, 1, 2, 3, 5, 6, 10], "explain": [0, 2, 3, 4, 5, 6], "feel": 0, "allow": [0, 1, 2, 3, 4, 5, 6, 9], "gradual": [0, 9], "progress": [0, 1, 2, 4, 5, 6], "acquisit": 0, "build": [0, 1, 5, 6, 9], "puzzl": 0, "add": [0, 3, 9], "piec": [0, 5], "m": 0, "suggest": [0, 5], "ultim": [0, 5], "fact": [0, 2, 4, 6], "microsoft": [0, 1, 4, 5, 6, 9], "mica": [0, 4, 6, 9], "micb": [0, 4, 6, 9], "list": [0, 1, 2, 3, 4, 5, 6, 9], "alwai": [0, 1, 2, 3, 4, 5, 6, 9], "most": [0, 1, 2, 4, 5, 6, 9], "import": [0, 3, 4, 5, 6, 8, 9], "fundament": [0, 4, 6, 9, 10], "dure": [0, 2, 3, 4, 5, 6, 9], "here": [0, 2, 4, 5, 6, 9], "try": [0, 6], "possibl": [0, 1, 3, 4, 5, 6, 9], "consult": 0, "regard": [0, 2, 3, 5], "reinvent": 0, "wheel": [0, 5], "we": [0, 1, 2, 3, 4, 5, 6, 9], "alreadi": [0, 1, 3, 4, 5, 9], "avail": [0, 2, 3, 4, 5, 6, 9, 10], "maintain": [0, 6, 9], "necessari": [0, 1, 2, 4, 5, 9], "custom": [0, 5], "base": [0, 1, 2, 4, 5, 6, 9], "framework": 0, "style": [0, 6], "addit": [0, 2, 4, 5, 6], "ar": [0, 1, 2, 3, 4, 5, 6, 9, 10], "host": 0, "github": [0, 10], "paminerva": 0, "learndirectx": [0, 10], "below": [0, 1, 2, 3, 4, 5, 6, 9, 10], "xbox": [0, 6], "atg": 0, "gdk": 0, "walbourn": 0, "chuck": 0, "conclus": [0, 3], "look": [0, 1, 2, 4, 5, 6], "how": [0, 1, 3, 4, 5, 6, 7, 9], "give": [0, 6, 9], "chanc": [0, 3, 5], "Of": [0, 6], "cours": [0, 5, 6], "t": [0, 1, 2, 3, 4, 5, 6, 9], "everyth": [0, 6], "skill": [0, 10], "essenti": [0, 1, 2, 3, 4, 5, 6, 8], "complet": [0, 2, 3, 4, 5, 6], "content": [0, 1, 2, 3, 4, 5, 6, 9, 10], "relat": [0, 1, 2, 3, 4, 5, 6, 9], "fortun": [0, 4, 5, 6, 9], "colleg": 0, "algebra": [0, 6, 10], "trigonometri": [0, 9, 10], "calculu": 0, "cover": [0, 1, 3, 4, 5, 6, 9], "about": [0, 1, 2, 4, 5, 6, 9], "90": [0, 9], "throughout": [0, 2, 5, 6], "dedic": [0, 5, 6], "appendic": [0, 8], "If": [0, 1, 2, 3, 4, 5, 6, 9], "bit": [0, 2, 3, 4, 5, 6, 9], "rusti": 0, "don": [0, 1, 2, 3, 4, 5, 6, 9], "worri": [0, 4, 5, 6, 9], "sb20b": 0, "brilliant": 0, "access": [0, 1, 2, 3, 4, 5, 6, 9], "everyon": 0, "recommend": [0, 4, 5, 9], "sb20a": 0, "self": [0, 5], "kre11": 0, "formal": [0, 2, 9], "educ": 0, "excel": [0, 5], "advanc": [0, 3, 5, 6, 10], "appropri": [0, 4, 5, 6, 9], "introductori": 0, "c": [0, 5, 6, 10], "find": [0, 2, 4, 5, 6, 9, 10], "daw15": 0, "str22": 0, "help": [0, 2, 4, 5, 6, 9, 10], "Then": [0, 2, 3, 4, 5, 6, 9], "str14": 0, "hyd20a": 0, "hyd20b": 0, "deeper": 0, "obvious": [0, 3, 4, 5, 6, 9], "card": [0, 5, 6], "run": [0, 1, 3, 4, 5, 6, 10], "examin": [0, 1, 2, 3, 4, 5, 6, 9], "fulli": [0, 1, 2, 5, 6], "execut": [0, 1, 2, 3, 4, 5, 6, 9], "demo": 0, "compil": [0, 2, 4, 5, 6, 9, 10], "To": [0, 2, 4, 5, 6, 9, 10], "check": [0, 2, 3, 5, 6, 9], "meet": [0, 3, 6], "press": [0, 6], "win": 0, "g": [0, 3, 4, 5, 6, 9], "open": [0, 1], "bar": [0, 6], "select": [0, 3, 4, 5, 6], "featur": [0, 2, 5, 6], "set": [0, 1, 2, 3, 4, 5, 6, 9], "should": [0, 1, 2, 3, 4, 5, 6, 9], "abov": [0, 2, 3, 4, 5, 6, 9], "imag": [0, 1, 2, 3, 4, 5, 6, 9], "otherwis": [0, 3, 4, 5, 6, 9], "upgrad": 0, "pc": [0, 6], "window": [0, 1, 2, 4, 5, 7, 9, 10], "2004": 0, "o": [0, 5, 6, 9], "least": [0, 2, 3, 4, 5, 6, 9], "visual": [0, 1, 3, 4, 5, 6, 9], "studio": [0, 6], "present": [0, 1, 2, 3, 4, 5, 6, 10], "creat": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10], "own": [0, 3, 5, 6], "unless": [0, 3, 5, 6], "prefer": [0, 4, 6], "id": [0, 5, 6], "choic": [0, 5], "ensur": [0, 2, 3, 4, 5, 6, 9], "instal": [0, 6], "sdk": 0, "0": [0, 1, 2, 3, 4, 5, 6, 9], "19041": 0, "higher": [0, 4], "driver": [0, 1, 2, 3, 5, 6], "debugg": [0, 6], "pix": 0, "renderdoc": 0, "found": [0, 1, 2, 3, 4, 5, 6, 9], "interest": [0, 1, 2, 3, 4, 5, 6, 9], "pleas": [0, 1, 2, 3, 4, 5, 6, 9, 10], "click": [0, 1, 2, 3, 4, 5, 6, 9, 10], "sponsor": [0, 1, 2, 3, 4, 5, 6, 9, 10], "button": [0, 1, 2, 3, 4, 5, 6, 9, 10], "whether": [0, 1, 2, 3, 4, 5, 6, 9, 10], "small": [0, 1, 2, 3, 4, 5, 6, 9, 10], "tip": [0, 1, 2, 3, 4, 5, 6, 9, 10], "donat": [0, 1, 2, 3, 4, 5, 6, 9, 10], "recur": [0, 1, 2, 3, 4, 5, 6, 9, 10], "payment": [0, 1, 2, 3, 4, 5, 6, 9, 10], "contribut": [0, 1, 2, 3, 4, 5, 6, 9, 10], "welcom": [0, 1, 2, 3, 4, 5, 6, 9], "mark": [0, 4, 5], "dawson": 0, "begin": [0, 1, 2, 3, 4, 5, 6, 9], "cengag": 0, "2015": 0, "randal": 0, "hyde": 0, "great": 0, "volum": [0, 4, 9], "1": [0, 1, 2, 3, 4, 5, 6, 9], "2nd": 0, "edit": [0, 5, 6], "machin": [0, 5, 6], "No": 0, "starch": 0, "2020": 0, "2": [0, 1, 2, 3, 4, 5, 6, 9], "think": [0, 4, 5, 6], "high": [0, 5, 6, 10], "erwin": 0, "kreyszig": 0, "engin": [0, 6], "wilei": 0, "10th": 0, "2011": 0, "http": [0, 1, 4, 6, 9], "doc": [0, 6], "com": [0, 1, 4, 5, 9], "en": [0, 1, 4, 6, 9], "u": [0, 1, 2, 3, 4, 5, 6, 9], "win32": [0, 1, 4, 6, 9], "spec": 0, "io": 0, "k": [0, 9], "A": [0, 1, 2, 3, 4, 5, 6, 9], "stroud": 0, "dexter": 0, "j": [0, 4, 6, 9], "booth": 0, "bloomsburi": 0, "academ": 0, "6th": 0, "8th": 0, "bjarn": 0, "stroustrup": 0, "languag": [0, 5, 6], "addison": 0, "weslei": 0, "profession": 0, "4th": 0, "2014": 0, "tour": 0, "2022": 0, "These": [1, 4, 5, 6, 7, 8, 9], "section": [1, 2, 4, 5, 6, 9], "describ": [2, 4, 5, 6, 7, 9], "simpl": [2, 4, 5, 6, 7, 9], "previou": [1, 2, 3, 4, 5, 6], "highli": 5, "befor": [1, 2, 3, 4, 5, 6, 9], "go": [2, 3, 4, 5, 6], "done": [3, 4, 5, 6], "target": [1, 2, 3, 4, 5, 6, 9], "hardli": 5, "chang": [1, 2, 3, 4, 5, 6, 9], "compar": [5, 6, 10], "d3d12hellowindow": 5, "still": [1, 2, 3, 5, 6, 9], "lot": [4, 5], "familiar": [5, 6], "know": [1, 2, 3, 4, 5, 6, 9], "2d": [5, 6, 9], "represent": [5, 6, 9], "geometri": [2, 4, 5, 6, 9, 10], "compos": [2, 3, 4, 5, 6, 9], "polygon": 5, "defin": [2, 4, 5, 6, 9], "locat": [3, 4, 5, 6, 9], "space": [2, 3, 4, 5, 6, 9], "whole": [4, 5, 6], "art": 5, "boil": 5, "down": [4, 5], "scene": [3, 5, 6], "inde": [2, 3, 4, 5, 6, 9], "process": [1, 2, 3, 4, 5, 6, 9], "which": [1, 2, 3, 4, 5, 6, 9], "briefli": 5, "discuss": [1, 2, 3, 4, 5, 6], "next": [1, 2, 3, 4, 5, 6, 9], "figur": [2, 4, 5], "onto": [3, 4, 5, 9], "rectangl": [5, 9], "ly": [5, 9], "plane": [5, 9], "front": [5, 6], "special": [2, 4, 5, 6], "viewpoint": 5, "camera": [4, 5], "film": 5, "retina": 5, "human": 5, "ey": 5, "captur": 5, "light": [4, 5, 9], "creation": [1, 2, 3, 5, 6], "eventu": [3, 4, 5], "map": [2, 4, 5, 6, 9], "turn": [5, 6], "client": [1, 5, 6], "area": [1, 4, 5, 6, 9], "easili": [5, 6, 9], "guess": 5, "region": [1, 5, 6, 9], "won": [2, 3, 4, 5, 6], "extent": [5, 6], "similar": [2, 3, 4, 5, 6, 9], "field": [2, 4, 5, 6, 9], "fov": 5, "len": 5, "pictur": 5, "posit": [1, 2, 3, 4, 5, 6, 9], "behind": [3, 4, 5, 6], "now": [1, 2, 3, 4, 5, 6, 9], "coupl": [1, 5, 6], "term": [5, 6], "rest": [4, 5, 6], "monitor": [5, 6], "displai": [3, 4, 5, 6], "mean": [2, 3, 4, 5, 6, 9], "seen": [4, 5], "two": [2, 3, 4, 5, 6, 9, 10], "dimension": [5, 9], "grid": [4, 5, 6], "dot": 5, "independ": [5, 6], "other": [1, 2, 3, 4, 5, 6, 9], "entiti": [5, 9], "illumin": 5, "group": [1, 5], "textur": [5, 6, 7, 10], "digit": 5, "texel": 5, "contain": [1, 2, 4, 5, 6, 9], "variou": [3, 4, 5, 6, 9], "e": [2, 3, 4, 5, 6, 9], "distanc": [4, 5, 9], "direct": [1, 4, 5, 6, 9], "etc": [1, 3, 4, 5, 6], "treat": [5, 9], "them": [1, 2, 3, 4, 5, 6, 9], "canva": 5, "where": [2, 3, 4, 5, 6, 9], "subsequ": [1, 2, 3, 4, 5, 9], "final": [1, 2, 3, 4, 5, 6, 9], "repres": [2, 4, 5, 6, 9], "frame": [1, 2, 4, 5, 6, 7, 9, 10], "user": [3, 5, 6], "physic": [2, 4, 5, 9], "squar": [4, 5, 9], "coordin": [2, 5, 6], "point": [1, 2, 3, 4, 5, 6, 9], "usual": [3, 4, 5, 6, 9], "top": [4, 5, 6], "left": [3, 4, 5, 6, 9], "corner": [4, 5], "calcul": [2, 4, 5, 6, 9], "oper": [1, 2, 3, 4, 5, 6], "occur": [1, 3, 4, 5, 6], "center": [4, 5], "row": [4, 5, 9], "column": [4, 5, 9], "intersect": 5, "consider": [4, 5], "appli": [2, 4, 5, 9], "element": [3, 4, 5, 6, 9], "whose": [2, 4, 5, 6, 9], "within": [1, 2, 3, 4, 5, 6, 9], "revisit": [1, 2, 3, 5, 6], "concept": [5, 6, 9, 10], "upcom": [4, 5, 6, 9], "role": [4, 5, 9], "equip": [5, 6], "thousand": 5, "form": [4, 5, 9], "instruct": [1, 3, 4, 5, 6, 9], "much": [1, 3, 4, 5, 6], "As": [1, 2, 3, 4, 5, 6, 9], "illustr": [1, 2, 3, 4, 5, 6, 9, 10], "fewer": 5, "smaller": [4, 5], "task": [5, 6], "divid": [5, 9], "parallel": [4, 5, 6, 9], "multipl": [1, 2, 3, 5, 6], "simultan": [5, 9], "speed": [1, 5, 6, 9], "vast": 5, "data": [2, 4, 5, 6, 9], "On": [1, 2, 3, 4, 5, 6, 9], "hand": [1, 3, 4, 5, 6, 9], "sequenti": [3, 5, 6], "realli": [5, 9], "fast": [3, 5], "versu": 5, "right": [4, 5, 6, 9], "work": [1, 2, 3, 5, 6, 9], "stage": [2, 4, 5, 6], "type": [1, 2, 4, 5, 6, 9], "step": [4, 5, 6, 9], "configur": [4, 5, 6, 9], "gear": 5, "fig": [5, 6], "specifi": [1, 2, 3, 4, 5, 6, 9], "what": [1, 2, 3, 4, 5, 6], "do": [1, 2, 3, 4, 5, 6, 9], "fix": [5, 9], "function": [1, 2, 3, 4, 5, 6, 9], "flow": 5, "output": [2, 5, 6, 9], "word": [3, 4, 5, 6, 9], "consum": [5, 6], "respons": [3, 5, 6], "suppli": [4, 5], "fill": [2, 4, 5, 6], "arrai": [2, 3, 5, 6, 9], "vertic": [3, 4, 5, 6], "indic": [1, 2, 3, 4, 5, 6, 9], "line": [5, 6, 9], "attach": 5, "instanc": [2, 5, 6, 9], "pass": [1, 2, 3, 4, 5, 6], "transform": [4, 5, 9], "skin": 5, "per": [4, 5, 6], "return": [2, 3, 4, 5, 6, 9], "hull": 5, "onc": [2, 3, 4, 5, 6, 9], "patch": 5, "curv": [5, 9], "surfac": [4, 5, 9], "setup": [3, 4, 5], "tessel": 5, "exampl": [1, 2, 3, 4, 5, 6, 9], "tess": 5, "factor": [3, 5], "densiti": 5, "unit": [2, 4, 5, 9], "declar": [1, 2, 4, 5, 6, 9], "purpos": [2, 3, 4, 5, 6], "domain": 5, "quad": [4, 5, 9], "tri": 5, "notifi": [3, 5, 6], "geometr": [5, 9], "shape": [4, 5, 9], "connect": [4, 5, 6, 9], "invok": [1, 3, 5, 6], "invoc": 5, "identifi": [2, 5, 6, 9], "well": [2, 3, 4, 5, 6, 9], "produc": 5, "tangibl": 5, "sent": [2, 3, 5, 6], "further": [4, 5, 6, 9, 10], "entir": [2, 3, 4, 5, 6], "limit": [1, 4, 5], "amplif": 5, "de": 5, "given": [2, 3, 5], "discard": [3, 5, 6], "emit": [4, 5, 9], "stream": [2, 5], "out": [1, 2, 4, 5, 6, 9], "recircul": 5, "back": [1, 2, 3, 4, 5, 6, 9], "convert": [4, 5, 6, 9], "account": 5, "viewport": [1, 5, 6], "scissor": 5, "later": [1, 2, 3, 4, 5, 6, 9], "collect": [2, 5, 6], "receiv": [2, 4, 5, 6], "possibli": 5, "store": [1, 2, 4, 5, 6, 9], "depend": [1, 2, 3, 4, 5, 6, 9], "last": [2, 3, 4, 5, 6, 9], "enabl": [1, 2, 3, 4, 5, 6, 9], "sophist": 5, "shade": 5, "post": [2, 5, 6], "overal": [5, 6], "qualiti": [4, 5, 6], "merger": 5, "om": 5, "determin": [1, 2, 4, 5, 6, 9], "visibl": [2, 4, 5, 6], "depth": [1, 4, 5], "stencil": 5, "test": 5, "blend": 5, "correspond": [2, 3, 4, 5, 6, 9, 10], "combin": [2, 3, 5, 9], "show": [1, 3, 4, 5, 6, 9], "togeth": [1, 3, 5], "option": [4, 5, 6], "while": [1, 2, 3, 4, 5, 6, 9], "goe": [4, 5], "littl": [4, 5, 6], "bottom": [5, 6], "slot": [2, 3, 4, 5], "bound": [2, 4, 5, 9], "At": [1, 2, 3, 4, 5, 6, 9], "descript": [1, 5, 6], "vsmain": [2, 4, 5], "psmain": [2, 4, 5], "structur": [2, 4, 5, 6, 9], "dimens": [4, 5, 6, 9], "virtual": [1, 2, 3, 4, 5, 6], "address": [2, 3, 5, 6, 9], "hardwar": [1, 2, 3, 5, 6], "rather": [1, 3, 4, 5, 6, 9], "bind": [1, 2, 4, 5, 6, 9], "block": [3, 4, 5, 6], "regist": [2, 4, 5, 6, 9], "name": [1, 2, 3, 4, 5, 6, 9], "charact": [5, 6], "string": [5, 6], "associ": [1, 2, 3, 4, 5, 6, 9], "sinc": [1, 2, 3, 4, 5, 6, 9], "context": [2, 4, 5, 6], "opt": [2, 5, 6], "heap": [1, 2, 4, 5, 6], "remaind": 5, "though": [5, 6, 9], "doe": [2, 3, 4, 5, 6, 9], "explicitli": [2, 5, 6], "distinguish": [1, 3, 5, 6, 9], "between": [1, 2, 3, 4, 5, 6, 9], "sometim": [5, 9], "perceiv": 5, "encapsul": [4, 5], "deep": 5, "occlud": 5, "share": [2, 5, 6, 9], "mask": 5, "drawn": [3, 5], "dissolv": 5, "decal": 5, "outlin": [3, 5, 6], "li": [1, 5, 9], "x": [2, 4, 5, 9], "y": [2, 4, 5, 9], "ax": [5, 9], "let": [1, 2, 3, 4, 5, 6, 9], "temporarili": [2, 5], "directli": [1, 2, 4, 5, 6, 9], "z": [2, 5, 9], "axi": [5, 9], "measur": [4, 5, 9], "xy": 5, "yellow": 5, "red": [4, 5, 6, 9], "nearest": [4, 5], "disabl": 5, "overwrit": [3, 5, 6], "whatev": [5, 6], "observ": [1, 2, 3, 4, 5, 6, 9], "consist": [2, 4, 5, 6, 9], "semant": [4, 5], "first": [2, 3, 4, 5, 6, 9, 10], "vari": [4, 5, 6], "convei": 5, "intend": [1, 2, 4, 5, 6], "vector": [2, 4, 5, 8, 10], "float": [1, 2, 4, 5, 6, 9], "integ": [4, 5, 6, 9], "arithmet": [5, 6], "hlsl": 5, "procedur": [2, 4, 5], "sampler": [2, 4, 5], "filter": [4, 5], "basi": [5, 9], "load": [1, 2, 3, 4, 5, 6, 9], "intrins": 5, "never": 5, "constant": [4, 5, 7, 9, 10], "optim": [1, 2, 3, 4, 5, 6], "variabl": [2, 3, 4, 5, 6, 9], "frequent": [2, 5, 6], "therefor": [2, 3, 4, 5, 6, 9], "restrict": [2, 4, 5], "elabor": 5, "textual": 5, "establish": [4, 5, 6, 9], "arbitrari": [4, 5, 6], "sever": [2, 5], "predefin": [5, 9], "pretti": [5, 6], "explanatori": 5, "sv_": 5, "info": [5, 6], "sv_depth": 5, "sv_target": [2, 4, 5], "clear": [1, 3, 5, 6], "moment": [4, 5], "simpler": [5, 9], "seem": [2, 3, 5, 9], "brief": [2, 5, 9], "encount": [3, 5, 6], "perfectli": [2, 5, 6], "normal": [3, 4, 5, 6, 9], "experi": [3, 5], "initi": [1, 2, 3, 4, 5, 6, 9], "confus": 5, "dont": 5, "devic": [5, 6], "object": [1, 2, 3, 4, 5, 9], "pointer": [2, 4, 5, 6], "id3d12devic": [1, 2, 3, 4, 5, 6], "interfac": [4, 5, 6], "command": [1, 2, 3, 4, 5, 6], "queue": [1, 2, 3, 4, 5, 6], "alloc": [1, 2, 3, 4, 5, 6], "raw": [5, 6], "1d": 5, "createcommittedresourc": [2, 4, 5], "method": [1, 4, 5, 6, 9], "whenev": [1, 2, 3, 4, 5, 6], "argument": [1, 2, 3, 4, 5, 6], "referenc": [1, 2, 4, 5], "our": [1, 2, 3, 4, 5, 6, 9], "With": [4, 5, 6], "typeless": 5, "format": [1, 4, 5, 6], "miss": [3, 5, 9], "idea": [3, 5], "four": [2, 4, 5, 6, 9], "reserv": [2, 4, 5, 6], "local": [3, 4, 5, 6, 9], "vram": [5, 6], "boot": 5, "intern": [4, 5, 6, 9], "pci": [2, 5, 6], "bu": [2, 5, 6], "ram": [5, 6], "via": [4, 5], "event": [3, 4, 5, 6], "avoid": [2, 3, 5, 6], "uncach": 5, "hold": [1, 2, 3, 4, 5, 6, 9], "flush": [3, 4, 5, 6], "slow": 5, "problem": [2, 3, 4, 5, 6, 9], "cach": 5, "bottleneck": 5, "integr": [5, 6], "softwar": [5, 6], "adapt": [5, 6], "distinct": [1, 2, 3, 4, 5, 9], "case": [1, 2, 3, 4, 5, 6, 9], "impli": [5, 6], "slower": 5, "abstract": [5, 6], "default": [1, 2, 3, 4, 5, 6], "resid": [2, 4, 5, 6], "readback": 5, "approach": [2, 3, 4, 5, 6, 9], "discret": [4, 5], "hidden": [5, 6], "explor": [1, 3, 5, 6, 8, 9], "properti": [4, 5, 6], "pool": 5, "mostli": 5, "larg": 5, "until": [1, 2, 3, 4, 5, 6, 9], "destroi": [4, 5, 6], "evict": 5, "paramet": [2, 3, 4, 5, 6, 9], "handl": [1, 2, 3, 4, 5, 6], "rememb": [1, 3, 4, 5, 6, 9], "must": [1, 2, 4, 5, 6, 9, 10], "offset": [2, 3, 4, 5, 6], "shortli": [3, 4, 5, 6, 9], "cbv": [2, 4, 5], "unord": 5, "uav": [2, 5], "srv": [2, 4, 5], "rtv": [2, 3, 4, 5, 6], "dsv": 5, "ibv": 5, "vbv": 5, "sov": 5, "exactli": [4, 5, 6, 9], "respect": [2, 3, 4, 5, 9], "d3d12_descriptor_heap_flag_shader_vis": [2, 4, 5], "flag": [2, 3, 4, 5, 6], "d3d12_descriptor_heap_desc": [2, 4, 5, 6], "createdescriptorheap": [2, 4, 5, 6], "cannot": [1, 2, 3, 4, 5, 6, 9], "d3d12_descriptor_heap_flag_non": [2, 4, 5, 6], "why": [1, 2, 3, 4, 5, 6, 9], "non": [1, 2, 5, 6], "doesn": [2, 4, 5, 6, 9], "separ": [1, 2, 3, 5, 6, 9], "similarli": [5, 6, 9], "record": [1, 2, 3, 4, 5, 6], "scenario": [3, 5, 6], "ongo": [5, 6], "race": 5, "readabl": 5, "barrier": 5, "usag": [1, 2, 4, 5, 6], "concurr": [1, 4, 5], "id3d12graphicscommandlist": [1, 2, 3, 4, 5, 6], "resourcebarri": [1, 2, 4, 5, 6], "ani": [1, 2, 4, 5, 6, 9], "d3d12_resource_st": 5, "texture2d": [4, 5], "g_textur": [4, 5], "t0": [4, 5], "wrong": 5, "precis": [5, 6, 9], "logic": [4, 5], "b": [3, 4, 5, 6, 9], "mislead": 5, "There": [4, 5], "would": [2, 3, 4, 5, 6, 9], "been": [2, 3, 4, 5, 6], "linknam": 5, "link": [2, 5], "mayb": [5, 9], "said": [3, 5], "timelin": [1, 2, 3, 5, 6], "act": [5, 6, 9], "expect": [1, 5, 6, 9], "wish": 5, "along": [1, 3, 4, 5, 6, 9], "32": [1, 2, 4, 5, 6, 9], "inlin": [5, 9], "dword": [4, 5], "tabl": [2, 4, 5, 6, 10], "contigu": [2, 4, 5], "note": [3, 4, 5, 6, 9], "conveni": [2, 3, 5, 6, 9], "byte": [2, 4, 5, 6, 9], "float4": [2, 4, 5, 9], "3": [1, 2, 3, 4, 5, 6, 9], "five": [2, 4, 5], "rang": [2, 4, 5, 6, 9], "indirect": 5, "lastli": 5, "doubl": 5, "complex": [4, 5, 6], "longer": [4, 5], "effici": [1, 3, 4, 5, 6], "larger": 5, "static": [1, 2, 3, 4, 5, 6, 9], "deserv": 5, "implicitli": [2, 4, 5, 6], "automat": [2, 3, 4, 5, 6, 9], "downsid": [3, 5, 9], "order": [3, 4, 5, 6, 9], "quickli": [5, 6], "spill": 5, "split": [2, 5], "proper": 5, "maximum": [2, 3, 5], "64": [4, 5], "rule": [1, 2, 5, 6, 9], "keep": [2, 3, 5], "mind": [2, 5], "exclus": 5, "sort": 5, "place": [3, 5, 6, 9], "rel": [4, 5, 9], "inexpens": 5, "invalid": [4, 5, 6], "unfortun": [3, 5, 6], "expens": 5, "pend": [3, 5, 6], "after": [2, 3, 4, 5, 6, 9], "continu": [1, 3, 4, 5, 6], "freeli": 5, "flight": 5, "flexibl": [2, 5], "paid": 5, "poor": 5, "promis": [5, 6], "natur": 5, "could": [2, 3, 4, 5, 6, 9], "remov": [5, 6], "data_static_while_set_at_execut": 5, "stai": [4, 5], "unchang": 5, "data_volatil": 5, "descriptors_volatil": 5, "behavior": [5, 6], "assumpt": 5, "pso": [1, 2, 4, 5, 6], "unifi": [5, 9], "immut": 5, "quick": 5, "summari": [5, 6, 9], "bytecod": 5, "count": [2, 4, 5, 6], "certain": [1, 2, 3, 5, 6], "highlight": [1, 5, 6, 9], "adjac": [4, 5, 9], "strip": 5, "recal": [2, 4, 5], "setpipelinest": [1, 5], "altern": [3, 4, 5, 6, 9], "reset": [1, 2, 5, 6], "createcommandlist": [1, 4, 5, 6], "either": [1, 2, 3, 4, 5, 6], "none": [1, 5], "wa": [1, 2, 3, 5, 6], "previous": [1, 3, 5, 6], "inherit": [5, 6], "ideal": 5, "sentenc": 5, "seemingli": 5, "contrast": [1, 4, 5], "emphasi": 5, "balanc": [3, 5], "individu": [4, 5], "dynam": [2, 4, 5], "match": [1, 4, 5, 6], "failur": [5, 6], "undefin": [2, 5, 9], "emphas": [4, 5], "kept": 5, "switch": [3, 4, 5, 6, 9], "creategraphicspipelinest": [2, 4, 5], "d3d12_graphics_pipeline_state_desc": [2, 4, 5], "insid": [3, 5, 6], "emb": 5, "travers": 5, "translat": [2, 4, 5, 6, 9], "shed": 5, "embed": 5, "plausibl": 5, "involv": [3, 4, 5, 6, 9], "introduc": [1, 2, 3, 5, 9], "twice": [5, 6], "obtain": [3, 4, 5, 6, 9], "second": [2, 3, 4, 5, 6, 9], "glanc": 5, "excess": [3, 5], "question": [4, 5], "necess": 5, "couldn": 5, "retriev": [2, 3, 4, 5, 6], "furthermor": [3, 5], "absenc": 5, "concern": [2, 4, 5, 9], "thing": [2, 3, 5, 6], "unclear": 5, "ll": [2, 3, 4, 5, 6, 9], "thu": [1, 2, 4, 5, 6], "far": [3, 4, 5], "By": [2, 3, 4, 5, 9], "foundat": [5, 8], "known": [4, 5, 6, 9], "model": [3, 5, 9], "made": [4, 5], "tool": [4, 5, 6, 9], "max": [4, 5], "blender": 5, "straightforward": [2, 4, 5, 6, 9], "cube": 5, "programmat": [4, 5], "underli": [4, 5, 6], "organ": [1, 2, 5], "reflect": [4, 5], "interpret": [5, 9], "were": [3, 4, 5, 6], "clue": 5, "imposs": 5, "16": [2, 4, 5, 6, 9], "15": [2, 5], "homogen": [4, 5], "uniform": [4, 5], "heterogen": 5, "mix": 5, "bandwidth": 5, "fetch": [4, 5], "relev": [5, 6, 9], "anywai": [5, 9], "append": [3, 5], "relationship": [4, 5, 6], "adiac": 5, "symbol": [5, 9], "wind": 5, "clockwis": [4, 5, 9], "counterclockwis": 5, "isol": 5, "segment": [5, 9], "extrem": 5, "th": [5, 9], "accord": 5, "formula": [5, 9], "triangle_i": 5, "invari": 5, "smooth": [3, 5], "nullifi": 5, "assign": [4, 5, 6, 9], "arrow": [5, 9], "4": [1, 2, 4, 5, 6, 9], "6": [5, 6, 9], "8": [4, 5, 6], "9": [4, 5, 6], "24": 5, "repetit": 5, "octagon": 5, "v0": [4, 5], "v1": [4, 5], "v2": [4, 5], "v3": [4, 5], "v4": 5, "v5": 5, "v6": 5, "v7": 5, "5": [4, 5, 9], "v8": 5, "7": [5, 9], "duplic": 5, "pick": 5, "v": [2, 3, 4, 5, 6, 9], "uint": [1, 2, 3, 4, 5, 6], "indexlist": 5, "although": [4, 5, 6, 9], "repeat": [1, 4, 5], "short": [5, 6], "wherea": 5, "save": [2, 5, 6], "unlik": [2, 5, 6, 9], "assist": [2, 3, 5, 6], "scale": [5, 9], "rotat": [5, 9], "simplifi": [5, 6, 9], "expos": [5, 6], "128": [4, 5, 9], "temporari": [2, 5], "r": [4, 5, 6, 9], "compon": [2, 4, 5, 9], "put": [2, 4, 5, 6], "o0": 5, "shown": [2, 3, 4, 5, 6], "cb": [2, 5], "assembli": 5, "despit": [2, 5, 6], "real": [4, 5, 9], "scalar": 5, "simt": 5, "simd": [5, 9], "wonder": [2, 4, 5, 6, 9], "exist": [4, 5, 6, 9], "essenc": [5, 6, 9], "statement": [5, 6], "linkag": 5, "dispatch": [5, 6], "entri": [5, 6], "encompass": [5, 6], "struct": [1, 2, 3, 4, 5, 9], "vsintput": 5, "vsoutput": 5, "var": 5, "param": 5, "useless": 5, "equival": [5, 9], "pre": [1, 5], "sv_posit": [2, 4, 5], "origin": [1, 4, 5, 6, 9], "fall": [4, 5], "outsid": [4, 5], "rectangular": 5, "jut": 5, "stretch": [5, 6], "itsl": 5, "overlap": [2, 5], "grei": [4, 5], "dark": 5, "belong": [5, 6], "upper": 5, "edg": [4, 5], "decid": 5, "lower": [4, 5], "govern": 5, "decis": 5, "enjoi": 5, "anticip": 5, "worth": [5, 9], "attempt": [5, 6], "elimin": [2, 5, 6, 9], "orient": [5, 6], "toward": [5, 9], "perpendicular": [5, 9], "awai": [4, 5, 9], "sign": [5, 9], "deriv": [5, 6, 9], "demonstr": [4, 5, 6, 9], "transpar": [4, 5, 6], "rais": 5, "barycentr": [4, 5], "adjust": [3, 5], "aris": [2, 4, 5, 6, 9], "too": [3, 5], "caught": 5, "obliqu": 5, "endpoint": 5, "black": [4, 5], "white": [4, 5], "appear": [4, 5, 6], "grai": 5, "definit": [2, 4, 5, 6], "fragment": [4, 5], "except": [1, 2, 4, 5, 6], "bitmask": 5, "channel": [4, 5, 6], "verifi": [5, 9], "class": [1, 2, 3, 4, 5, 6, 9], "comment": [1, 2, 3, 4, 5, 6], "comptr": [1, 2, 3, 4, 5, 6], "releas": [4, 5, 6], "finish": [1, 2, 3, 4, 5, 6], "hellotriangl": [1, 5], "h": [1, 2, 3, 4, 5, 6, 9], "lifetim": [2, 5, 6], "app": [1, 2, 3, 4, 5, 6], "ondestroi": [1, 2, 3, 4, 5, 6], "wrl": [5, 6], "public": [1, 2, 3, 4, 5, 6], "dxsampl": [1, 2, 3, 4, 5, 6], "width": [1, 2, 3, 4, 5, 6], "height": [1, 2, 3, 4, 5, 6, 9], "std": [1, 2, 3, 4, 5, 6], "wstring": [1, 2, 3, 4, 5, 6], "void": [1, 2, 3, 4, 5, 6, 9], "oninit": [1, 2, 3, 4, 5, 6], "onupd": [1, 2, 3, 4, 5, 6], "onrend": [1, 2, 3, 4, 5, 6], "privat": [1, 2, 3, 4, 5, 6], "const": [1, 2, 3, 4, 5, 6, 9], "framecount": [1, 2, 3, 4, 5, 6], "xmfloat3": [1, 2, 3, 4, 5, 9], "xmfloat4": [1, 2, 3, 5, 9], "cd3dx12_viewport": [1, 2, 3, 4, 5], "m_viewport": [1, 2, 3, 4, 5], "cd3dx12_rect": [1, 2, 3, 4, 5], "m_scissorrect": [1, 2, 3, 4, 5], "idxgiswapchain3": [1, 2, 3, 4, 5, 6], "m_swapchain": [1, 2, 3, 4, 5, 6], "m_devic": [1, 2, 3, 4, 5, 6], "id3d12resourc": [1, 2, 3, 4, 5, 6], "m_rendertarget": [1, 2, 3, 4, 5, 6], "id3d12commandalloc": [1, 2, 3, 4, 5, 6], "m_commandalloc": [1, 2, 3, 4, 5, 6], "id3d12commandqueu": [1, 2, 3, 4, 5, 6], "m_commandqueu": [1, 2, 3, 4, 5, 6], "id3d12rootsignatur": [1, 2, 3, 4, 5], "m_rootsignatur": [1, 2, 3, 4, 5], "id3d12descriptorheap": [1, 2, 3, 4, 5, 6], "m_rtvheap": [1, 2, 3, 4, 5, 6], "id3d12pipelinest": [1, 2, 3, 4, 5, 6], "m_pipelinest": [1, 2, 3, 4, 5, 6], "m_commandlist": [1, 2, 3, 4, 5, 6], "m_rtvdescriptors": [1, 2, 3, 4, 5, 6], "m_vertexbuff": [1, 2, 3, 4, 5], "d3d12_vertex_buffer_view": [1, 2, 3, 4, 5], "m_vertexbufferview": [1, 2, 3, 4, 5], "m_frameindex": [1, 2, 3, 4, 5, 6], "m_fenceev": [1, 2, 3, 4, 5, 6], "id3d12fenc": [1, 2, 3, 4, 5, 6], "m_fenc": [1, 2, 3, 4, 5, 6], "uint64": [1, 2, 3, 4, 5, 6], "m_fencevalu": [1, 2, 3, 4, 5, 6], "loadpipelin": [1, 2, 3, 4, 5, 6], "loadasset": [1, 2, 3, 4, 5, 6], "populatecommandlist": [1, 2, 3, 4, 5, 6], "waitforpreviousfram": [1, 2, 3, 4, 5, 6], "evid": 5, "constructor": [2, 3, 5, 6, 9], "cpp": [1, 2, 3, 4, 5, 6, 9], "0f": [1, 2, 4, 5, 6, 9], "static_cast": [5, 6], "carefulli": [3, 4, 5], "asset": [1, 2, 3, 4, 5, 6], "empti": [2, 5, 6], "cd3dx12_root_signature_desc": 5, "rootsignaturedesc": [2, 4, 5], "init": [2, 3, 4, 5], "nullptr": [1, 2, 3, 4, 5, 6], "d3d12_root_signature_flag_allow_input_assembler_input_layout": [2, 4, 5], "id3dblob": [2, 4, 5], "error": [1, 2, 4, 5, 6], "throwiffail": [1, 2, 3, 4, 5, 6], "d3d12serializerootsignatur": 5, "d3d_root_signature_version_1": 5, "createrootsignatur": [2, 4, 5], "getbufferpoint": [2, 4, 5], "getbuffers": [2, 4, 5], "iid_ppv_arg": [1, 2, 3, 4, 5, 6], "vertexshad": [2, 4, 5], "pixelshad": [2, 4, 5], "_debug": [4, 5, 6], "debug": [1, 4, 5, 6], "compileflag": [4, 5], "d3dcompile_debug": [4, 5], "d3dcompile_skip_optim": [4, 5], "els": [4, 5, 6], "endif": [4, 5, 6], "d3dcompilefromfil": [4, 5], "getassetfullpath": [4, 5, 6], "l": [4, 5, 6], "c_str": [4, 5, 6], "vs_5_0": [4, 5], "ps_5_0": [4, 5], "d3d12_input_element_desc": [4, 5], "inputelementdesc": [2, 4, 5], "dxgi_format_r32g32b32_float": [4, 5], "d3d12_input_classification_per_vertex_data": [4, 5], "dxgi_format_r32g32b32a32_float": 5, "psodesc": [2, 4, 5], "inputlayout": [2, 4, 5], "_countof": [2, 3, 4, 5, 6], "prootsignatur": [2, 4, 5], "cd3dx12_shader_bytecod": [2, 4, 5], "p": [2, 4, 5, 9], "rasterizerst": [2, 4, 5], "cd3dx12_rasterizer_desc": [2, 4, 5], "d3d12_default": [2, 4, 5], "blendstat": [2, 4, 5], "cd3dx12_blend_desc": [2, 4, 5], "depthstencilst": [2, 4, 5], "depthen": [2, 4, 5], "fals": [1, 2, 3, 4, 5, 6], "stencilen": [2, 4, 5], "samplemask": [2, 4, 5], "uint_max": [2, 4, 5], "primitivetopologytyp": [2, 4, 5], "d3d12_primitive_topology_type_triangl": [2, 4, 5], "numrendertarget": [2, 4, 5], "rtvformat": [2, 4, 5], "dxgi_format_r8g8b8a8_unorm": [2, 4, 5, 6], "sampledesc": [2, 4, 5, 6], "d3d12_command_list_type_direct": [1, 3, 4, 5, 6], "yet": [1, 3, 5, 6, 9], "loop": [1, 3, 4, 5, 6], "close": [1, 2, 4, 5, 6], "trianglevertic": [4, 5], "25f": [2, 4, 5], "m_aspectratio": [4, 5, 6], "vertexbuffers": [4, 5], "sizeof": [2, 4, 5, 6], "transfer": [2, 4, 5], "vert": [4, 5], "marshal": [4, 5], "simplic": [4, 5, 6], "veri": [3, 4, 5, 6], "few": [4, 5, 6], "cd3dx12_heap_properti": [2, 4, 5], "d3d12_heap_type_upload": [2, 4, 5], "d3d12_heap_flag_non": [2, 4, 5], "cd3dx12_resource_desc": [2, 4, 5], "d3d12_resource_state_generic_read": [2, 4, 5], "uint8": [2, 4, 5, 6], "pvertexdatabegin": [4, 5], "cd3dx12_rang": [2, 4, 5], "readrang": [2, 4, 5], "reinterpret_cast": [2, 4, 5, 6], "memcpi": [2, 4, 5], "unmap": [2, 4, 5], "bufferloc": [2, 4, 5], "getgpuvirtualaddress": [2, 4, 5], "strideinbyt": [4, 5], "sizeinbyt": [2, 4, 5], "wait": [2, 3, 4, 5, 6], "createf": [3, 4, 5, 6], "d3d12_fence_flag_non": [3, 4, 5, 6], "createev": [3, 4, 5, 6], "hresult_from_win32": [3, 4, 5, 6], "getlasterror": [3, 4, 5, 6], "reus": [3, 4, 5, 6], "firstli": 5, "helper": [2, 4, 5, 6, 9], "beyond": [3, 4, 5], "scope": [2, 3, 4, 5, 6], "minor": 5, "serial": [2, 5], "blob": 5, "file": [4, 5, 6, 9], "disk": 5, "recreat": 5, "cast": 5, "correct": [3, 5, 6, 9], "d3dwriteblobtofil": 5, "emploi": [2, 3, 4, 5, 6], "advis": 5, "recent": 5, "valid": [4, 5, 6, 9], "older": [3, 5, 6], "path": [5, 6], "util": [5, 6, 9], "rich": 5, "zero": [2, 3, 5, 6, 9], "rgba": [4, 5], "d3d12_input_classification_per_instance_data": 5, "swap": [2, 3, 5, 6, 9], "chain": [2, 3, 5, 6], "off": [3, 5, 9], "multisampl": [5, 6], "0xffffffff": 5, "ine": 5, "notic": [3, 5, 6, 9], "signific": [5, 6, 9], "boundari": [2, 4, 5], "sure": [3, 5, 6], "readi": [3, 4, 5, 6], "dual": 5, "accommod": [2, 3, 4, 5], "d3d12_heap_type_default": [4, 5], "repeatedli": 5, "d3d12_heap_type_readback": 5, "d3d12_heap_type_custom": 5, "modifi": [1, 2, 3, 5, 6, 9], "sake": [4, 5], "subresourc": [4, 5, 6], "granular": [4, 5], "smallest": [4, 5], "tile": [4, 5], "d3d12_rang": 5, "shouldn": [5, 6], "null": [5, 6, 9], "anymor": [5, 6], "fenc": [1, 2, 3, 5, 6], "executecommandlist": [1, 2, 3, 4, 5, 6], "setgraphicsrootsignatur": [1, 2, 4, 5], "rssetviewport": [1, 2, 4, 5], "rssetscissorrect": [1, 2, 4, 5], "cd3dx12_resource_barri": [1, 2, 4, 5, 6], "d3d12_resource_state_pres": [1, 2, 4, 5, 6], "d3d12_resource_state_render_target": [1, 2, 4, 5, 6], "cd3dx12_cpu_descriptor_handl": [1, 2, 3, 4, 5, 6], "rtvhandl": [1, 2, 3, 4, 5, 6], "getcpudescriptorhandleforheapstart": [1, 2, 3, 4, 5, 6], "omsetrendertarget": [1, 2, 4, 5], "clearcolor": [1, 2, 4, 5, 6], "2f": [1, 2, 4, 5, 6], "4f": [1, 2, 4, 5, 6], "clearrendertargetview": [1, 2, 4, 5, 6], "iasetprimitivetopologi": [1, 2, 4, 5], "d3d_primitive_topology_trianglelist": [1, 2, 4, 5], "iasetvertexbuff": [1, 2, 4, 5], "drawinstanc": [1, 2, 4, 5], "trianglelist": 5, "restart": [5, 6], "n": [3, 4, 5, 6, 9], "third": [2, 3, 4, 5, 9], "boolean": 5, "okai": [2, 5], "conclud": [5, 9], "psinput": [2, 4, 5], "rare": [5, 6], "built": [5, 6, 9], "float3": [2, 5, 9], "green": [5, 6], "blue": [5, 6], "almost": [5, 6, 10], "certainli": [5, 6], "wide": [4, 5, 6, 9], "constitut": [4, 5], "transmit": 5, "vsinput": 5, "occupi": 5, "wast": [3, 5], "colon": 5, "haven": [3, 5, 6], "resiz": [5, 6], "happen": [3, 4, 5, 6], "1280": [5, 6], "720": [5, 6], "mitig": [4, 5], "ratio": [5, 6, 9], "d3d12helloworld": [1, 2, 3, 4, 5, 6], "d": 6, "audio": 6, "linear": [4, 6], "primari": [6, 9], "direct3d": [1, 4, 6], "directxmath": [6, 9], "primit": [1, 2, 4, 6], "pipelin": [2, 3, 4, 6], "talk": 6, "compat": 6, "direct2d": 6, "bitmap": 6, "interoper": 6, "menu": 6, "ui": 6, "head": [6, 9], "hud": 6, "directwrit": 6, "resolut": 6, "font": 6, "unicod": 6, "layout": [2, 4, 6], "acceler": 6, "brush": 6, "radial": 6, "gradient": 6, "common": [2, 6, 9], "xaudio2": 6, "sound": 6, "background": [1, 3, 6], "music": 6, "xinput": 6, "input": [2, 3, 4, 6], "aim": [2, 4, 6, 9], "surpris": 6, "discov": 6, "substanti": 6, "primarili": [6, 9], "boilerpl": 6, "sole": 6, "skip": 6, "comfort": 6, "micc": 6, "heavili": 6, "inspir": 6, "chapter": [6, 10], "fifth": 6, "david": 6, "kruglinski": 6, "georg": 6, "shepherd": 6, "scott": 6, "wingo": 6, "driven": 6, "respond": 6, "keystrok": 6, "mous": 6, "repaint": [1, 6], "itself": [1, 4, 6, 9], "winmain": 6, "action": 6, "enter": [2, 3, 6], "arriv": 6, "exit": [2, 4, 6], "wm_quit": 6, "signal": [3, 6], "termin": 6, "bypass": 6, "send": [3, 6], "characterist": 6, "icon": 6, "defwindowproc": 6, "valu": [2, 3, 4, 6, 9], "handler": [2, 4, 6], "letter": 6, "wm_": 6, "wm_creat": 6, "wm_paint": [2, 4, 6], "ten": 6, "wm_char": 6, "keyboard": 6, "wm_command": 6, "item": 6, "notif": 6, "parent": [1, 6], "wm_destroi": 6, "wm_lbuttondown": 6, "wm_lbuttonup": 6, "wm_mousemov": 6, "move": [4, 6, 9], "wm_size": 6, "interior": 6, "wparam": 6, "lparam": 6, "uniqu": [2, 4, 6, 9], "numer": [6, 9], "state": [2, 3, 4, 6, 9], "ctrl": 6, "shift": 6, "convention": 6, "critic": 6, "major": [3, 6], "break": 6, "binari": 6, "gener": [1, 4, 6, 9], "technologi": 6, "upon": [6, 9], "backward": 6, "dx12": 6, "librari": [4, 6, 9], "runtim": [1, 4, 6], "dx11": 6, "solv": [2, 4, 6], "ve": [1, 6], "ever": 6, "export": 6, "dll": 6, "java": 6, "python": 6, "didn": 6, "standard": [6, 9], "sai": 6, "anyth": [2, 6], "polymorph": 6, "stack": 6, "memori": [1, 2, 3, 4, 6, 9], "feasibl": [2, 6], "convers": [6, 9], "struggl": 6, "commun": 6, "lack": [4, 6], "knowledg": [6, 10], "resolv": [4, 6], "abl": [3, 6], "directori": 6, "suppos": [6, 9], "choos": 6, "recompil": 6, "ad": [3, 4, 6, 9], "member": [2, 6, 9], "fine": [4, 6], "imagin": [4, 6, 9], "incorrect": 6, "wors": 6, "crash": 6, "inconveni": 6, "principl": 6, "server": 6, "concret": [3, 6], "affect": [1, 3, 6], "forc": [4, 6, 9], "agre": 6, "comprehend": 6, "nearli": 6, "platform": [6, 9], "notabl": 6, "mechan": [3, 6], "mere": [2, 6, 9], "adher": [2, 6], "cocreateinst": 6, "registri": 6, "servic": [3, 6], "indirectli": 6, "central": [4, 6], "reli": [6, 9, 10], "hresult": 6, "encod": 6, "success": 6, "disrupt": 6, "coinitializeex": 6, "extend": [2, 4, 6, 9], "iunknown": 6, "addref": 6, "increment": [3, 6, 9], "decrement": 6, "reach": [3, 6], "caus": [4, 6, 9], "queryinterfac": 6, "queri": [2, 6], "iid": 6, "challeng": [2, 6], "solut": 6, "smart": 6, "templat": [6, 9], "pure": 6, "suitabl": [2, 6], "classic": [4, 6], "desktop": [3, 6], "drop": [1, 4, 6], "moreov": [1, 2, 6, 9], "accept": [2, 6, 9], "getaddressof": 6, "hasn": [3, 6], "gone": 6, "releaseandgetaddressof": 6, "caller": 6, "detach": 6, "wrapper": 6, "around": 6, "derefer": 6, "overload": [3, 6], "enumer": [1, 2, 4, 6], "buffer": [1, 4, 6, 7, 10], "gamma": 6, "transit": [1, 2, 3, 4, 6], "kernel": 6, "mode": [3, 6], "diagram": [4, 6], "interact": 6, "raster": [4, 6], "ask": 6, "desir": [4, 6], "rate": 6, "depict": 6, "maxim": [2, 6], "scan": 6, "refresh": 6, "trigger": 6, "implicit": 6, "backbon": 6, "lib": 6, "linker": 6, "startup": 6, "hellowindow": 6, "stdafx": 6, "_use_decl_annotations_": 6, "int": [6, 9], "winapi": 6, "hinstanc": 6, "lpstr": 6, "ncmdshow": 6, "d3d12": 6, "win32appl": 6, "header": [6, 9], "d3dx12": [4, 6], "nativ": 6, "d3dcompil": 6, "shader": [1, 2, 4, 6, 9], "use_decl_annot": 6, "macro": 6, "sal": 6, "annot": 6, "micd": 6, "dxgi1_6": 6, "shellapi": 6, "overrid": 6, "onkeydown": 6, "onkeyup": 6, "accessor": 6, "getwidth": 6, "m_width": 6, "getheight": 6, "m_height": 6, "wchar": 6, "gettitl": 6, "m_titl": 6, "parsecommandlinearg": 6, "_in_reads_": 6, "argc": 6, "argv": 6, "protect": 6, "lpcwstr": 6, "assetnam": 6, "gethardwareadapt": 6, "_in_": 6, "idxgifactory1": 6, "pfactori": 6, "_outptr_result_maybenull_": 6, "idxgiadapter1": 6, "ppadapt": 6, "bool": 6, "requesthighperformanceadapt": 6, "setcustomwindowtext": 6, "m_usewarpdevic": 6, "root": [2, 4, 6], "m_assetspath": 6, "titl": 6, "psampl": 6, "hwnd": 6, "gethwnd": 6, "m_hwnd": 6, "lresult": 6, "callback": 6, "windowproc": 6, "assetspath": 6, "512": 6, "getassetspath": 6, "cass": 6, "absolut": 6, "search": 6, "proport": 6, "technic": [4, 6], "speak": 6, "conceptu": [4, 6], "pars": 6, "lpwstr": 6, "commandlinetoargvw": 6, "getcommandlinew": 6, "localfre": 6, "wndclassex": 6, "windowclass": 6, "cbsize": 6, "cs_hredraw": 6, "cs_vredraw": 6, "lpfnwndproc": 6, "hcursor": 6, "loadcursor": 6, "idc_arrow": 6, "lpszclassnam": 6, "dxsampleclass": 6, "registerclassex": 6, "rect": 6, "windowrect": 6, "adjustwindowrect": 6, "ws_overlappedwindow": 6, "createwindow": 6, "cw_usedefault": 6, "aren": 6, "child": [1, 6], "showwindow": 6, "msg": 6, "peekmessag": 6, "pm_remov": 6, "translatemessag": 6, "dispatchmessag": 6, "char": 6, "attribut": [2, 4, 6], "redraw": 6, "cursor": 6, "hover": 6, "manipul": [4, 6], "immedi": [3, 6], "overridden": 6, "dxgifactoryflag": 6, "layer": [1, 6], "activ": 6, "id3d12debug": 6, "debugcontrol": 6, "succeed": 6, "d3d12getdebuginterfac": 6, "enabledebuglay": 6, "dxgi_create_factory_debug": 6, "idxgifactory4": 6, "factori": 6, "createdxgifactory2": 6, "idxgiadapt": 6, "warpadapt": 6, "enumwarpadapt": 6, "d3d12createdevic": 6, "d3d_feature_level_11_0": 6, "hardwareadapt": 6, "d3d12_command_queue_desc": 6, "queuedesc": 6, "d3d12_command_queue_flag_non": 6, "createcommandqueu": 6, "dxgi_swap_chain_desc1": 6, "swapchaindesc": 6, "buffercount": 6, "bufferusag": 6, "dxgi_usage_render_target_output": 6, "swapeffect": 6, "dxgi_swap_effect_flip_discard": [3, 6], "idxgiswapchain1": 6, "swapchain": 6, "createswapchainforhwnd": 6, "fullscreen": 6, "makewindowassoci": 6, "dxgi_mwa_no_alt_ent": 6, "getcurrentbackbufferindex": [3, 6], "descriptor": [1, 2, 3, 4, 6], "view": [2, 3, 4, 6, 9], "rtvheapdesc": [2, 4, 6], "numdescriptor": [2, 4, 6], "d3d12_descriptor_heap_type_rtv": [2, 4, 6], "getdescriptorhandleincrements": [2, 4, 6], "getbuff": [3, 6], "createrendertargetview": [3, 6], "createcommandalloc": [1, 3, 6], "prototyp": 6, "refiid": 6, "riid": 6, "_com_outptr_opt_": 6, "ppvdebug": 6, "typo": 6, "combaseapi": 6, "pptype": 6, "__uuidof": 6, "iid_ppv_args_help": 6, "request": [3, 6], "warn": 6, "obscur": 6, "leak": 6, "9_1": 6, "11_0": 6, "warp": 6, "proceed": [6, 9], "acquir": 6, "idxgifactory6": 6, "factory6": 6, "adapterindex": 6, "enumadapterbygpuprefer": 6, "true": [6, 9], "dxgi_gpu_preference_high_perform": 6, "dxgi_gpu_preference_unspecifi": 6, "dxgi_adapter_desc1": 6, "desc": 6, "getdesc1": 6, "dxgi_adapter_flag_softwar": 6, "_uuidof": 6, "enumadapters1": 6, "Such": 6, "confid": [3, 6], "submit": [1, 3, 6], "blueish": 6, "insert": [3, 6], "guarante": [1, 2, 3, 6], "henc": [6, 9], "drive": 6, "dxgi_format": [4, 6], "unsign": [4, 6, 9], "255": [4, 6], "256": [2, 4, 6], "mimic": 6, "rgb": 6, "alpha": [4, 6], "opac": 6, "flip": [3, 6], "faster": 6, "pixel": [4, 6], "msaa": 6, "yourself": 6, "index": [2, 3, 4, 6, 9], "idxgifactori": 6, "alt": 6, "shortcut": 6, "But": [6, 9], "bulk": 6, "answer": [4, 6], "correpspond": 6, "wherev": 6, "stress": 6, "opaqu": 6, "sens": [4, 6, 9], "confirm": 6, "cpu_descriptor_handl": 6, "cd3dx12": 6, "behav": 6, "idxgiswapchain": [3, 6], "varieti": [4, 6], "And": [1, 3, 6, 9], "Be": [6, 9], "care": 6, "wm_keydown": 6, "wm_keyup": 6, "ascii": 6, "getwindowlongptr": 6, "gwlp_userdata": 6, "lpcreatestruct": 6, "pcreatestruct": 6, "setwindowlongptr": 6, "long_ptr": 6, "lpcreateparam": 6, "postquitmessag": 6, "opportun": 6, "createstruct": 6, "proce": [6, 9], "id3d12commandlist": [3, 4, 6], "ppcommandlist": [3, 4, 6], "paint": 6, "consumpt": 6, "preserv": [3, 6], "submiss": [3, 6], "deal": [2, 6], "interv": [2, 3, 6], "again": [1, 3, 6, 9], "syncinterv": [3, 6], "blank": [3, 6], "sync": [3, 6], "dash": [6, 9], "diagon": [6, 9], "isn": [6, 9], "fp": 6, "decreas": 6, "half": [4, 6], "prepar": [3, 6], "persist": [1, 6], "honest": 6, "intric": 6, "outcom": [6, 9], "unnecessari": 6, "unleash": [3, 6], "track": [3, 6], "populatecommandexactlylist": 6, "did": 6, "clean": 6, "bluish": 6, "tint": 6, "slightli": [4, 6], "m_": 6, "rtvdescriptors": 6, "0x20": 6, "hexadecim": 6, "populatedcommandlist": 6, "FOR": 6, "THE": 6, "TO": 6, "NOT": 6, "best": [4, 6], "d3d12helloframebuff": 6, "getcompletedvalu": [3, 6], "seteventoncomplet": [3, 6], "waitforsingleobject": 6, "infinit": [3, 6, 9], "18": 6, "had": [3, 4, 6], "equal": [3, 6, 9], "met": [3, 6], "delimit": [3, 4, 6], "winmsg": 6, "direct3ddxgi": 6, "d3d10": 6, "guid": [4, 6], "prog": 6, "dx": 6, "defect": 6, "msvc": 6, "170": 6, "walk": 10, "linux": 10, "prior": [1, 10], "school": 10, "download": 10, "fair": 10, "effort": 10, "introduct": 10, "prerequisit": 10, "hello": [], "refer": [2, 3, 5], "vertex": [1, 2, 3, 4], "summar": 1, "websit": 1, "mic": 1, "commonli": [1, 4, 9], "secondari": 1, "resubmit": 1, "overwritten": 1, "retain": [1, 4], "d3d12_command_list_typ": 1, "executebundl": 1, "isreus": 1, "perhap": 1, "spread": 1, "multithread": 1, "omsetstencilref": 1, "omsetblendfactor": 1, "topologi": 1, "d3d12_primitive_topology_type_undefin": 1, "overhead": [1, 2], "d3d12_command_list_type_bundl": 1, "discardresourc": 1, "resolvesubresourc": 1, "setpred": 1, "beginqueri": 1, "endqueri": 1, "sosettarget": 1, "setdescriptorheap": [1, 2, 4], "issu": [1, 4, 9], "d3d12hellotriangl": 1, "hellobundl": 1, "m_bundlealloc": 1, "m_bundl": 1, "storag": 1, "soon": [1, 3, 4], "revis": 1, "5f": [1, 4], "latter": 1, "redund": 1, "me": 1, "awar": [1, 9], "mistak": 1, "direct3d12": 1, "bundl": [7, 10], "31": 1, "thi": [], "d3d12helloconstbuff": [], "signatur": [2, 4], "reposit": 2, "simul": 2, "anim": 2, "latenc": [2, 3], "come": [2, 3], "phrase": 2, "contradictori": 2, "4096": 2, "compris": 2, "align": [2, 9], "constraint": 2, "fulfil": 2, "simplest": [2, 4], "divis": [2, 9], "4kb": 2, "64kb": 2, "resembl": 2, "side": [2, 9], "destin": [2, 4, 9], "counterpart": 2, "strategi": 2, "incur": 2, "helloconstbuff": 2, "cbuffer": 2, "sceneconstantbuff": 2, "b0": 2, "pad": 2, "240": 2, "total": 2, "keyword": [2, 9], "xxx": [], "minimum": 2, "extern": [2, 4], "60": 2, "static_assert": 2, "m_cbvheap": [2, 4], "m_constantbuff": 2, "m_constantbufferdata": 2, "m_pcbvdatabegin": 2, "pose": 2, "pack": [2, 9], "cross": 2, "mu": 2, "xmfloat2": [2, 4, 9], "mv": 2, "mw": 2, "float2": [2, 4, 9], "w": [2, 9], "manner": 2, "register1": 2, "register2": 2, "assembl": [2, 4], "unpack": 2, "deliv": 2, "nevertheless": [2, 3, 9], "cbvheapdesc": 2, "d3d12_descriptor_heap_type_cbv_srv_uav": [2, 4], "d3d12_feature_data_root_signatur": [2, 4], "featuredata": [2, 4], "highest": [2, 4], "support": [], "checkfeaturesupport": [2, 4], "succe": [2, 4], "highestvers": [2, 4], "d3d_root_signature_version_1_1": [2, 4], "fail": [2, 4], "d3d12_feature_root_signatur": [2, 4], "d3d_root_signature_version_1_0": [2, 4], "cd3dx12_descriptor_range1": [2, 4], "cd3dx12_root_parameter1": [2, 4], "rootparamet": [2, 4], "d3d12_descriptor_range_type_cbv": 2, "d3d12_descriptor_range_flag_data_stat": [2, 4], "initasdescriptort": [2, 4], "d3d12_shader_visibility_vertex": 2, "deni": 2, "uneccessari": 2, "d3d12_root_signature_flag": 2, "rootsignatureflag": 2, "d3d12_root_signature_flag_deny_hull_shader_root_access": 2, "d3d12_root_signature_flag_deny_domain_shader_root_access": 2, "d3d12_root_signature_flag_deny_geometry_shader_root_access": 2, "d3d12_root_signature_flag_deny_pixel_shader_root_access": 2, "cd3dx12_versioned_root_signature_desc": [2, 4], "init_1_1": [2, 4], "d3dx12serializeversionedrootsignatur": [2, 4], "constantbuffers": 2, "d3d12_constant_buffer_view_desc": 2, "cbvdesc": 2, "createconstantbufferview": 2, "d3d12_descriptor_range1": 2, "volatil": 2, "d3d12_root_parameter1": 2, "d3d12_versioned_root_signature_desc": 2, "d3d12_root_paramet": 2, "fourth": [2, 4], "potenti": 2, "gain": 2, "d3d12_shader_visibility_al": 2, "broadcast": [2, 4], "overrul": 2, "benefici": [2, 4], "ppheap": [2, 4], "setgraphicsrootdescriptort": [2, 4], "getgpudescriptorhandleforheapstart": [2, 4], "among": [2, 4], "constantli": 2, "messag": [2, 4], "translationspe": 2, "015f": 2, "offsetbound": 2, "25": 2, "disappear": 2, "33": 2, "interpol": 4, "realism": 4, "mesh": 4, "achiev": [3, 4, 9], "artist": 4, "manual": 4, "exhibit": 4, "checkerboard": 4, "pattern": 4, "grasp": 4, "grain": 4, "realist": 4, "appeal": 4, "direct3d11": 4, "overview": 4, "intro": 4, "direct3d9": 4, "thought": 4, "arrang": 4, "dxgi": [3, 4], "jpeg": 4, "png": 4, "directxtk12": 4, "compress": 4, "uncrompress": 4, "dd": 4, "directdraw": 4, "mipmap": 4, "cubemap": 4, "plai": [4, 9], "finest": 4, "hierarchi": 4, "halv": 4, "round": 4, "facilit": [4, 9], "identif": 4, "lod": 4, "nine": 4, "topmost": 4, "leav": 4, "scheme": 4, "One": 4, "uv": 4, "unwrap": 4, "christma": 4, "chocol": 4, "semplic": 4, "mathbf": [4, 9], "_1": 4, "_2": 4, "_3": 4, "multipli": [4, 9], "minu": 4, "truncat": 4, "fraction": 4, "pair": 4, "big": [4, 9], "materi": 4, "82": 4, "74": 4, "38": 4, "anisotrop": 4, "_4": 4, "83": 4, "75": 4, "81": 4, "73": 4, "subtract": 4, "62": 4, "88": 4, "exact": [4, 9], "_a": 4, "_b": 4, "78": 4, "linearli": 4, "horizont": 4, "bilinear": 4, "appendix": [4, 9], "who": 4, "prove": [4, 9], "futur": 4, "ugli": 4, "artifact": 4, "zoom": 4, "1024": 4, "approxim": [4, 9], "sticker": 4, "shoot": 4, "straight": [4, 9], "distort": 4, "angl": [4, 9], "ignor": 4, "project": [], "blocki": 4, "surround": 4, "smoother": 4, "magnifi": 4, "expand": [4, 9], "randomli": 4, "movement": [4, 9], "flicker": 4, "rapidli": 4, "significantli": [4, 9], "distant": 4, "closest": 4, "companion": 4, "triangle_1": 4, "triangle_2": 4, "junction": 4, "floor": 4, "preced": 4, "min": 4, "smear": 4, "inclus": 4, "regular": 4, "hellotextur": 4, "texturewidth": 4, "textureheight": 4, "texturepixels": 4, "m_srvheap": 4, "m_textur": 4, "generatetexturedata": 4, "rowpitch": 4, "cellpitch": 4, "cell": 4, "cellheight": 4, "textures": 4, "pdata": 4, "0x00": 4, "0xff": 4, "counter": 4, "partcular": 4, "wip": [], "srvheapdesc": 4, "renam": 4, "grown": 4, "d3d12_descriptor_range_type_srv": 4, "d3d12_shader_visibility_pixel": 4, "d3d12_static_sampler_desc": 4, "d3d12_filter_min_mag_mip_point": 4, "addressu": 4, "d3d12_texture_address_mode_bord": 4, "addressv": 4, "addressw": 4, "miplodbia": 4, "maxanisotropi": 4, "comparisonfunc": 4, "d3d12_comparison_func_nev": 4, "bordercolor": 4, "d3d12_static_border_color_transparent_black": 4, "minlod": 4, "maxlod": 4, "d3d12_float32_max": 4, "shaderregist": 4, "registerspac": 4, "shadervis": 4, "texcoord": 4, "dxgi_format_r32g32_float": 4, "prematur": 4, "textureuploadheap": 4, "d3d12_resource_desc": 4, "texturedesc": 4, "miplevel": 4, "d3d12_resource_flag_non": 4, "depthorarrays": 4, "d3d12_resource_dimension_texture2d": 4, "d3d12_resource_state_copy_dest": 4, "uploadbuffers": 4, "getrequiredintermediates": 4, "intermedi": [4, 9], "schedul": [3, 4], "d3d12_subresource_data": 4, "texturedata": 4, "slicepitch": 4, "updatesubresourc": 4, "d3d12_resource_state_pixel_shader_resourc": 4, "d3d12_shader_resource_view_desc": 4, "srvdesc": 4, "shader4componentmap": 4, "d3d12_default_shader_4_component_map": 4, "viewdimens": 4, "d3d12_srv_dimension_texture2d": 4, "createshaderresourceview": 4, "shader_visibility_vertex": 4, "shader_visibility_pixel": 4, "shader_visibility_al": 4, "visibility_vertex": 4, "visibility_pixel": 4, "visibility_al": 4, "denot": [4, 9], "impos": 4, "s0": 4, "worthwhil": 4, "successfulli": 4, "surprisingli": 4, "destructor": 4, "reclaim": 4, "undesir": 4, "halt": 4, "permit": 4, "signifi": 4, "accordingli": [4, 9], "id3dresourc": 4, "sub": 4, "d3d12_resource_state_non_pixel_shader_resourc": 4, "d3d12_resource_state_non_pixel_shad": 4, "d3d12_resource_state_pixel_shad": 4, "remap": 4, "phase": [3, 4], "analog": 4, "samplerst": 4, "g_sampler": 4, "suboptim": 3, "workflow": 3, "screenshot": 3, "reconsid": [], "oversimplifi": 3, "vsync": [], "reiter": [], "replic": 3, "world": 10, "intent": 3, "dwm": 3, "wake": 3, "offscreen": 3, "under": 3, "condit": 3, "unlock": 3, "unavail": 3, "outstand": 3, "expir": 3, "retir": 3, "replac": [3, 9], "strict": [3, 9], "weaker": 3, "paus": 3, "queu": 3, "resum": 3, "trade": 3, "idl": 3, "composit": 3, "due": [3, 9], "newer": 3, "explicit": 3, "interfer": 3, "undoubtedli": 3, "unblock": 3, "worsen": 3, "woken": 3, "cancel": 3, "movetonextfram": 3, "waitforgpu": 3, "oldest": 3, "waitforsingleobjectex": 3, "currentfencevalu": 3, "dummi": 3, "primer": [], "bridg": 9, "gap": 9, "understood": 9, "quantifi": 9, "breviti": 9, "express": 9, "mutual": 9, "perpendicularli": 9, "xz": 9, "bring": 9, "forward": 9, "adopt": 9, "convent": 9, "pole": 9, "rai": 9, "theta": 9, "radiu": 9, "\u03b8": 9, "degre": 9, "radian": 9, "pi": 9, "360": 9, "period": 9, "cylindr": [], "spheric": [], "extra": 9, "cylind": 9, "tripl": [], "varphi": 9, "180": 9, "sphere": 9, "upward": 9, "matric": 9, "quantiti": 9, "magnitud": 9, "displac": 9, "intens": 9, "length": [], "tupl": 9, "finit": 9, "sequenc": 9, "matter": 9, "u_x": 9, "u_i": 9, "u_z": 9, "v_x": 9, "v_y": 9, "v_z": 9, "sum": 9, "tail": 9, "parallelogram": 9, "invers": 9, "kx": 9, "ky": 9, "kz": 9, "neg": 9, "opposit": 9, "commut": 9, "ident": 9, "kt": 9, "pythagorean": 9, "theorem": 9, "sqrt": 9, "hat": 9, "reciproc": 9, "displaystyl": 9, "frac": 9, "cdot": 9, "u_xv_x": 9, "u_yv_i": 9, "u_zv_z": 9, "yield": 9, "law": 9, "cosin": 9, "2ab": 9, "co": 9, "proof": [], "tag": 9, "label": 9, "eq": 9, "avectors1": 9, "bot": 9, "subtrat": 9, "proj": 9, "_": 9, "hypotenus": 9, "adj": 9, "hyp": 9, "invert": 9, "coeffici": 9, "arrowhead": 9, "interchang": 9, "irrelev": 9, "meaning": 9, "particularli": 9, "settl": 9, "v_0": 9, "v_": 9, "orthonorm": 9, "un": 9, "restor": 9, "v_1": 9, "w_0": 9, "w_1": 9, "v_2": 9, "therebi": 9, "w_2": 9, "yz": 9, "eqref": 9, "flalign": 9, "em": [], "partial": [], "mathcal": [], "falign": [], "notat": 9, "subscript": 9, "trick": 9, "circular": 9, "exclud": 9, "minuend": 9, "subtrahend": 9, "matrix": 9, "lvert": 9, "cr": 9, "rvert": 9, "br": [], "lbrack": 9, "rbrack": 9, "u_yv_z": 9, "u_zv_i": 9, "u_zv_x": 9, "u_xv_z": 9, "u_xv_i": 9, "u_yv_x": 9, "hypervolum": 9, "box": 9, "lie": 9, "sin": 9, "a_p": 9, "ok": 9, "operand": 9, "finger": 9, "curl": 9, "thumb": 9, "ne": 9, "fnalign": [], "parallelepip": 9, "v_yw_z": 9, "v_zw_y": 9, "v_zw_x": 9, "v_xw_z": 9, "v_xw_y": 9, "v_yw_x": 9, "w_z": 9, "w_y": 9, "w_x": 9, "bac": 9, "cab": 9, "a_x": 9, "a_i": 9, "a_z": 9, "b_x": 9, "b_y": 9, "b_z": 9, "c_x": 9, "c_y": 9, "c_z": 9, "b_yc_z": 9, "b_zc_y": 9, "b_zc_x": 9, "b_xc_z": 9, "b_xc_y": 9, "b_yc_x": 9, "44ff66": 9, "44aaff": 9, "_x": 9, "a_xc_x": 9, "a_yc_i": 9, "a_zc_z": 9, "a_xb_x": 9, "a_yb_i": 9, "a_zb_z": 9, "a_xb_xc_x": 9, "a_yb_xc_i": 9, "a_zb_xc_z": 9, "a_yb_yc_x": 9, "a_zb_zc_x": 9, "int2": 9, "int3": 9, "int4": 9, "prefix": 9, "syntax": 9, "swizzl": 9, "ivector": 9, "dvector": 9, "f0": 9, "f1": 9, "f2": 9, "vec1": 9, "xyz": 9, "vec2": 9, "rb": 9, "vec3": 9, "zzxy": 9, "wxyz": 9, "yw": 9, "zz": 9, "xmvector": 9, "typedef": 9, "__m128": 9, "xmm": 9, "u_w": 9, "v_w": 9, "op": 9, "global": 9, "alia": 9, "misalign": 9, "xmintt2": 9, "xmint3": 9, "xmint4": 9, "xmfloat": 9, "xmloadfloat2": 9, "psourc": 9, "xmloadfloat3": 9, "xmloadfloat4": 9, "xmint": 9, "xmstorefloat2": 9, "pdestin": 9, "fxmvector": 9, "xmstorefloat3": 9, "xmstorefloat4": 9, "gxmvector": 9, "hxmvector": 9, "convect": 9, "xmvectorf32": 9, "xmvectoru32": 9, "xmvectori32": 9, "union": 9, "__declspec": 9, "f": 9, "vzero": 9, "quit": 9, "differenti": 9, "guidelin": 9, "cxmvector": 9, "alias": 9, "dxmath": 9, "pg": 9, "xnamath": 9, "__vectorcal": 9, "vectorcal": 9}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"introduct": [0, 1, 2, 3, 4, 5, 6], "prerequisit": 0, "background": 0, "knowledg": 0, "hardwar": 0, "softwar": 0, "support": [0, 1, 2, 3, 4, 5, 6, 9, 10], "thi": [0, 1, 2, 3, 4, 5, 6, 9, 10], "project": [0, 1, 2, 3, 4, 5, 6, 9, 10], "refer": [0, 1, 4, 6, 9], "hello": [1, 2, 3, 4, 5, 6, 7, 10], "directx": [6, 9, 10], "triangl": 5, "direct3d": 5, "render": 5, "pipelin": [1, 5], "overview": [5, 6], "resourc": 5, "manag": 5, "memori": 5, "view": 5, "descriptor": 5, "transit": 5, "root": 5, "signatur": 5, "version": 5, "The": 5, "state": [1, 5], "input": 5, "assembl": 5, "mesh": 5, "vertex": 5, "buffer": [2, 3, 5], "layout": 5, "primit": 5, "topologi": 5, "index": 5, "system": [4, 5, 9], "gener": 5, "valu": 5, "shader": 5, "raster": 5, "face": 5, "cull": 5, "attribut": 5, "interpol": 5, "pixel": 5, "d3d12hellotriangl": 5, "code": [1, 2, 3, 4, 5, 6], "review": [1, 2, 3, 4, 5, 6], "try": 5, "window": [3, 6], "applic": 6, "procedur": 6, "messag": 6, "compon": 6, "object": 6, "model": 6, "com": 6, "graphic": [1, 6], "infrastructur": 6, "dxgi": 6, "framework": 6, "d3d12hellowindow": 6, "welcom": 10, "learn": 10, "sourc": [1, 2, 3, 4, 5, 6], "bundl": 1, "inherit": 1, "restrict": 1, "d3d12hellobundl": 1, "world": 7, "intro": [], "constant": 2, "d3d12helloconstbuff": 2, "hlsl": [2, 4, 9], "c": [2, 4, 9], "textur": 4, "1d": [4, 9], "arrai": 4, "2d": 4, "wip": [], "texel": 4, "coordin": [4, 9], "sampl": 4, "magnif": 4, "minif": 4, "address": 4, "mode": 4, "6": [], "1": [], "wrap": 4, "2": [], "mirror": 4, "3": [], "clamp": 4, "4": [], "border": 4, "d3d12hellotextur": 4, "frame": 3, "cpu": 3, "gpu": 3, "parallel": 3, "from": 3, "d3d12helloframebuff": 3, "appendic": 10, "vector": 9, "math": 8, "primer": [], "cartesian": 9, "polar": 9, "cylindr": 9, "spheric": 9, "basic": [8, 9], "homogen": 9, "definit": 9, "oper": 9, "addit": 9, "subtract": 9, "scalar": 9, "multipl": 9, "properti": 9, "length": 9, "dot": 9, "product": 9, "orthogon": 9, "gram": 9, "schmidt": 9, "proof": 9, "cross": 9, "tripl": 9}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 60}, "alltitles": {"Introduction and Prerequisites": [[0, "introduction-and-prerequisites"]], "Introduction": [[0, "introduction"], [1, "introduction"], [2, "introduction"], [3, "introduction"], [4, "introduction"], [5, "introduction"], [6, "introduction"]], "Prerequisites": [[0, "prerequisites"]], "Background knowledge": [[0, "background-knowledge"]], "Hardware": [[0, "hardware"]], "Software": [[0, "software"]], "Support this project": [[0, null], [1, null], [2, null], [3, null], [4, null], [5, null], [6, null], [10, null], [9, null]], "References": [[0, "references"], [1, "references"], [4, "references"], [6, "references"], [9, "references"]], "Hello Bundles": [[1, "hello-bundles"]], "Bundles": [[1, "bundles"]], "Graphics pipeline state inheritance": [[1, "graphics-pipeline-state-inheritance"]], "Bundle restrictions": [[1, "bundle-restrictions"]], "D3D12HelloBundles: code review": [[1, "d3d12hellobundles-code-review"]], "Source Code": [[1, "source-code"], [2, "source-code"], [3, "source-code"], [4, "source-code"], [5, "source-code"], [6, "source-code"]], "Hello Constant Buffers": [[2, "hello-constant-buffers"]], "Constant buffers": [[2, "constant-buffers"]], "D3D12HelloConstBuffers: code review": [[2, "d3d12helloconstbuffers-code-review"]], "HLSL": [[2, "hlsl"], [4, "hlsl"], [9, "hlsl"]], "C++": [[2, "c"], [4, "c"], [9, "c"]], "Hello Frame Buffering": [[3, "hello-frame-buffering"]], "CPU-GPU parallelism": [[3, "cpu-gpu-parallelism"]], "from Hello Window": [[3, null]], "D3D12HelloFrameBuffering: code review": [[3, "d3d12helloframebuffering-code-review"]], "Hello Texture": [[4, "hello-texture"]], "Textures": [[4, "textures"]], "1D Textures": [[4, "d-textures"]], "1D Texture arrays": [[4, "d-texture-arrays"]], "2D Textures and 2D Texture arrays": [[4, "d-textures-and-2d-texture-arrays"]], "Texel Coordinate System": [[4, "texel-coordinate-system"]], "Texture Coordinate System": [[4, "texture-coordinate-system"]], "Sampling": [[4, "sampling"]], "Magnification": [[4, "magnification"]], "Minification": [[4, "minification"]], "Addressing Modes": [[4, "addressing-modes"]], "Wrap": [[4, "wrap"]], "Mirror": [[4, "mirror"]], "Clamp": [[4, "clamp"]], "Border": [[4, "border"]], "D3D12HelloTextures: code review": [[4, "d3d12hellotextures-code-review"]], "Hello Triangle": [[5, "hello-triangle"]], "Direct3D rendering pipeline overview": [[5, "direct3d-rendering-pipeline-overview"]], "Resources management": [[5, "resources-management"]], "Memory": [[5, "memory"]], "Views and descriptors": [[5, "views-and-descriptors"]], "Transitions": [[5, "transitions"]], "Root signature": [[5, "root-signature"]], "Root signature version": [[5, "root-signature-version"]], "The Pipeline State": [[5, "the-pipeline-state"]], "The Input Assembler": [[5, "the-input-assembler"]], "Meshes": [[5, "meshes"]], "Vertex buffer": [[5, "vertex-buffer"]], "Input layout": [[5, "input-layout"]], "Primitive topologies": [[5, "primitive-topologies"]], "Index buffer": [[5, "index-buffer"]], "System-Generated Values": [[5, "system-generated-values"]], "Vertex Shader": [[5, "vertex-shader"]], "The Rasterizer": [[5, "the-rasterizer"]], "Face culling": [[5, "face-culling"]], "Attribute interpolation": [[5, "attribute-interpolation"]], "Pixel shader": [[5, "pixel-shader"]], "D3D12HelloTriangle: code review": [[5, "d3d12hellotriangle-code-review"]], "Try": [[5, null]], "Hello Window": [[6, "hello-window"]], "Windows applications": [[6, "windows-applications"]], "Window Procedure": [[6, "window-procedure"]], "Messages": [[6, "messages"]], "Component Object Model (COM)": [[6, "component-object-model-com"]], "DirectX Graphics Infrastructure (DXGI)": [[6, "directx-graphics-infrastructure-dxgi"]], "Framework overview": [[6, "framework-overview"]], "D3D12HelloWindow: code review": [[6, "d3d12hellowindow-code-review"]], "Hello World": [[7, "hello-world"]], "Math Basics": [[8, "math-basics"]], "Welcome to Learn DirectX": [[10, "welcome-to-learn-directx"]], "Hello DirectX": [[10, null]], "Appendices": [[10, null]], "Vectors": [[9, "vectors"], [9, "id1"]], "Coordinate systems": [[9, "coordinate-systems"]], "1D Coordinate system": [[9, "d-coordinate-system"]], "Cartesian coordinate system": [[9, "cartesian-coordinate-system"]], "Polar coordinate system": [[9, "polar-coordinate-system"]], "Cylindrical and spherical coordinate systems": [[9, "cylindrical-and-spherical-coordinate-systems"]], "Homogeneous coordinate system": [[9, "homogeneous-coordinate-system"]], "Definition": [[9, "definition"]], "Basic operations": [[9, "basic-operations"]], "Addition and Subtraction": [[9, "addition-and-subtraction"]], "Scalar multiplication": [[9, "scalar-multiplication"]], "Properties of addition and scalar multiplication": [[9, "properties-of-addition-and-scalar-multiplication"]], "Length of a vector": [[9, "length-of-a-vector"]], "Dot product": [[9, "dot-product"]], "Properties of dot multiplication": [[9, "properties-of-dot-multiplication"]], "Proof": [[9, null], [9, null]], "Orthogonal projection": [[9, "orthogonal-projection"]], "Gram-Schmidt Orthogonalization": [[9, "gram-schmidt-orthogonalization"]], "Cross product": [[9, "cross-product"]], "Scalar and vector triple product": [[9, "scalar-and-vector-triple-product"]], "Vectors in DirectX": [[9, "vectors-in-directx"]]}, "indexentries": {}})
\ No newline at end of file