# dx12-game-programming
**Repository Path**: ezark/dx12-game-programming
## Basic Information
- **Project Name**: dx12-game-programming
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-06-02
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# What is this sorcery?
A collection of *DirectX 12 C# samples* from Frank D. Luna's book [Introduction to 3D Game Programming with Direct3D 12.0](http://d3dcoder.net/d3d12.htm). All the samples have been ported to .NET using [SharpDX](http://sharpdx.org/).
# Building
The samples will compile with Visual Studio 2015+ and run on Windows 10 with DirectX 12 capable graphics hardware.
# Samples
The number prefix for sample name indicates its corresponding chapter from the book.
Note that there might be issues: some which are inherited from the original C++ samples and some which have been introduced during the porting process. All known issues are listed in the [issues section](https://github.com/discosultan/dx12-game-programming/issues).
## [04-InitDirect3D](Samples/04-InitDirect3D)
Sets up a window using WinForms. Initializes Direct3D 12 and builds a base app with game loop upon which next samples are built.
## [06-Box](Samples/06-Box)
Manually defines vertices to render a colored box. Scene can be rotated and zoomed using mouse buttons.
## [07-Shapes](Samples/07-Shapes)
Generates geometric primitives. Renders multiple objects using a single vertex and index buffer.
## [07-LandAndWaves](Samples/07-LandAndWaves)
Constructs a heightmap based terrain and water geometry using a dynamic vertex buffer.
## [08-LitWaves](Samples/08-LitWaves)
Adds ambient, diffuse and specular lighting to the land and waves scene.
## [08-LitColumns](Samples/08-LitColumns)
Introduces parsing and loading a skull mesh from a custom model format. Applies lighting to the shapes scene.
## [09-Crate](Samples/09-Crate)
Textures a box with uv-coordinates added to its vertices.
## [09-TexWaves](Samples/09-TexWaves)
Animates a water texture in the land and waves scene.
## [09-TexColumns](Samples/09-TexColumns)
Textures objects in the shapes scene.
## [10-Blend](Samples/10-Blend)
Renders the land and waves scene with transparent water and a wire fence textures. Introduces the blending formula and creates a fog effect.
## [11-Stencil](Samples/11-Stencil)
Constructs a mirror using the stencil buffer and projects a shadow for the skull mesh.
## [12-TreeBillboards](Samples/12-TreeBillboards)
Renders trees as billboards. Introduces texture arrays and alpha to coverage in relation to MSAA.
## [13-VecAdd](Samples/13-VecAdd)
Sums a bunch of vectors on GPU instead of CPU for high parallelism using a compute shader. Outputs a *results.txt* file instead of rendering to screen.
## [13-WavesCS](Samples/13-WavesCS)
Uses a compute shader to update the land and waves scene waves simulation on GPU instead of CPU.
## [13-Blur](Samples/13-Blur)
Applies a Gaussian blur post-processing effect using a compute shader to the land and waves scene.
## [13-SobelFilter](Samples/13-SobelFilter)
Applies a Sobel filter post-processing effect using a compute shader to the land and waves scene to render outlines for geometry.
## [14-BasicTessellation](Samples/14-BasicTessellation)
Tessellates a quad using 4 control points.
## [14-BezierPatch](Samples/14-BezierPatch)
Tessellates a quad using 16 control points cubic Bézier surface.
## [15-CameraAndDynamicIndexing](Samples/15-CameraAndDynamicIndexing)
Creates a controllable first person camera. Introduces dynamic indexing of texture arrays. Camera is moved using WASD keys and rotated using a mouse.
## [16-InstancingAndCulling](Samples/16-InstancingAndCulling)
Renders multiple copies of the skull mesh using a hardware instanced draw call. Culls skulls outside of camera frustum.
## [17-Picking](Samples/17-Picking)
Enables picking individual triangles of a car mesh. Right mouse button picks a triangle which is highlighted using a yellow color.
## [18-CubeMap](Samples/18-CubeMap)
Renders a sky texture cube. Uses the cube to render reflections on scene objects.
## [18-DynamicCube](Samples/18-DynamicCube)
Renders scene objects into a texture cube every frame. Uses the rendered cube for reflections.
## [19-NormalMap](Samples/19-NormalMap)
Makes use of normal maps in addition to diffuse maps to generate more realistic lighting of surfaces.
## [20-Shadows](Samples/20-Shadows)
Projects shadows into a shadow map which is blended with the diffuse target.
## [21-Ssao](Samples/21-Ssao)
Computes real-time screen space ambient occlusion and applies it as a post-processing effect.
## [22-Quaternions](Samples/22-Quaternions)
Animates skull rotation using quaternions.
## [23-SkinnedMesh](Samples/23-SkinnedMesh)
Plays a walking animation for an animated skinned soldier mesh loaded from *.m3d* format.