Introduction

Checkerboard Rendering (CBR) is a technique that produces full-resolution pixels with a significant reduction in shading and minimal impact on visual quality. CBR is fully compatible with modern post-processing approaches to anti-aliasing and it can be implemented in both forward and deferred rendering pipelines.

Dynamic Resolution Rendering (DRR) is an established technique that dynamically adjusts the resolution to which you render the 3D scene and then scales this to the output back buffer.

The accompanying sample code demonstrates both CBR and DRR and provides a base implementation in a forward rendering pipeline; additionally, the accompanying white paper describes an implementation in a deferred rendering pipeline. While our focus was on integrated graphics processing units (GPUs), our implementations for both forward and deferred rendering have been tested to run on both AMD and NVIDIA discrete GPUs.

Get Started

The sample is designed to "build and run" and is an augmentation of the DirectX 12 MiniEngine from the Microsoft DirectX-Graphics-Samples. Simply clone (or download) the repository, build the MiniEngine\ModelViewer\ModelViewer_VS17.sln solution and run. Both CBR and DRR are enabled by default, they (along with multiple other post processes) can be enabled or disabled by pressing the 'backspace' key to bring up the toggle menu. Download the code from GitHub* and read Checkerboard Rendering for Real-Time Upscaling on Intel Integrated Graphics, v. 12 to learn more.

CBR Options

The CBR options in the toggle menu are as follows:

Enable: Enable or disable CBR.

Check Shading Occlusion: During movement which spans multiple pixels per frame: If enabled; Attempt to retrieve the correct shading information from frame N-1's pixels. If disabled; Always assume the shading is occluded and extract the shading color from frame N.

Show Derived Motion: For each pixel which had motion derived from the depth buffer, render it as red in the color buffer.

Show Missing Pixels: For each pixel which our algorithm determined the shading information was missing, render it as red in the color buffer.

Show Occluded Pixels: For each pixel which our algorithm determined the shading information was occluded by movement, render it as hot-pink in the color buffer.

Show Pixel Motion: For each pixel which our algorithm determined motion vectors must be used to fetch the shading information from frame N-1, render it as green in the color buffer.

Depth Tolerance: The depth tolerance (linear from near clip to far clip) used by our algorithm to determine if the shading information is occluded.

DRR Options

The DRR options in the toggle menu are as follows:

Enable: Enable or disable DRR.

Desired Frame Rate: The target frame rate for the DRR algorithm.

Force Scale: Force DRR to run at the scale specified by Min Scale.

Min Scale: The low-end limit to DRR's resolution scaling.

Resolution Increments: The increments DRR will use when scaling resolutions.

_Advanced/Frame Rate Delta Resolution: The amount of 'delta' (or headroom) to allow in the frame rate before switching resolutions