This is a personal deposit for computer graphics related resource, please let me know if there is anything wrong/inaccurate, thanks!
-
The Gauss-Seidel and Jacobi Methods for Solving Linear Systems
-
Computing Tangent Space Basis Vectors for an Arbitrary Mesh (Lengyel’s Method)
-
https://ebookfoundation.github.io/free-programming-books/free-programming-books.html
-
Physically Based Rendering: From Theory To Implementation Third Edition
-
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT can be used to allow bindings to not contain valid descriptors if they are not dynamically used.
-
Vulkan NDC is right handed and it's y axis points down. A way to work around this is to negate the second element at the second row of the projection matrix.
-
DirectXMath uses row major to store matrix while GLM uses column major. DirectXMath uses right multiply while GLM use left multiply.
-
Cross product is defined with right handedness and rotation matrix is also defined with right handedness. Therefore world space is often defined with right handedness. But DirectX is an exception. Therefore its world space is defined with left handedness.
-
The handedness of lookat function and perspective function must match each other. DirectXMath expecilitly provides both while GLM use right hand coordinates by default unless GLM_FORCE_LEFT_HANDED is specified. They are not affected by the handedness of world coordinate system because view matrix is constructed by listing all three axes in the world system and inverse it (with some extra steps to deal with origin offset). It does not concern handedness.
-
D3D12 unnamed command queue being released while still in use by the GPU.
-
D3D9 specify back buffer counts while D3D11 specify buffer counts.
-
Early Z will be disabled if you have discard in the pixel shader or output depth from pixel shader (unless using conservative output depth).
-
Character literals are treated as int in C whereas char in C++.
-
Sizeof operator will generate 0 for an empty structure in C whereas 1 for an empty structure in C++.
-
C++ only allows static const integral members to be initialized inline before C++ 11.
-
Const function can only return const reference. Const function can return non-const pointer, as long as it is not the address of a member varible (i.e. it is ok to return a copy of a pointer member variable).
-
Calling a virtual function from a constructor or destructor dispatches the function as if the object's dynamic type were that currently being constructed or destroyed. It is technically ok if the current hierarchy has the implementation but it is not a good practice.