Shaders
We need two more things before we can actually render a 3D object. The first, and most important one, is the set of shaders that we will use to define the look of the object and tell the GPU what to do.
A shader is a small program written in a custom language (in this case, the High Level Shader Language—HLSL) that describes how the different stages of the pipeline will operate to render to the screen. There are a few different types of shaders; however, we only really need to cover the vertex and pixel shaders before any 3D rendering can be done.
Vertex shaders
The first shader that we will look at is the vertex shader. This shader is responsible for taking the vertices from our buffer and making sure they are in the right place relative to the virtual camera in the world.
A common vertex shader looks like the following:
cbuffer WVP : register(b0) { matrix World; matrix View; matrix Projection; }; float3 main(float3 inputPos : POSITION) : POSITION { float4 pos = float4(inputPos...