Graphics Reference
In-Depth Information
Texture2D<float4> Texture0 : register(t0);
Texture2D<uint> Texture1 : register(t1);
Texture2D<float4> Texture2 : register(t2);
Texture2D<float> TextureDepth : register(t3);
// Render normals
float4 PS_GBufferNormal(PixelIn pixel) : SV_Target
{
GBufferAttributes attrs;
ExtractGBufferAttributes(pixel,
Texture0, Texture1,
Texture2, TextureDepth,
attrs);
return float4(attrs.Normal, 1);
}
5.
Putting it all together within our D3DApp class in C# would look something like the
following code snippet:
PixelShader gBufferNormalPS = ...;
ScreenAlignedQuad saQuad = new ScreenAlignedQuad();
saQuad.Initialize(this);
GBuffer gbuffer = ...;
gbuffer.Initialize(this);
// Assign G-Buffer resources to saQuad including depth
saQuad.ShaderResources = gbuffer.SRVs.ToArray()
.Concat(new[] { gbuffer.DSSRV }).ToArray();
...
// Rendering loop
... Fill the G-Buffer
gbuffer.Unbind(context);
// Restore previous render targets
context.OutputMerger.SetRenderTargets(this.DepthStencilView,
this.RenderTargetView);
// Update the PerObject constant buffer
var perObject = new ConstantBuffers.PerObject();
...
perObject.View = viewMatrix;
perObject.InverseView = Matrix.Invert(viewMatrix);
perObject.Projection = projectionMatrix;
perObject.InverseProjection = Matrix.Invert(
projectionMatrix);
 
Search WWH ::




Custom Search