可変レート シェーディングは、NVIDIA Turing GPU で導入されたハードウェア機能であり、GL_NV_shading_rate_image 拡張機能を介して公開されます。
可変レート シェーディングを使用すると、ハードウェアはラスター化のレートとは異なる周波数でプリミティブをシェーディングできます。ユーザーは、シェーディングなし、通常解像度、半分の解像度、1/4 の解像度など、さまざまなレートの中から選択できます。レンダリングでマルチ サンプリングを使用する場合、シェーディング レートを上げて、同じプリミティブ内の複数のサンプルをシェーディングできるようにすることができます。これにより、シェーダで生成されるエイリアシングを軽減できます。シェーディング レートは、各ブロック内の一定のレートでピクセルのブロックに対して定義されます。
このサンプルでは、ユーザーが事前定義されたシェーディング レートを選択できます。 「visualizeShadingRate」にチェックを入れると、ピクセルごとのシェーディング率を色分けした画像が表示されます。
頂点シェーダーの三角形ごとにシェーディング レートを変更することができます。サンプルでは、すべての緑色のオブジェクトがフル シェーディング レートで選択されています。これはメニューから無効にすることができます。
シェーディング レートの低下はわずかである可能性があるため、サンプルでは低解像度でのレンダリングと、「フレームバッファ スケーリング」設定による「ズームイン」が可能です。
理想的には、このリポジトリと他の興味深い nvpro-samples リポジトリのクローンを共通のサブディレクトリに作成します。 nvpro_core は常に必要になります。 nvpro_core は、サンプルのサブディレクトリとして、または 1 つ上のディレクトリとして検索されます。
複数のサンプルに興味がある場合は、build_all CMake をエントリ ポイントとして使用できます。また、ソリューションの作成時に個々のサンプルを有効/無効にするオプションも提供されます。