Screen-aligned quads, also known as fullscreen quads, are a staple of deferred rendering techniques. They have traditionally been used to perform a range of screen-space operations, such as applying ambient lighting or implementing screen space ambient occlusion (SSAO), and provide a convenient method of addressing information within the G-Buffer.
Although image filtering and computation can be performed within compute shaders, the final result still needs to be presented to the screen, and this is usually through a screen-aligned quad. This recipe can be used where screen-space operations are required or visualization of textures is necessary.
We will begin by creating the vertex shader and its input and output structures. We'll then move onto creating the C# renderer class ScreenAlignedQuadRenderer
:
Begin with a new HLSL shader file,
SAQuad.hlsl
, includingCommon.hlsl
for thePerObject
constant buffer matrices and adding the following...